From c346770ab16153fe85197fc824a6e23ac991ff7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Gro=C3=9Fe?= Date: Mon, 23 Dec 2019 14:28:54 +0100 Subject: [PATCH 01/51] introduce default_country application configuration key --- config/app.php | 13 +++++++ .../Http/Controllers/AddressController.php | 36 ++++++++++--------- .../account/address/country-state.blade.php | 6 ++-- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/config/app.php b/config/app.php index 8e675f952..4213f753c 100755 --- a/config/app.php +++ b/config/app.php @@ -93,6 +93,19 @@ return [ 'fallback_locale' => 'en', + /* + |-------------------------------------------------------------------------- + | Default Country + |-------------------------------------------------------------------------- + | + | Here you may specify the default country by country code. + | Ensure it is uppercase and reflects the 'code' column of the + | countries table. + | + */ + + 'default_country' => null, + /* |-------------------------------------------------------------------------- | Base Currency Code diff --git a/packages/Webkul/Customer/src/Http/Controllers/AddressController.php b/packages/Webkul/Customer/src/Http/Controllers/AddressController.php index b7fefec45..c39229e78 100755 --- a/packages/Webkul/Customer/src/Http/Controllers/AddressController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/AddressController.php @@ -26,7 +26,8 @@ class AddressController extends Controller /** * CustomerAddressRepository object * - * @param \Webkul\Customer\Repositories\CustomerAddressRepository $customerAddressRepository + * @param \Webkul\Customer\Repositories\CustomerAddressRepository $customerAddressRepository + * * @var Object */ protected $customerAddressRepository; @@ -59,7 +60,9 @@ class AddressController extends Controller */ public function create() { - return view($this->_config['view']); + return view($this->_config['view'], [ + 'defaultCountry' => config('app.default_country'), + ]); } /** @@ -75,11 +78,11 @@ class AddressController extends Controller $this->validate(request(), [ 'address1' => 'string|required', - 'country' => 'string|required', - 'state' => 'string|required', - 'city' => 'string|required', + 'country' => 'string|required', + 'state' => 'string|required', + 'city' => 'string|required', 'postcode' => 'required', - 'phone' => 'required' + 'phone' => 'required', ]); $cust_id['customer_id'] = $this->customer->id; @@ -108,8 +111,8 @@ class AddressController extends Controller public function edit($id) { $address = $this->customerAddressRepository->findOneWhere([ - 'id' => $id, - 'customer_id' => auth()->guard('customer')->user()->id + 'id' => $id, + 'customer_id' => auth()->guard('customer')->user()->id, ]); if (! $address) @@ -130,18 +133,18 @@ class AddressController extends Controller $this->validate(request(), [ 'address1' => 'string|required', - 'country' => 'string|required', - 'state' => 'string|required', - 'city' => 'string|required', + 'country' => 'string|required', + 'state' => 'string|required', + 'city' => 'string|required', 'postcode' => 'required', - 'phone' => 'required' + 'phone' => 'required', ]); $data = collect(request()->input())->except('_token')->toArray(); $addresses = $this->customer->addresses; - foreach($addresses as $address) { + foreach ($addresses as $address) { if ($id == $address->id) { session()->flash('success', trans('shop::app.customer.account.address.edit.success')); @@ -157,7 +160,8 @@ class AddressController extends Controller } /** - * To change the default address or make the default address, by default when first address is created will be the default address + * To change the default address or make the default address, by default when first address is + * created will be the default address * * @return Response */ @@ -185,8 +189,8 @@ class AddressController extends Controller public function destroy($id) { $address = $this->customerAddressRepository->findOneWhere([ - 'id' => $id, - 'customer_id' => auth()->guard('customer')->user()->id + 'id' => $id, + 'customer_id' => auth()->guard('customer')->user()->id, ]); if (! $address) diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/address/country-state.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/address/country-state.blade.php index c398928f6..ba1bfb6c1 100755 --- a/packages/Webkul/Shop/src/Resources/views/customers/account/address/country-state.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/address/country-state.blade.php @@ -12,7 +12,7 @@ @@ -53,9 +53,9 @@ data() { return { - country: "{{ $countryCode }}", + country: "{{ $countryCode ?? $defaultCountry }}", - state: "{{ $stateCode }}", + state: "{{ $stateCode }}", countryStates: @json(core()->groupedStatesByCountries()) } From 871836c9785a68a9e57c4e56ba3b660b03c8d397 Mon Sep 17 00:00:00 2001 From: peternuernberger Date: Mon, 23 Dec 2019 17:11:56 +0100 Subject: [PATCH 02/51] added automagically genereted file --- config/laravelwebconsole.php | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 config/laravelwebconsole.php diff --git a/config/laravelwebconsole.php b/config/laravelwebconsole.php new file mode 100644 index 000000000..1e3be3bce --- /dev/null +++ b/config/laravelwebconsole.php @@ -0,0 +1,51 @@ + false, + + // Single-user credentials (REQUIRED) + 'user' => [ + 'name' => env('CONSOLE_USER_NAME', 'root'), + 'password' => env('CONSOLE_USER_PASSWORD', 'root'), + ], + + // Multi-user credentials (OPTIONAL) + // Example: 'user' => 'password', 'user1' => 'password1' + 'accounts' => [ + // 'user' => 'password', + ], + + // Hash incoming password + // By default it's sha256 + 'password_hash_algorithm' => '', + + // Home directory (multi-user mode supported) + // Example: 'home_dir' => '/tmp'; + // 'home_dir' => array('user1' => '/home/user1', 'user2' => '/home/user2'); + 'home_dir' => '', +]; From 405c979375f59773f2baf655188ff61195bb382f Mon Sep 17 00:00:00 2001 From: peternuernberger Date: Mon, 23 Dec 2019 17:13:12 +0100 Subject: [PATCH 03/51] added use statement --- .../Webkul/Category/src/Repositories/CategoryRepository.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/Webkul/Category/src/Repositories/CategoryRepository.php b/packages/Webkul/Category/src/Repositories/CategoryRepository.php index 004f5b15a..a351fe683 100755 --- a/packages/Webkul/Category/src/Repositories/CategoryRepository.php +++ b/packages/Webkul/Category/src/Repositories/CategoryRepository.php @@ -9,6 +9,7 @@ use Webkul\Core\Eloquent\Repository; use Webkul\Category\Models\Category; use Webkul\Category\Models\CategoryTranslation; use Illuminate\Database\Eloquent\ModelNotFoundException; +use Illuminate\Support\Facades\DB; /** * Category Reposotory @@ -126,7 +127,7 @@ class CategoryRepository extends Repository $exists = CategoryTranslation::where('category_id', '<>', $id) ->where('slug', $slug) ->limit(1) - ->select(\DB::raw(1)) + ->select(DB::raw(1)) ->exists(); return $exists ? false : true; From a2f2c650a4bf3865606e1c064cf80722cf93d380 Mon Sep 17 00:00:00 2001 From: peternuernberger Date: Mon, 23 Dec 2019 17:13:48 +0100 Subject: [PATCH 04/51] added method that returns path categories --- .../Webkul/Category/src/Models/Category.php | 46 ++++++++++++++++++- tests/unit/Category/CategoryCest.php | 13 ++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/packages/Webkul/Category/src/Models/Category.php b/packages/Webkul/Category/src/Models/Category.php index b40ff1a77..6d1e9239b 100755 --- a/packages/Webkul/Category/src/Models/Category.php +++ b/packages/Webkul/Category/src/Models/Category.php @@ -5,6 +5,7 @@ namespace Webkul\Category\Models; use Webkul\Core\Eloquent\TranslatableModel; use Kalnoy\Nestedset\NodeTrait; use Illuminate\Support\Facades\Storage; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Webkul\Category\Contracts\Category as CategoryContract; use Webkul\Attribute\Models\AttributeProxy; @@ -19,7 +20,7 @@ class Category extends TranslatableModel implements CategoryContract { use NodeTrait; - public $translatedAttributes = ['name', 'description', 'slug', 'meta_title', 'meta_description', 'meta_keywords']; + public $translatedAttributes = ['name', 'description', 'slug', 'url_path', 'meta_title', 'meta_description', 'meta_keywords']; protected $fillable = ['position', 'status', 'display_mode', 'parent_id']; @@ -51,4 +52,47 @@ class Category extends TranslatableModel implements CategoryContract { return $this->belongsToMany(AttributeProxy::modelClass(), 'category_filterable_attributes')->with('options'); } + + /** + * Returns all categories within the category's path + * + * @return Category[] + */ + public function getPathCategories(): array + { + $category = $this->findInTree(); + + $categories = [$category]; + + while (isset($category->parent)) { + $category = $category->parent; + $categories[] = $category; + } + + array_pop($categories); + return array_reverse($categories); + } + + /** + * Finds and returns the category within a nested category tree + * will search in root category by default + * + * @param Category[] $categoryTree + * @return Category + */ + private function findInTree($categoryTree = null): Category + { + if (!$categoryTree) { + $rootCategoryId = core()->getCurrentChannel()->root_category_id; + $categoryTree = app('Webkul\Category\Repositories\CategoryRepository')->getVisibleCategoryTree($rootCategoryId); + } + + foreach ($categoryTree as $category) { + if ($category->id === $this->id) { + return $category; + } + return $this->findInTree($category->children); + } + throw new NotFoundHttpException('category not found in tree'); + } } \ No newline at end of file diff --git a/tests/unit/Category/CategoryCest.php b/tests/unit/Category/CategoryCest.php index c3c2779b0..abd8ad7d0 100644 --- a/tests/unit/Category/CategoryCest.php +++ b/tests/unit/Category/CategoryCest.php @@ -138,5 +138,18 @@ class CategoryCest 'locale' => $this->localeEn->code, 'url_path' => $expectedUrlPath, ]); + + // test if the url_path attribute is available in the model + $this->grandChildCategory->refresh(); + $I->assertEquals($expectedUrlPath, $this->grandChildCategory->url_path); + } + + public function testGetPathCategories(UnitTester $I) + { + $pathCategories = $this->grandChildCategory->getPathCategories(); + $I->assertCount(3, $pathCategories); + $I->assertEquals($pathCategories[0]->id, $this->category->id); + $I->assertEquals($pathCategories[1]->id, $this->childCategory->id); + $I->assertEquals($pathCategories[2]->id, $this->grandChildCategory->id); } } From 23a15be1e0e654eb1d807d90cffd4cdeba7ab293 Mon Sep 17 00:00:00 2001 From: rahul shukla Date: Tue, 24 Dec 2019 19:31:13 +0530 Subject: [PATCH 05/51] compatible with laravel 5.8 --- composer.json | 4 +- .../Http/Controllers/Shop/CartController.php | 22 +- .../Controllers/Shop/CustomerController.php | 4 +- .../Controllers/Shop/SessionController.php | 2 +- .../Controllers/ConfigurationController.php | 4 +- .../AttributeFamilyRepository.php | 12 +- .../src/Repositories/AttributeRepository.php | 12 +- .../Http/Controllers/CategoryController.php | 6 +- .../src/Repositories/CategoryRepository.php | 12 +- packages/Webkul/Checkout/src/Cart.php | 26 +- .../Http/Controllers/ChannelController.php | 12 +- .../Http/Controllers/CurrencyController.php | 16 +- .../Controllers/ExchangeRateController.php | 14 +- .../src/Http/Controllers/LocaleController.php | 12 +- .../Controllers/RegistrationController.php | 4 +- .../Http/Controllers/SessionController.php | 4 +- .../CustomerAddressRepository.php | 10 +- .../Controllers/InventorySourceController.php | 12 +- .../Http/Controllers/ProductController.php | 2 +- .../src/Http/Controllers/ReviewController.php | 20 +- .../src/Repositories/ProductRepository.php | 12 +- .../Repositories/InvoiceItemRepository.php | 4 +- .../src/Repositories/InvoiceRepository.php | 8 +- .../src/Repositories/OrderRepository.php | 12 +- .../src/Repositories/RefundRepository.php | 6 +- .../Repositories/ShipmentItemRepository.php | 2 +- .../src/Repositories/ShipmentRepository.php | 12 +- .../views/products/reviews/create.blade.php | 2 +- .../Controllers/TaxCategoryController.php | 16 +- .../Http/Controllers/TaxRateController.php | 20 +- .../Theme/src/ViewRenderEventManager.php | 6 +- packages/Webkul/Ui/src/DataGrid/DataGrid.php | 2 +- .../src/Http/Controllers/RoleController.php | 18 +- .../src/Http/Controllers/UserController.php | 24 +- resources/views/errors/401.blade.php | 5 + resources/views/errors/403.blade.php | 5 + resources/views/errors/404.blade.php | 5 + resources/views/errors/419.blade.php | 5 + resources/views/errors/429.blade.php | 5 + resources/views/errors/500.blade.php | 5 + resources/views/errors/503.blade.php | 5 + .../views/errors/illustrated-layout.blade.php | 486 ++++++++++++++++++ resources/views/errors/layout.blade.php | 57 ++ resources/views/errors/minimal.blade.php | 62 +++ .../views/vendor/mail/text/button.blade.php | 1 + .../views/vendor/mail/text/footer.blade.php | 1 + .../views/vendor/mail/text/header.blade.php | 1 + .../views/vendor/mail/text/layout.blade.php | 9 + .../views/vendor/mail/text/message.blade.php | 27 + .../views/vendor/mail/text/panel.blade.php | 1 + .../vendor/mail/text/promotion.blade.php | 1 + .../mail/text/promotion/button.blade.php | 1 + .../views/vendor/mail/text/subcopy.blade.php | 1 + .../views/vendor/mail/text/table.blade.php | 1 + 54 files changed, 861 insertions(+), 177 deletions(-) create mode 100644 resources/views/errors/401.blade.php create mode 100644 resources/views/errors/403.blade.php create mode 100644 resources/views/errors/404.blade.php create mode 100644 resources/views/errors/419.blade.php create mode 100644 resources/views/errors/429.blade.php create mode 100644 resources/views/errors/500.blade.php create mode 100644 resources/views/errors/503.blade.php create mode 100644 resources/views/errors/illustrated-layout.blade.php create mode 100644 resources/views/errors/layout.blade.php create mode 100644 resources/views/errors/minimal.blade.php create mode 100644 resources/views/vendor/mail/text/button.blade.php create mode 100644 resources/views/vendor/mail/text/footer.blade.php create mode 100644 resources/views/vendor/mail/text/header.blade.php create mode 100644 resources/views/vendor/mail/text/layout.blade.php create mode 100644 resources/views/vendor/mail/text/message.blade.php create mode 100644 resources/views/vendor/mail/text/panel.blade.php create mode 100644 resources/views/vendor/mail/text/promotion.blade.php create mode 100644 resources/views/vendor/mail/text/promotion/button.blade.php create mode 100644 resources/views/vendor/mail/text/subcopy.blade.php create mode 100644 resources/views/vendor/mail/text/table.blade.php diff --git a/composer.json b/composer.json index 04f267c58..bb079a481 100755 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "ext-pdo_mysql": "*", "ext-tokenizer": "*", "astrotomic/laravel-translatable": "^11.0.0", - "barryvdh/laravel-dompdf": "0.8.3", + "barryvdh/laravel-dompdf": "0.8.4", "doctrine/dbal": "2.9.2", "fideloper/proxy": "^4.0", "flynsarmy/db-blade-compiler": "*", @@ -27,7 +27,7 @@ "intervention/imagecache": "^2.3", "kalnoy/nestedset": "^4.3", "konekt/concord": "^1.2", - "laravel/framework": "5.6.*", + "laravel/framework": "5.8.*", "laravel/tinker": "^1.0", "maatwebsite/excel": "3.1.11", "nwidart/laravel-modules": "^3.2", diff --git a/packages/Webkul/API/Http/Controllers/Shop/CartController.php b/packages/Webkul/API/Http/Controllers/Shop/CartController.php index 398c24a43..8e76ef534 100644 --- a/packages/Webkul/API/Http/Controllers/Shop/CartController.php +++ b/packages/Webkul/API/Http/Controllers/Shop/CartController.php @@ -98,7 +98,7 @@ class CartController extends Controller */ public function store($id) { - Event::fire('checkout.cart.item.add.before', $id); + Event::dispatch('checkout.cart.item.add.before', $id); $result = Cart::addProduct($id, request()->except('_token')); @@ -112,8 +112,8 @@ class CartController extends Controller if ($customer = auth($this->guard)->user()) $this->wishlistRepository->deleteWhere(['product_id' => $id, 'customer_id' => $customer->id]); - - Event::fire('checkout.cart.item.add.after', $result); + + Event::dispatch('checkout.cart.item.add.after', $result); Cart::collectTotals(); @@ -143,11 +143,11 @@ class CartController extends Controller foreach (request()->get('qty') as $itemId => $qty) { $item = $this->cartItemRepository->findOneByField('id', $itemId); - Event::fire('checkout.cart.item.update.before', $itemId); + Event::dispatch('checkout.cart.item.update.before', $itemId); Cart::updateItems(request()->all()); - Event::fire('checkout.cart.item.update.after', $item); + Event::dispatch('checkout.cart.item.update.after', $item); } Cart::collectTotals(); @@ -167,11 +167,11 @@ class CartController extends Controller */ public function destroy() { - Event::fire('checkout.cart.delete.before'); + Event::dispatch('checkout.cart.delete.before'); Cart::deActivateCart(); - Event::fire('checkout.cart.delete.after'); + Event::dispatch('checkout.cart.delete.after'); $cart = Cart::getCart(); @@ -189,11 +189,11 @@ class CartController extends Controller */ public function destroyItem($id) { - Event::fire('checkout.cart.item.delete.before', $id); + Event::dispatch('checkout.cart.item.delete.before', $id); Cart::removeItem($id); - Event::fire('checkout.cart.item.delete.after', $id); + Event::dispatch('checkout.cart.item.delete.after', $id); Cart::collectTotals(); @@ -213,11 +213,11 @@ class CartController extends Controller */ public function moveToWishlist($id) { - Event::fire('checkout.cart.item.move-to-wishlist.before', $id); + Event::dispatch('checkout.cart.item.move-to-wishlist.before', $id); Cart::moveToWishlist($id); - Event::fire('checkout.cart.item.move-to-wishlist.after', $id); + Event::dispatch('checkout.cart.item.move-to-wishlist.after', $id); Cart::collectTotals(); diff --git a/packages/Webkul/API/Http/Controllers/Shop/CustomerController.php b/packages/Webkul/API/Http/Controllers/Shop/CustomerController.php index d5296b841..74cd3a83b 100644 --- a/packages/Webkul/API/Http/Controllers/Shop/CustomerController.php +++ b/packages/Webkul/API/Http/Controllers/Shop/CustomerController.php @@ -60,11 +60,11 @@ class CustomerController extends Controller 'customer_group_id' => 1 ]); - Event::fire('customer.registration.before'); + Event::dispatch('customer.registration.before'); $customer = $this->customerRepository->create($data); - Event::fire('customer.registration.after', $customer); + Event::dispatch('customer.registration.after', $customer); return response()->json([ 'message' => 'Your account has been created successfully.' diff --git a/packages/Webkul/API/Http/Controllers/Shop/SessionController.php b/packages/Webkul/API/Http/Controllers/Shop/SessionController.php index 7451fe889..714d67efe 100644 --- a/packages/Webkul/API/Http/Controllers/Shop/SessionController.php +++ b/packages/Webkul/API/Http/Controllers/Shop/SessionController.php @@ -66,7 +66,7 @@ class SessionController extends Controller ], 401); } - Event::fire('customer.after.login', request('email')); + Event::dispatch('customer.after.login', request('email')); $customer = auth($this->guard)->user(); diff --git a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php index 30ab97908..709118c0f 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php @@ -118,7 +118,7 @@ class ConfigurationController extends Controller */ public function store() { - Event::fire('core.configuration.save.before'); + Event::dispatch('core.configuration.save.before'); $this->validate(request(), [ 'general.design.admin_logo.logo_image' => 'mimes:jpeg,bmp,png,jpg' @@ -126,7 +126,7 @@ class ConfigurationController extends Controller $this->coreConfigRepository->create(request()->all()); - Event::fire('core.configuration.save.after'); + Event::dispatch('core.configuration.save.after'); session()->flash('success', trans('admin::app.configuration.save-message')); diff --git a/packages/Webkul/Attribute/src/Repositories/AttributeFamilyRepository.php b/packages/Webkul/Attribute/src/Repositories/AttributeFamilyRepository.php index 55263fea8..813b9d5c1 100755 --- a/packages/Webkul/Attribute/src/Repositories/AttributeFamilyRepository.php +++ b/packages/Webkul/Attribute/src/Repositories/AttributeFamilyRepository.php @@ -66,7 +66,7 @@ class AttributeFamilyRepository extends Repository */ public function create(array $data) { - Event::fire('catalog.attribute_family.create.before'); + Event::dispatch('catalog.attribute_family.create.before'); $attributeGroups = isset($data['attribute_groups']) ? $data['attribute_groups'] : []; unset($data['attribute_groups']); @@ -88,7 +88,7 @@ class AttributeFamilyRepository extends Repository } } - Event::fire('catalog.attribute_family.create.after', $family); + Event::dispatch('catalog.attribute_family.create.after', $family); return $family; } @@ -103,7 +103,7 @@ class AttributeFamilyRepository extends Repository { $family = $this->find($id); - Event::fire('catalog.attribute_family.update.before', $id); + Event::dispatch('catalog.attribute_family.update.before', $id); $family->update($data); @@ -152,7 +152,7 @@ class AttributeFamilyRepository extends Repository $this->attributeGroupRepository->delete($attributeGroupId); } - Event::fire('catalog.attribute_family.update.after', $family); + Event::dispatch('catalog.attribute_family.update.after', $family); return $family; } @@ -181,10 +181,10 @@ class AttributeFamilyRepository extends Repository */ public function delete($id) { - Event::fire('catalog.attribute_family.delete.before', $id); + Event::dispatch('catalog.attribute_family.delete.before', $id); parent::delete($id); - Event::fire('catalog.attribute_family.delete.after', $id); + Event::dispatch('catalog.attribute_family.delete.after', $id); } } \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Repositories/AttributeRepository.php b/packages/Webkul/Attribute/src/Repositories/AttributeRepository.php index 816a30e5b..cf25cbc6d 100755 --- a/packages/Webkul/Attribute/src/Repositories/AttributeRepository.php +++ b/packages/Webkul/Attribute/src/Repositories/AttributeRepository.php @@ -54,7 +54,7 @@ class AttributeRepository extends Repository */ public function create(array $data) { - Event::fire('catalog.attribute.create.before'); + Event::dispatch('catalog.attribute.create.before'); $data = $this->validateUserInput($data); @@ -70,7 +70,7 @@ class AttributeRepository extends Repository } } - Event::fire('catalog.attribute.create.after', $attribute); + Event::dispatch('catalog.attribute.create.after', $attribute); return $attribute; } @@ -87,7 +87,7 @@ class AttributeRepository extends Repository $attribute = $this->find($id); - Event::fire('catalog.attribute.update.before', $id); + Event::dispatch('catalog.attribute.update.before', $id); $attribute->update($data); @@ -115,7 +115,7 @@ class AttributeRepository extends Repository $this->attributeOptionRepository->delete($optionId); } - Event::fire('catalog.attribute.update.after', $attribute); + Event::dispatch('catalog.attribute.update.after', $attribute); return $attribute; } @@ -126,11 +126,11 @@ class AttributeRepository extends Repository */ public function delete($id) { - Event::fire('catalog.attribute.delete.before', $id); + Event::dispatch('catalog.attribute.delete.before', $id); parent::delete($id); - Event::fire('catalog.attribute.delete.after', $id); + Event::dispatch('catalog.attribute.delete.after', $id); } /** diff --git a/packages/Webkul/Category/src/Http/Controllers/CategoryController.php b/packages/Webkul/Category/src/Http/Controllers/CategoryController.php index 418788379..5a0c10afd 100755 --- a/packages/Webkul/Category/src/Http/Controllers/CategoryController.php +++ b/packages/Webkul/Category/src/Http/Controllers/CategoryController.php @@ -174,7 +174,7 @@ class CategoryController extends Controller $this->categoryRepository->delete($id); - Event::fire('catalog.category.delete.after', $id); + Event::dispatch('catalog.category.delete.after', $id); session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Category'])); @@ -200,11 +200,11 @@ class CategoryController extends Controller foreach ($indexes as $key => $value) { try { - Event::fire('catalog.category.delete.before', $value); + Event::dispatch('catalog.category.delete.before', $value); $this->categoryRepository->delete($value); - Event::fire('catalog.category.delete.after', $value); + Event::dispatch('catalog.category.delete.after', $value); } catch(\Exception $e) { $suppressFlash = true; diff --git a/packages/Webkul/Category/src/Repositories/CategoryRepository.php b/packages/Webkul/Category/src/Repositories/CategoryRepository.php index 004f5b15a..aace7b0ac 100755 --- a/packages/Webkul/Category/src/Repositories/CategoryRepository.php +++ b/packages/Webkul/Category/src/Repositories/CategoryRepository.php @@ -44,7 +44,7 @@ class CategoryRepository extends Repository */ public function create(array $data) { - Event::fire('catalog.category.create.before'); + Event::dispatch('catalog.category.create.before'); if (isset($data['locale']) && $data['locale'] == 'all') { $model = app()->make($this->model()); @@ -67,7 +67,7 @@ class CategoryRepository extends Repository $category->filterableAttributes()->sync($data['attributes']); } - Event::fire('catalog.category.create.after', $category); + Event::dispatch('catalog.category.create.after', $category); return $category; } @@ -171,7 +171,7 @@ class CategoryRepository extends Repository { $category = $this->find($id); - Event::fire('catalog.category.update.before', $id); + Event::dispatch('catalog.category.update.before', $id); $category->update($data); @@ -181,7 +181,7 @@ class CategoryRepository extends Repository $category->filterableAttributes()->sync($data['attributes']); } - Event::fire('catalog.category.update.after', $id); + Event::dispatch('catalog.category.update.after', $id); return $category; } @@ -192,11 +192,11 @@ class CategoryRepository extends Repository */ public function delete($id) { - Event::fire('catalog.category.delete.before', $id); + Event::dispatch('catalog.category.delete.before', $id); parent::delete($id); - Event::fire('catalog.category.delete.after', $id); + Event::dispatch('catalog.category.delete.after', $id); } /** diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index c640a30d0..6e9cc6885 100755 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -131,7 +131,7 @@ class Cart { */ public function addProduct($productId, $data) { - Event::fire('checkout.cart.add.before', $productId); + Event::dispatch('checkout.cart.add.before', $productId); $cart = $this->getCart(); @@ -170,7 +170,7 @@ class Cart { } } - Event::fire('checkout.cart.add.after', $cart); + Event::dispatch('checkout.cart.add.after', $cart); $this->collectTotals(); @@ -229,7 +229,7 @@ class Cart { { foreach ($data['qty'] as $itemId => $quantity) { $item = $this->cartItemRepository->findOneByField('id', $itemId); - + if (! $item) continue; @@ -244,7 +244,7 @@ class Cart { if (! $this->isItemHaveQuantity($item)) throw new \Exception(trans('shop::app.checkout.cart.quantity.inventory_warning')); - Event::fire('checkout.cart.update.before', $item); + Event::dispatch('checkout.cart.update.before', $item); $this->cartItemRepository->update([ 'quantity' => $quantity, @@ -254,7 +254,7 @@ class Cart { 'base_total_weight' => $item->weight * $quantity ], $itemId); - Event::fire('checkout.cart.update.after', $item); + Event::dispatch('checkout.cart.update.after', $item); } $this->collectTotals(); @@ -292,7 +292,7 @@ class Cart { */ public function removeItem($itemId) { - Event::fire('checkout.cart.delete.before', $itemId); + Event::dispatch('checkout.cart.delete.before', $itemId); if (! $cart = $this->getCart()) return false; @@ -308,7 +308,7 @@ class Cart { } } - Event::fire('checkout.cart.delete.after', $itemId); + Event::dispatch('checkout.cart.delete.after', $itemId); $this->collectTotals(); @@ -345,7 +345,7 @@ class Cart { foreach ($guestCart->items as $key => $guestCartItem) { $found = false; - + foreach ($cart->items as $cartItem) { if (! $cartItem->product->getTypeInstance()->compareOptions($cartItem->additional, $guestCartItem->additional)) continue; @@ -492,7 +492,7 @@ class Cart { if ($cart->haveStockableItems()) { $shippingAddress = $data['shipping']; $shippingAddress['cart_id'] = $cart->id; - + if (isset($data['shipping']['address_id']) && $data['shipping']['address_id']) { $address = $this->customerAddressRepository->findOneWhere(['id'=> $data['shipping']['address_id']])->toArray(); @@ -666,7 +666,7 @@ class Cart { //rare case of accident-->used when there are no items. if (count($cart->items) == 0) { $this->cartRepository->delete($cart->id); - + return false; } else { foreach ($cart->items as $item) { @@ -704,7 +704,7 @@ class Cart { if (! $taxCategory) continue; - + if ($item->product->getTypeInstance()->isStockable()) { $address = $cart->shipping_address; } else { @@ -902,7 +902,7 @@ class Cart { /** * Move a wishlist item to cart - * + * * @param WishlistItem $wishlistItem * @return boolean */ @@ -910,7 +910,7 @@ class Cart { { if (! $wishlistItem->product->getTypeInstance()->canBeMovedFromWishlistToCart($wishlistItem)) return false; - + if (! $wishlistItem->additional) $wishlistItem->additional = ['product_id' => $wishlistItem->product_id]; diff --git a/packages/Webkul/Core/src/Http/Controllers/ChannelController.php b/packages/Webkul/Core/src/Http/Controllers/ChannelController.php index 602c80449..2c313a072 100755 --- a/packages/Webkul/Core/src/Http/Controllers/ChannelController.php +++ b/packages/Webkul/Core/src/Http/Controllers/ChannelController.php @@ -96,11 +96,11 @@ class ChannelController extends Controller unset($data['seo']); - Event::fire('core.channel.create.before'); + Event::dispatch('core.channel.create.before'); $channel = $this->channelRepository->create($data); - Event::fire('core.channel.create.after', $channel); + Event::dispatch('core.channel.create.after', $channel); session()->flash('success', trans('admin::app.settings.channels.create-success')); @@ -153,11 +153,11 @@ class ChannelController extends Controller $data['home_seo'] = json_encode($data['seo']); - Event::fire('core.channel.update.before', $id); + Event::dispatch('core.channel.update.before', $id); $channel = $this->channelRepository->update($data, $id); - Event::fire('core.channel.update.after', $channel); + Event::dispatch('core.channel.update.after', $channel); session()->flash('success', trans('admin::app.settings.channels.update-success')); @@ -178,11 +178,11 @@ class ChannelController extends Controller session()->flash('error', trans('admin::app.settings.channels.last-delete-error')); } else { try { - Event::fire('core.channel.delete.before', $id); + Event::dispatch('core.channel.delete.before', $id); $this->channelRepository->delete($id); - Event::fire('core.channel.delete.after', $id); + Event::dispatch('core.channel.delete.after', $id); session()->flash('success', trans('admin::app.settings.channels.delete-success')); diff --git a/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php b/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php index 4416eda0b..9f553068f 100755 --- a/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php +++ b/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php @@ -72,11 +72,11 @@ class CurrencyController extends Controller 'name' => 'required' ]); - Event::fire('core.channel.create.before'); + Event::dispatch('core.channel.create.before'); $currency = $this->currencyRepository->create(request()->all()); - Event::fire('core.currency.create.after', $currency); + Event::dispatch('core.currency.create.after', $currency); session()->flash('success', trans('admin::app.settings.currencies.create-success')); @@ -109,11 +109,11 @@ class CurrencyController extends Controller 'name' => 'required' ]); - Event::fire('core.currency.update.before', $id); + Event::dispatch('core.currency.update.before', $id); $currency = $this->currencyRepository->update(request()->all(), $id); - Event::fire('core.currency.update.after', $currency); + Event::dispatch('core.currency.update.after', $currency); session()->flash('success', trans('admin::app.settings.currencies.update-success')); @@ -134,11 +134,11 @@ class CurrencyController extends Controller session()->flash('warning', trans('admin::app.settings.currencies.last-delete-error')); } else { try { - Event::fire('core.currency.delete.before', $id); + Event::dispatch('core.currency.delete.before', $id); $this->currencyRepository->delete($id); - Event::fire('core.currency.delete.after', $id); + Event::dispatch('core.currency.delete.after', $id); session()->flash('success', trans('admin::app.settings.currencies.delete-success')); @@ -164,11 +164,11 @@ class CurrencyController extends Controller foreach ($indexes as $key => $value) { try { - Event::fire('core.currency.delete.before', $value); + Event::dispatch('core.currency.delete.before', $value); $this->currencyRepository->delete($value); - Event::fire('core.currency.delete.after', $value); + Event::dispatch('core.currency.delete.after', $value); } catch(\Exception $e) { $suppressFlash = true; diff --git a/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php b/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php index 022abbebe..cf05243c2 100755 --- a/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php +++ b/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php @@ -23,7 +23,7 @@ class ExchangeRateController extends Controller /** * ExchangeRateRepository instance - * + * * @var Object */ protected $exchangeRateRepository; @@ -90,11 +90,11 @@ class ExchangeRateController extends Controller 'rate' => 'required|numeric' ]); - Event::fire('core.exchange_rate.create.before'); + Event::dispatch('core.exchange_rate.create.before'); $exchangeRate = $this->exchangeRateRepository->create(request()->all()); - Event::fire('core.exchange_rate.create.after', $exchangeRate); + Event::dispatch('core.exchange_rate.create.after', $exchangeRate); session()->flash('success', trans('admin::app.settings.exchange_rates.create-success')); @@ -129,11 +129,11 @@ class ExchangeRateController extends Controller 'rate' => 'required|numeric' ]); - Event::fire('core.exchange_rate.update.before', $id); + Event::dispatch('core.exchange_rate.update.before', $id); $exchangeRate = $this->exchangeRateRepository->update(request()->all(), $id); - Event::fire('core.exchange_rate.update.after', $exchangeRate); + Event::dispatch('core.exchange_rate.update.after', $exchangeRate); session()->flash('success', trans('admin::app.settings.exchange_rates.update-success')); @@ -190,13 +190,13 @@ class ExchangeRateController extends Controller session()->flash('error', trans('admin::app.settings.exchange_rates.last-delete-error')); } else { try { - Event::fire('core.exchange_rate.delete.before', $id); + Event::dispatch('core.exchange_rate.delete.before', $id); $this->exchangeRateRepository->delete($id); session()->flash('success', trans('admin::app.settings.exchange_rates.delete-success')); - Event::fire('core.exchange_rate.delete.after', $id); + Event::dispatch('core.exchange_rate.delete.after', $id); return response()->json(['message' => true], 200); } catch (\Exception $e) { diff --git a/packages/Webkul/Core/src/Http/Controllers/LocaleController.php b/packages/Webkul/Core/src/Http/Controllers/LocaleController.php index 2b95866d7..68fcd8b7e 100755 --- a/packages/Webkul/Core/src/Http/Controllers/LocaleController.php +++ b/packages/Webkul/Core/src/Http/Controllers/LocaleController.php @@ -73,11 +73,11 @@ class LocaleController extends Controller 'direction' => 'in:ltr,rtl' ]); - Event::fire('core.locale.create.before'); + Event::dispatch('core.locale.create.before'); $locale = $this->localeRepository->create(request()->all()); - Event::fire('core.locale.create.after', $locale); + Event::dispatch('core.locale.create.after', $locale); session()->flash('success', trans('admin::app.settings.locales.create-success')); @@ -111,11 +111,11 @@ class LocaleController extends Controller 'direction' => 'in:ltr,rtl' ]); - Event::fire('core.locale.update.before', $id); + Event::dispatch('core.locale.update.before', $id); $locale = $this->localeRepository->update(request()->all(), $id); - Event::fire('core.locale.update.after', $locale); + Event::dispatch('core.locale.update.after', $locale); session()->flash('success', trans('admin::app.settings.locales.update-success')); @@ -136,11 +136,11 @@ class LocaleController extends Controller session()->flash('error', trans('admin::app.settings.locales.last-delete-error')); } else { try { - Event::fire('core.locale.delete.before', $id); + Event::dispatch('core.locale.delete.before', $id); $this->localeRepository->delete($id); - Event::fire('core.locale.delete.after', $id); + Event::dispatch('core.locale.delete.after', $id); session()->flash('success', trans('admin::app.settings.locales.delete-success')); diff --git a/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php b/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php index 620fb733a..7d33eb61b 100755 --- a/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php @@ -98,11 +98,11 @@ class RegistrationController extends Controller $verificationData['token'] = md5(uniqid(rand(), true)); $data['token'] = $verificationData['token']; - Event::fire('customer.registration.before'); + Event::dispatch('customer.registration.before'); $customer = $this->customerRepository->create($data); - Event::fire('customer.registration.after', $customer); + Event::dispatch('customer.registration.after', $customer); if ($customer) { if (core()->getConfigData('customer.settings.email.verification')) { diff --git a/packages/Webkul/Customer/src/Http/Controllers/SessionController.php b/packages/Webkul/Customer/src/Http/Controllers/SessionController.php index 0c25bb54b..05f43a5ff 100755 --- a/packages/Webkul/Customer/src/Http/Controllers/SessionController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/SessionController.php @@ -85,7 +85,7 @@ class SessionController extends Controller } //Event passed to prepare cart after login - Event::fire('customer.after.login', request('email')); + Event::dispatch('customer.after.login', request('email')); return redirect()->intended(route($this->_config['redirect'])); } @@ -100,7 +100,7 @@ class SessionController extends Controller { auth()->guard('customer')->logout(); - Event::fire('customer.after.logout', $id); + Event::dispatch('customer.after.logout', $id); return redirect()->route($this->_config['redirect']); } diff --git a/packages/Webkul/Customer/src/Repositories/CustomerAddressRepository.php b/packages/Webkul/Customer/src/Repositories/CustomerAddressRepository.php index 367e963d4..cb515af94 100755 --- a/packages/Webkul/Customer/src/Repositories/CustomerAddressRepository.php +++ b/packages/Webkul/Customer/src/Repositories/CustomerAddressRepository.php @@ -31,7 +31,7 @@ class CustomerAddressRepository extends Repository */ public function create(array $data) { - Event::fire('customer.addresses.create.before'); + Event::dispatch('customer.addresses.create.before'); if ( isset($data['default_address']) ) { $data['default_address'] = 1; @@ -47,7 +47,7 @@ class CustomerAddressRepository extends Repository $address = $this->model->create($data); - Event::fire('customer.addresses.create.after', $address); + Event::dispatch('customer.addresses.create.after', $address); return $address; } @@ -61,7 +61,7 @@ class CustomerAddressRepository extends Repository { $address = $this->find($id); - Event::fire('customer.addresses.update.before', $id); + Event::dispatch('customer.addresses.update.before', $id); if (isset($data['default_address']) ) { $data['default_address'] = 1; @@ -80,8 +80,8 @@ class CustomerAddressRepository extends Repository $address->update($data); } - Event::fire('customer.addresses.update.after', $id); + Event::dispatch('customer.addresses.update.after', $id); return $address; - } + } } \ No newline at end of file diff --git a/packages/Webkul/Inventory/src/Http/Controllers/InventorySourceController.php b/packages/Webkul/Inventory/src/Http/Controllers/InventorySourceController.php index c8e8cbb05..a01730c56 100755 --- a/packages/Webkul/Inventory/src/Http/Controllers/InventorySourceController.php +++ b/packages/Webkul/Inventory/src/Http/Controllers/InventorySourceController.php @@ -84,11 +84,11 @@ class InventorySourceController extends Controller $data['status'] = !isset($data['status']) ? 0 : 1; - Event::fire('inventory.inventory_source.create.before'); + Event::dispatch('inventory.inventory_source.create.before'); $inventorySource = $this->inventorySourceRepository->create($data); - Event::fire('inventory.inventory_source.create.after', $inventorySource); + Event::dispatch('inventory.inventory_source.create.after', $inventorySource); session()->flash('success', trans('admin::app.settings.inventory_sources.create-success')); @@ -133,11 +133,11 @@ class InventorySourceController extends Controller $data['status'] = !isset($data['status']) ? 0 : 1; - Event::fire('inventory.inventory_source.update.before', $id); + Event::dispatch('inventory.inventory_source.update.before', $id); $inventorySource = $this->inventorySourceRepository->update($data, $id); - Event::fire('inventory.inventory_source.update.after', $inventorySource); + Event::dispatch('inventory.inventory_source.update.after', $inventorySource); session()->flash('success', trans('admin::app.settings.inventory_sources.update-success')); @@ -158,11 +158,11 @@ class InventorySourceController extends Controller session()->flash('error', trans('admin::app.settings.inventory_sources.last-delete-error')); } else { try { - Event::fire('inventory.inventory_source.delete.before', $id); + Event::dispatch('inventory.inventory_source.delete.before', $id); $this->inventorySourceRepository->delete($id); - Event::fire('inventory.inventory_source.delete.after', $id); + Event::dispatch('inventory.inventory_source.delete.after', $id); session()->flash('success', trans('admin::app.settings.inventory_sources.delete-success')); diff --git a/packages/Webkul/Product/src/Http/Controllers/ProductController.php b/packages/Webkul/Product/src/Http/Controllers/ProductController.php index 9134991d4..67174f16f 100755 --- a/packages/Webkul/Product/src/Http/Controllers/ProductController.php +++ b/packages/Webkul/Product/src/Http/Controllers/ProductController.php @@ -310,7 +310,7 @@ class ProductController extends Controller */ public function sync() { - Event::fire('products.datagrid.sync', true); + Event::dispatch('products.datagrid.sync', true); return redirect()->route('admin.catalog.products.index'); } diff --git a/packages/Webkul/Product/src/Http/Controllers/ReviewController.php b/packages/Webkul/Product/src/Http/Controllers/ReviewController.php index 105e6f7b5..10f51d987 100755 --- a/packages/Webkul/Product/src/Http/Controllers/ReviewController.php +++ b/packages/Webkul/Product/src/Http/Controllers/ReviewController.php @@ -45,7 +45,7 @@ class ReviewController extends Controller /** * Display a listing of the resource. * - * @return \Illuminate\View\View + * @return \Illuminate\View\View */ public function index() { @@ -56,7 +56,7 @@ class ReviewController extends Controller * Show the form for editing the specified resource. * * @param int $id - * @return \Illuminate\View\View + * @return \Illuminate\View\View */ public function edit($id) { @@ -73,11 +73,11 @@ class ReviewController extends Controller */ public function update($id) { - Event::fire('customer.review.update.before', $id); + Event::dispatch('customer.review.update.before', $id); $this->productReviewRepository->update(request()->all(), $id); - Event::fire('customer.review.update.after', $id); + Event::dispatch('customer.review.update.after', $id); session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Review'])); @@ -95,11 +95,11 @@ class ReviewController extends Controller $productReview = $this->productReviewRepository->findOrFail($id); try { - Event::fire('customer.review.delete.before', $id); + Event::dispatch('customer.review.delete.before', $id); $this->productReviewRepository->delete($id); - Event::fire('customer.review.delete.after', $id); + Event::dispatch('customer.review.delete.after', $id); session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Review'])); @@ -127,11 +127,11 @@ class ReviewController extends Controller foreach ($indexes as $key => $value) { try { - Event::fire('customer.review.delete.before', $value); + Event::dispatch('customer.review.delete.before', $value); $this->productReviewRepository->delete($value); - Event::fire('customer.review.delete.after', $value); + Event::dispatch('customer.review.delete.after', $value); } catch(\Exception $e) { $suppressFlash = true; @@ -173,11 +173,11 @@ class ReviewController extends Controller try { if ($data['massaction-type'] == 'update') { if ($data['update-options'] == 1) { - Event::fire('customer.review.update.before', $value); + Event::dispatch('customer.review.update.before', $value); $review->update(['status' => 'approved']); - Event::fire('customer.review.update.after', $review); + Event::dispatch('customer.review.update.after', $review); } else if ($data['update-options'] == 0) { $review->update(['status' => 'pending']); } else if ($data['update-options'] == 2) { diff --git a/packages/Webkul/Product/src/Repositories/ProductRepository.php b/packages/Webkul/Product/src/Repositories/ProductRepository.php index 6c868c2fb..5538d42ae 100755 --- a/packages/Webkul/Product/src/Repositories/ProductRepository.php +++ b/packages/Webkul/Product/src/Repositories/ProductRepository.php @@ -58,13 +58,13 @@ class ProductRepository extends Repository */ public function create(array $data) { - Event::fire('catalog.product.create.before'); + Event::dispatch('catalog.product.create.before'); $typeInstance = app(config('product_types.' . $data['type'] . '.class')); $product = $typeInstance->create($data); - Event::fire('catalog.product.create.after', $product); + Event::dispatch('catalog.product.create.after', $product); return $product; } @@ -77,7 +77,7 @@ class ProductRepository extends Repository */ public function update(array $data, $id, $attribute = "id") { - Event::fire('catalog.product.update.before', $id); + Event::dispatch('catalog.product.update.before', $id); $product = $this->find($id); @@ -86,7 +86,7 @@ class ProductRepository extends Repository if (isset($data['channels'])) $product['channels'] = $data['channels']; - Event::fire('catalog.product.update.after', $product); + Event::dispatch('catalog.product.update.after', $product); return $product; } @@ -97,11 +97,11 @@ class ProductRepository extends Repository */ public function delete($id) { - Event::fire('catalog.product.delete.before', $id); + Event::dispatch('catalog.product.delete.before', $id); parent::delete($id); - Event::fire('catalog.product.delete.after', $id); + Event::dispatch('catalog.product.delete.after', $id); } /** diff --git a/packages/Webkul/Sales/src/Repositories/InvoiceItemRepository.php b/packages/Webkul/Sales/src/Repositories/InvoiceItemRepository.php index 77667d98a..3f4977614 100755 --- a/packages/Webkul/Sales/src/Repositories/InvoiceItemRepository.php +++ b/packages/Webkul/Sales/src/Repositories/InvoiceItemRepository.php @@ -52,7 +52,7 @@ class InvoiceItemRepository extends Repository ->whereIn('inventory_source_id', $data['invoice']->order->channel->inventory_sources()->pluck('id')) ->orderBy('qty', 'desc') ->get(); - + foreach ($inventories as $key => $inventory) { if ($inventory->qty >= $data['qty']) { $inventory->update(['qty' => $inventory->qty - $data['qty']]); @@ -65,6 +65,6 @@ class InvoiceItemRepository extends Repository } } - Event::fire('catalog.product.update.after', $data['product']); + Event::dispatch('catalog.product.update.after', $data['product']); } } \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php index 9e2d21de0..14fd8be50 100755 --- a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php +++ b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php @@ -94,7 +94,7 @@ class InvoiceRepository extends Repository DB::beginTransaction(); try { - Event::fire('sales.invoice.save.before', $data); + Event::dispatch('sales.invoice.save.before', $data); $order = $this->orderRepository->find($data['order_id']); @@ -162,7 +162,7 @@ class InvoiceRepository extends Repository 'product_type' => $childOrderItem->product_type, 'additional' => $childOrderItem->additional ]); - + if ($childOrderItem->product && ! $childOrderItem->getTypeInstance()->isStockable() && $childOrderItem->getTypeInstance()->showQuantityBox()) { $this->invoiceItemRepository->updateProductInventory([ 'invoice' => $invoice, @@ -194,7 +194,7 @@ class InvoiceRepository extends Repository $this->orderRepository->updateOrderStatus($order); - Event::fire('sales.invoice.save.after', $invoice); + Event::dispatch('sales.invoice.save.after', $invoice); } catch (\Exception $e) { DB::rollBack(); @@ -205,7 +205,7 @@ class InvoiceRepository extends Repository return $invoice; } - + /** * @param mixed $invoice * @return mixed diff --git a/packages/Webkul/Sales/src/Repositories/OrderRepository.php b/packages/Webkul/Sales/src/Repositories/OrderRepository.php index 235a0a1a2..b5f6e75fa 100755 --- a/packages/Webkul/Sales/src/Repositories/OrderRepository.php +++ b/packages/Webkul/Sales/src/Repositories/OrderRepository.php @@ -73,7 +73,7 @@ class OrderRepository extends Repository DB::beginTransaction(); try { - Event::fire('checkout.order.save.before', $data); + Event::dispatch('checkout.order.save.before', $data); if (isset($data['customer']) && $data['customer']) { $data['customer_id'] = $data['customer']->id; @@ -103,7 +103,7 @@ class OrderRepository extends Repository $order->addresses()->create($data['billing_address']); foreach ($data['items'] as $item) { - Event::fire('checkout.order.orderitem.save.before', $data); + Event::dispatch('checkout.order.orderitem.save.before', $data); $orderItem = $this->orderItemRepository->create(array_merge($item, ['order_id' => $order->id])); @@ -117,10 +117,10 @@ class OrderRepository extends Repository $this->downloadableLinkPurchasedRepository->saveLinks($orderItem, 'available'); - Event::fire('checkout.order.orderitem.save.after', $data); + Event::dispatch('checkout.order.orderitem.save.after', $data); } - Event::fire('checkout.order.save.after', $order); + Event::dispatch('checkout.order.save.after', $order); } catch (\Exception $e) { DB::rollBack(); @@ -145,7 +145,7 @@ class OrderRepository extends Repository return false; } - Event::fire('sales.order.cancel.before', $order); + Event::dispatch('sales.order.cancel.before', $order); foreach ($order->items as $item) { if (! $item->qty_to_cancel) { @@ -186,7 +186,7 @@ class OrderRepository extends Repository $this->updateOrderStatus($order); - Event::fire('sales.order.cancel.after', $order); + Event::dispatch('sales.order.cancel.after', $order); return true; } diff --git a/packages/Webkul/Sales/src/Repositories/RefundRepository.php b/packages/Webkul/Sales/src/Repositories/RefundRepository.php index 395182518..c309010b8 100644 --- a/packages/Webkul/Sales/src/Repositories/RefundRepository.php +++ b/packages/Webkul/Sales/src/Repositories/RefundRepository.php @@ -91,7 +91,7 @@ class RefundRepository extends Repository DB::beginTransaction(); try { - Event::fire('sales.refund.save.before', $data); + Event::dispatch('sales.refund.save.before', $data); $order = $this->orderRepository->find($data['order_id']); @@ -165,7 +165,7 @@ class RefundRepository extends Repository 'product_type' => $childOrderItem->product_type, 'additional' => $childOrderItem->additional ]); - + if ($childOrderItem->getTypeInstance()->isStockable() || $childOrderItem->getTypeInstance()->showQuantityBox()) $this->refundItemRepository->returnQtyToProductInventory($childOrderItem, $finalQty); @@ -189,7 +189,7 @@ class RefundRepository extends Repository $this->orderRepository->updateOrderStatus($order); - Event::fire('sales.refund.save.after', $refund); + Event::dispatch('sales.refund.save.after', $refund); } catch (\Exception $e) { DB::rollBack(); diff --git a/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php b/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php index 4659ffdc2..d7dc58429 100644 --- a/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php +++ b/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php @@ -58,6 +58,6 @@ class ShipmentItemRepository extends Repository $inventory->update(['qty' => $qty]); - Event::fire('catalog.product.update.after', $data['product']); + Event::dispatch('catalog.product.update.after', $data['product']); } } \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php b/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php index 99bf2a1eb..5f1da33ae 100755 --- a/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php +++ b/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php @@ -63,7 +63,7 @@ class ShipmentRepository extends Repository parent::__construct($app); } - + /** * Specify Model class name * @@ -82,9 +82,9 @@ class ShipmentRepository extends Repository public function create(array $data) { DB::beginTransaction(); - + try { - Event::fire('sales.shipment.save.before', $data); + Event::dispatch('sales.shipment.save.before', $data); $order = $this->orderRepository->find($data['order_id']); @@ -141,7 +141,7 @@ class ShipmentRepository extends Repository 'qty' => $finalQty, 'vendor_id' => isset($data['vendor_id']) ? $data['vendor_id'] : 0 ]); - + $this->orderItemRepository->update(['qty_shipped' => $child->qty_shipped + $finalQty], $child->id); } } else { @@ -162,13 +162,13 @@ class ShipmentRepository extends Repository $this->orderRepository->updateOrderStatus($order); - Event::fire('sales.shipment.save.after', $shipment); + Event::dispatch('sales.shipment.save.after', $shipment); } catch (\Exception $e) { DB::rollBack(); throw $e; } - + DB::commit(); return $shipment; diff --git a/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php b/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php index 0ce797b32..2c1867cfc 100755 --- a/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php @@ -64,7 +64,7 @@ @{{ errors.first('title') }} - @if ($guest_review && ! auth()->guard('customer')->user()) + @if (core()->getConfigData('catalog.products.review.guest_review') && ! auth()->guard('customer')->user())
'},postRender:function(){var a=this;a._super(),a.resizeDragHelper=new b(this._id,{start:function(){a.fire("ResizeStart")},drag:function(b){"both"!=a.settings.direction&&(b.deltaX=0),a.fire("Resize",b)},stop:function(){a.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),g("3k",["2l"],function(a){"use strict";function b(a){var b="";if(a)for(var c=0;c'+a[c]+"";return b}return a.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(a){var b=this;b._super(a),b.settings.size&&(b.size=b.settings.size),b.settings.options&&(b._options=b.settings.options),b.on("keydown",function(a){var c;13==a.keyCode&&(a.preventDefault(),b.parents().reverse().each(function(a){if(a.toJSON)return c=a,!1}),b.fire("submit",{data:c.toJSON()}))})},options:function(a){return arguments.length?(this.state.set("options",a),this):this.state.get("options")},renderHtml:function(){var a,c=this,d="";return a=b(c._options),c.size&&(d=' size = "'+c.size+'"'),'"},bindStates:function(){var a=this;return a.state.on("change:options",function(c){a.getEl().innerHTML=b(c.value)}),a._super()}})}),g("3l",["2l","2e","48"],function(a,b,c){"use strict";function d(a,b,c){return ac&&(a=c),a}function e(a,b,c){a.setAttribute("aria-"+b,c)}function f(a,b){var d,f,g,h,i,j;"v"==a.settings.orientation?(h="top",g="height",f="h"):(h="left",g="width",f="w"),j=a.getEl("handle"),d=(a.layoutRect()[f]||100)-c.getSize(j)[g],i=d*((b-a._minValue)/(a._maxValue-a._minValue))+"px",j.style[h]=i,j.style.height=a.layoutRect().h+"px",e(j,"valuenow",b),e(j,"valuetext",""+a.settings.previewFilter(b)),e(j,"valuemin",a._minValue),e(j,"valuemax",a._maxValue)}return a.extend({init:function(a){var b=this;a.previewFilter||(a.previewFilter=function(a){return Math.round(100*a)/100}),b._super(a),b.classes.add("slider"),"v"==a.orientation&&b.classes.add("vertical"),b._minValue=a.minValue||0,b._maxValue=a.maxValue||100,b._initValue=b.state.get("value")},renderHtml:function(){var a=this,b=a._id,c=a.classPrefix;return'
'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){function a(a,b,c){return(c+a)/(b-a)}function e(a,b,c){return c*(b-a)-a}function f(b,c){function f(f){var g;g=n.value(),g=e(b,c,a(b,c,g)+.05*f),g=d(g,b,c),n.value(g),n.fire("dragstart",{value:g}),n.fire("drag",{value:g}),n.fire("dragend",{value:g})}n.on("keydown",function(a){switch(a.keyCode){case 37:case 38:f(-1);break;case 39:case 40:f(1)}})}function g(a,e,f){var g,h,i,o,p;n._dragHelper=new b(n._id,{handle:n._id+"-handle",start:function(a){g=a[j],h=parseInt(n.getEl("handle").style[k],10),i=(n.layoutRect()[m]||100)-c.getSize(f)[l],n.fire("dragstart",{value:p})},drag:function(b){var c=b[j]-g;o=d(h+c,0,i),f.style[k]=o+"px",p=a+o/i*(e-a),n.value(p),n.tooltip().text(""+n.settings.previewFilter(p)).show().moveRel(f,"bc tc"),n.fire("drag",{value:p})},stop:function(){n.tooltip().hide(),n.fire("dragend",{value:p})}})}var h,i,j,k,l,m,n=this;h=n._minValue,i=n._maxValue,"v"==n.settings.orientation?(j="screenY",k="top",l="height",m="h"):(j="screenX",k="left",l="width",m="w"),n._super(),f(h,i,n.getEl("handle")),g(h,i,n.getEl("handle"))},repaint:function(){this._super(),f(this,this.value())},bindStates:function(){var a=this;return a.state.on("change:value",function(b){f(a,b.value)}),a._super()}})}),g("3m",["2l"],function(a){"use strict";return a.extend({renderHtml:function(){var a=this;return a.classes.add("spacer"),a.canFocus=!1,'
'}})}),g("3n",["3d","48","a"],function(a,b,c){return a.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var a,d,e=this,f=e.getEl(),g=e.layoutRect();return e._super(),a=f.firstChild,d=f.lastChild,c(a).css({width:g.w-b.getSize(d).width,height:g.h-2}),c(d).css({height:g.h-2}),e},activeMenu:function(a){var b=this;c(b.getEl().lastChild).toggleClass(b.classPrefix+"active",a)},renderHtml:function(){var a,b=this,c=b._id,d=b.classPrefix,e=b.state.get("icon"),f=b.state.get("text"),g="";return a=b.settings.image,a?(e="none","string"!=typeof a&&(a=window.getSelection?a[0]:a[1]),a=" style=\"background-image: url('"+a+"')\""):a="",e=b.settings.icon?d+"ico "+d+"i-"+e:"",f&&(b.classes.add("btn-has-text"),g=''+b.encode(f)+""),'
'},postRender:function(){var a=this,b=a.settings.onclick;return a.on("click",function(a){var c=a.target;if(a.control==this)for(;c;){if(a.aria&&"down"!=a.aria.key||"BUTTON"==c.nodeName&&c.className.indexOf("open")==-1)return a.stopImmediatePropagation(),void(b&&b.call(this,a));c=c.parentNode}}),delete a.settings.onclick,a._super()}})}),g("3o",["35"],function(a){"use strict";return a.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}})}),g("3p",["2g","a","48"],function(a,b,c){"use strict";return a.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(a){var c;this.activeTabId&&(c=this.getEl(this.activeTabId),b(c).removeClass(this.classPrefix+"active"),c.setAttribute("aria-selected","false")),this.activeTabId="t"+a,c=this.getEl("t"+a),c.setAttribute("aria-selected","true"),b(c).addClass(this.classPrefix+"active"),this.items()[a].show().fire("showtab"),this.reflow(),this.items().each(function(b,c){a!=c&&b.hide()})},renderHtml:function(){var a=this,b=a._layout,c="",d=a.classPrefix;return a.preRender(),b.preRender(a),a.items().each(function(b,e){var f=a._id+"-t"+e;b.aria("role","tabpanel"),b.aria("labelledby",f),c+='"}),'
'+c+'
'+b.renderHtml(a)+"
"},postRender:function(){var a=this;a._super(),a.settings.activeTab=a.settings.activeTab||0,a.activateTab(a.settings.activeTab),this.on("click",function(b){var c=b.target.parentNode;if(c&&c.id==a._id+"-head")for(var d=c.childNodes.length;d--;)c.childNodes[d]==b.target&&a.activateTab(d)})},initLayoutRect:function(){var a,b,d,e=this;b=c.getSize(e.getEl("head")).width,b=b<0?0:b,d=0,e.items().each(function(a){b=Math.max(b,a.layoutRect().minW),d=Math.max(d,a.layoutRect().minH)}),e.items().each(function(a){a.settings.x=0,a.settings.y=0,a.settings.w=b,a.settings.h=d,a.layoutRect({x:0,y:0,w:b,h:d})});var f=c.getSize(e.getEl("head")).height;return e.settings.minWidth=b,e.settings.minHeight=d+f,a=e._super(),a.deltaH+=f,a.innerH=a.h-a.deltaH,a}})}),g("3q",["2l","9","48"],function(a,b,c){return a.extend({init:function(a){var b=this;b._super(a),b.classes.add("textbox"),a.multiline?b.classes.add("multiline"):(b.on("keydown",function(a){var c;13==a.keyCode&&(a.preventDefault(),b.parents().reverse().each(function(a){if(a.toJSON)return c=a,!1}),b.fire("submit",{data:c.toJSON()}))}),b.on("keyup",function(a){b.state.set("value",a.target.value)}))},repaint:function(){var a,b,c,d,e,f=this,g=0;a=f.getEl().style,b=f._layoutRect,e=f._lastRepaintRect||{};var h=document;return!f.settings.multiline&&h.all&&(!h.documentMode||h.documentMode<=8)&&(a.lineHeight=b.h-g+"px"),c=f.borderBox,d=c.left+c.right+8,g=c.top+c.bottom+(f.settings.multiline?8:0),b.x!==e.x&&(a.left=b.x+"px",e.x=b.x),b.y!==e.y&&(a.top=b.y+"px",e.y=b.y),b.w!==e.w&&(a.width=b.w-d+"px",e.w=b.w),b.h!==e.h&&(a.height=b.h-g+"px",e.h=b.h),f._lastRepaintRect=e,f.fire("repaint",{},!1),f},renderHtml:function(){var a,d,e=this,f=e.settings;return a={id:e._id,hidefocus:"1"},b.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(b){a[b]=f[b]}),e.disabled()&&(a.disabled="disabled"),f.subtype&&(a.type=f.subtype),d=c.create(f.multiline?"textarea":"input",a),d.value=e.state.get("value"),d.className=e.classes,d.outerHTML},value:function(a){return arguments.length?(this.state.set("value",a),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var a=this;a.getEl().value=a.state.get("value"),a._super(),a.$el.on("change",function(b){a.state.set("value",b.target.value),a.fire("change",b)})},bindStates:function(){var a=this;return a.state.on("change:value",function(b){a.getEl().value!=b.value&&(a.getEl().value=b.value)}),a.state.on("change:disabled",function(b){a.getEl().disabled=b.value}),a._super()},remove:function(){this.$el.off(),this._super(); +}})}),g("1f",["27","28","29","2a","2b","2c","2d","2e","2f","2g","2h","2i","2j","1y","1z","2k","2l","2m","20","2n","2o","2p","2q","2r","2s","2t","2u","2v","2w","2x","2y","2z","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","3g","3h","3i","3j","3k","3l","3m","3n","3o","3p","3q"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,aa,ba,ca,da,ea){"use strict";var fa=function(a,b){e.add(a.split(".").pop(),b)},ga=function(a,b,c){var d,e;for(e=b.split(/[.\/]/),d=0;d 'dashboard', + 'name' => 'admin::app.acl.dashboard', + 'route' => 'admin.dashboard.index', + 'sort' => 1 + ], [ + 'key' => 'sales', + 'name' => 'admin::app.acl.sales', + 'route' => 'admin.sales.orders.index', + 'sort' => 2 + ], [ + 'key' => 'sales.orders', + 'name' => 'admin::app.acl.orders', + 'route' => 'admin.sales.orders.index', + 'sort' => 1 + ], [ + 'key' => 'sales.invoices', + 'name' => 'admin::app.acl.invoices', + 'route' => 'admin.sales.invoices.index', + 'sort' => 2 + ], [ + 'key' => 'sales.shipments', + 'name' => 'admin::app.acl.shipments', + 'route' => 'admin.sales.shipments.index', + 'sort' => 3 + ], [ + 'key' => 'catalog', + 'name' => 'admin::app.acl.catalog', + 'route' => 'admin.catalog.index', + 'sort' => 3 + ], [ + 'key' => 'catalog.products', + 'name' => 'admin::app.acl.products', + 'route' => 'admin.catalog.products.index', + 'sort' => 1 + ], [ + 'key' => 'catalog.products.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.catalog.products.create', + 'sort' => 1 + ], [ + 'key' => 'catalog.products.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.catalog.products.edit', + 'sort' => 2 + ], [ + 'key' => 'catalog.products.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.catalog.products.delete', + 'sort' => 3 + ], [ + 'key' => 'catalog.categories', + 'name' => 'admin::app.acl.categories', + 'route' => 'admin.catalog.categories.index', + 'sort' => 2 + ], [ + 'key' => 'catalog.categories.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.catalog.categories.create', + 'sort' => 1 + ], [ + 'key' => 'catalog.categories.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.catalog.categories.edit', + 'sort' => 2 + ], [ + 'key' => 'catalog.categories.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.catalog.categories.delete', + 'sort' => 3 + ], [ + 'key' => 'catalog.attributes', + 'name' => 'admin::app.acl.attributes', + 'route' => 'admin.catalog.attributes.index', + 'sort' => 3 + ], [ + 'key' => 'catalog.attributes.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.catalog.attributes.create', + 'sort' => 1 + ], [ + 'key' => 'catalog.attributes.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.catalog.attributes.edit', + 'sort' => 2 + ], [ + 'key' => 'catalog.attributes.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.catalog.attributes.delete', + 'sort' => 3 + ], [ + 'key' => 'catalog.families', + 'name' => 'admin::app.acl.attribute-families', + 'route' => 'admin.catalog.families.index', + 'sort' => 4 + ], [ + 'key' => 'catalog.families.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.catalog.families.create', + 'sort' => 1 + ], [ + 'key' => 'catalog.families.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.catalog.families.edit', + 'sort' => 2 + ], [ + 'key' => 'catalog.families.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.catalog.families.delete', + 'sort' => 3 + ], [ + 'key' => 'customers', + 'name' => 'admin::app.acl.customers', + 'route' => 'admin.customer.index', + 'sort' => 4 + ], [ + 'key' => 'customers.customers', + 'name' => 'admin::app.acl.customers', + 'route' => 'admin.customer.index', + 'sort' => 1 + ], [ + 'key' => 'customers.customers.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.customer.create', + 'sort' => 1 + ], [ + 'key' => 'customers.customers.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.customer.edit', + 'sort' => 2 + ], [ + 'key' => 'customers.customers.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.customer.delete', + 'sort' => 3 + ], [ + 'key' => 'customers.groups', + 'name' => 'admin::app.acl.groups', + 'route' => 'admin.groups.index', + 'sort' => 2 + ], [ + 'key' => 'customers.groups.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.groups.create', + 'sort' => 1 + ], [ + 'key' => 'customers.groups.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.groups.edit', + 'sort' => 2 + ], [ + 'key' => 'customers.groups.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.groups.delete', + 'sort' => 3 + ], [ + 'key' => 'customers.reviews', + 'name' => 'admin::app.acl.reviews', + 'route' => 'admin.customer.review.index', + 'sort' => 3 + ], [ + 'key' => 'customers.reviews.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.customer.review.edit', + 'sort' => 1 + ], [ + 'key' => 'customers.reviews.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.customer.review.delete', + 'sort' => 2 + ], [ + 'key' => 'configuration', + 'name' => 'admin::app.acl.configure', + 'route' => 'admin.configuration.index', + 'sort' => 5 + ], [ + 'key' => 'settings', + 'name' => 'admin::app.acl.settings', + 'route' => 'admin.users.index', + 'sort' => 6 + ], [ + 'key' => 'settings.locales', + 'name' => 'admin::app.acl.locales', + 'route' => 'admin.locales.index', + 'sort' => 1 + ], [ + 'key' => 'settings.locales.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.locales.create', + 'sort' => 1 + ], [ + 'key' => 'settings.locales.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.locales.edit', + 'sort' => 2 + ], [ + 'key' => 'settings.locales.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.locales.delete', + 'sort' => 3 + ], [ + 'key' => 'settings.currencies', + 'name' => 'admin::app.acl.currencies', + 'route' => 'admin.currencies.index', + 'sort' => 2 + ], [ + 'key' => 'settings.currencies.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.currencies.create', + 'sort' => 1 + ], [ + 'key' => 'settings.currencies.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.currencies.edit', + 'sort' => 2 + ], [ + 'key' => 'settings.currencies.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.currencies.delete', + 'sort' => 3 + ], [ + 'key' => 'settings.exchange_rates', + 'name' => 'admin::app.acl.exchange-rates', + 'route' => 'admin.exchange_rates.index', + 'sort' => 3 + ], [ + 'key' => 'settings.exchange_rates.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.exchange_rates.create', + 'sort' => 1 + ], [ + 'key' => 'settings.exchange_rates.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.exchange_rates.edit', + 'sort' => 2 + ], [ + 'key' => 'settings.exchange_rates.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.exchange_rates.delete', + 'sort' => 3 + ], [ + 'key' => 'settings.inventory_sources', + 'name' => 'admin::app.acl.inventory-sources', + 'route' => 'admin.inventory_sources.index', + 'sort' => 4 + ], [ + 'key' => 'settings.inventory_sources.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.inventory_sources.create', + 'sort' => 1 + ], [ + 'key' => 'settings.inventory_sources.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.inventory_sources.edit', + 'sort' => 2 + ], [ + 'key' => 'settings.inventory_sources.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.inventory_sources.delete', + 'sort' => 3 + ], [ + 'key' => 'settings.channels', + 'name' => 'admin::app.acl.channels', + 'route' => 'admin.channels.index', + 'sort' => 5 + ], [ + 'key' => 'settings.channels.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.channels.create', + 'sort' => 1 + ], [ + 'key' => 'settings.channels.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.channels.edit', + 'sort' => 2 + ], [ + 'key' => 'settings.channels.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.channels.delete', + 'sort' => 3 + ], [ + 'key' => 'settings.users', + 'name' => 'admin::app.acl.users', + 'route' => 'admin.users.index', + 'sort' => 6 + ], [ + 'key' => 'settings.users.users', + 'name' => 'admin::app.acl.users', + 'route' => 'admin.users.index', + 'sort' => 1 + ], [ + 'key' => 'settings.users.users.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.users.create', + 'sort' => 1 + ], [ + 'key' => 'settings.users.users.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.users.edit', + 'sort' => 2 + ], [ + 'key' => 'settings.users.users.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.users.delete', + 'sort' => 3 + ], [ + 'key' => 'settings.users.roles', + 'name' => 'admin::app.acl.roles', + 'route' => 'admin.roles.index', + 'sort' => 2 + ], [ + 'key' => 'settings.users.roles.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.roles.create', + 'sort' => 1 + ], [ + 'key' => 'settings.users.roles.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.roles.edit', + 'sort' => 2 + ], [ + 'key' => 'settings.users.roles.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.roles.delete', + 'sort' => 3 + ], [ + 'key' => 'settings.sliders', + 'name' => 'admin::app.acl.sliders', + 'route' => 'admin.sliders.index', + 'sort' => 7 + ], [ + 'key' => 'settings.sliders.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.sliders.create', + 'sort' => 1 + ], [ + 'key' => 'settings.sliders.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.sliders.edit', + 'sort' => 2 + ], [ + 'key' => 'settings.sliders.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.sliders.delete', + 'sort' => 3 + ], [ + 'key' => 'settings.taxes', + 'name' => 'admin::app.acl.taxes', + 'route' => 'admin.tax-categories.index', + 'sort' => 8 + ], [ + 'key' => 'settings.taxes.tax-categories', + 'name' => 'admin::app.acl.tax-categories', + 'route' => 'admin.tax-categories.index', + 'sort' => 1 + ], [ + 'key' => 'settings.taxes.tax-categories.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.tax-categories.create', + 'sort' => 1 + ], [ + 'key' => 'settings.taxes.tax-categories.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.tax-categories.edit', + 'sort' => 2 + ], [ + 'key' => 'settings.taxes.tax-categories.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.tax-categories.delete', + 'sort' => 3 + ], [ + 'key' => 'settings.taxes.tax-rates', + 'name' => 'admin::app.acl.tax-rates', + 'route' => 'admin.tax-rates.index', + 'sort' => 2 + ], [ + 'key' => 'settings.taxes.tax-rates.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.tax-rates.create', + 'sort' => 1 + ], [ + 'key' => 'settings.taxes.tax-rates.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.tax-rates.edit', + 'sort' => 2 + ], [ + 'key' => 'settings.taxes.tax-rates.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.tax-rates.delete', + 'sort' => 3 + ], [ + 'key' => 'promotions', + 'name' => 'admin::app.acl.promotions', + 'route' => 'admin.cart-rules.index', + 'sort' => 7 + ], [ + 'key' => 'promotions.cart-rules', + 'name' => 'admin::app.acl.cart-rules', + 'route' => 'admin.cart-rules.index', + 'sort' => 1 + ], [ + 'key' => 'promotions.cart-rules.create', + 'name' => 'admin::app.acl.create', + 'route' => 'admin.cart-rules.create', + 'sort' => 1 + ], [ + 'key' => 'promotions.cart-rules.edit', + 'name' => 'admin::app.acl.edit', + 'route' => 'admin.cart-rules.edit', + 'sort' => 2 + ], [ + 'key' => 'promotions.cart-rules.delete', + 'name' => 'admin::app.acl.delete', + 'route' => 'admin.cart-rules.delete', + 'sort' => 3 + ], +]; + +?> \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Config/menu.php b/packages/Webkul/Admin/src/Config/menu.php new file mode 100755 index 000000000..ce1da1d85 --- /dev/null +++ b/packages/Webkul/Admin/src/Config/menu.php @@ -0,0 +1,215 @@ + 'dashboard', + 'name' => 'admin::app.layouts.dashboard', + 'route' => 'admin.dashboard.index', + 'sort' => 1, + 'icon-class' => 'dashboard-icon' + ], [ + 'key' => 'sales', + 'name' => 'admin::app.layouts.sales', + 'route' => 'admin.sales.orders.index', + 'sort' => 2, + 'icon-class' => 'sales-icon' + ], [ + 'key' => 'sales.orders', + 'name' => 'admin::app.layouts.orders', + 'route' => 'admin.sales.orders.index', + 'sort' => 1, + 'icon-class' => '' + ], [ + 'key' => 'sales.shipments', + 'name' => 'admin::app.layouts.shipments', + 'route' => 'admin.sales.shipments.index', + 'sort' => 2, + 'icon-class' => '' + ], [ + 'key' => 'sales.invoices', + 'name' => 'admin::app.layouts.invoices', + 'route' => 'admin.sales.invoices.index', + 'sort' => 3, + 'icon-class' => '' + ], [ + 'key' => 'sales.refunds', + 'name' => 'admin::app.layouts.refunds', + 'route' => 'admin.sales.refunds.index', + 'sort' => 4, + 'icon-class' => '' + ], [ + 'key' => 'catalog', + 'name' => 'admin::app.layouts.catalog', + 'route' => 'admin.catalog.products.index', + 'sort' => 3, + 'icon-class' => 'catalog-icon' + ], [ + 'key' => 'catalog.products', + 'name' => 'admin::app.layouts.products', + 'route' => 'admin.catalog.products.index', + 'sort' => 1, + 'icon-class' => '' + ], [ + 'key' => 'catalog.categories', + 'name' => 'admin::app.layouts.categories', + 'route' => 'admin.catalog.categories.index', + 'sort' => 3, + 'icon-class' => '' + ], [ + 'key' => 'catalog.attributes', + 'name' => 'admin::app.layouts.attributes', + 'route' => 'admin.catalog.attributes.index', + 'sort' => 2, + 'icon-class' => '' + ], [ + 'key' => 'catalog.families', + 'name' => 'admin::app.layouts.attribute-families', + 'route' => 'admin.catalog.families.index', + 'sort' => 4, + 'icon-class' => '' + ], [ + 'key' => 'customers', + 'name' => 'admin::app.layouts.customers', + 'route' => 'admin.customer.index', + 'sort' => 4, + 'icon-class' => 'customer-icon' + ], [ + 'key' => 'customers.customers', + 'name' => 'admin::app.layouts.customers', + 'route' => 'admin.customer.index', + 'sort' => 1, + 'icon-class' => '' + ], [ + 'key' => 'customers.groups', + 'name' => 'admin::app.layouts.groups', + 'route' => 'admin.groups.index', + 'sort' => 2, + 'icon-class' => '' + ], [ + 'key' => 'customers.reviews', + 'name' => 'admin::app.layouts.reviews', + 'route' => 'admin.customer.review.index', + 'sort' => 3, + 'icon-class' => '' + ], [ + 'key' => 'customers.subscribers', + 'name' => 'admin::app.layouts.newsletter-subscriptions', + 'route' => 'admin.customers.subscribers.index', + 'sort' => 4, + 'icon-class' => '' + ], [ + 'key' => 'configuration', + 'name' => 'admin::app.layouts.configure', + 'route' => 'admin.configuration.index', + 'sort' => 7, + 'icon-class' => 'configuration-icon' + ], [ + 'key' => 'settings', + 'name' => 'admin::app.layouts.settings', + 'route' => 'admin.locales.index', + 'sort' => 6, + 'icon-class' => 'settings-icon' + ], [ + 'key' => 'settings.locales', + 'name' => 'admin::app.layouts.locales', + 'route' => 'admin.locales.index', + 'sort' => 1, + 'icon-class' => '' + ], [ + 'key' => 'settings.currencies', + 'name' => 'admin::app.layouts.currencies', + 'route' => 'admin.currencies.index', + 'sort' => 2, + 'icon-class' => '' + ], [ + 'key' => 'settings.exchange_rates', + 'name' => 'admin::app.layouts.exchange-rates', + 'route' => 'admin.exchange_rates.index', + 'sort' => 3, + 'icon-class' => '' + ], [ + 'key' => 'settings.inventory_sources', + 'name' => 'admin::app.layouts.inventory-sources', + 'route' => 'admin.inventory_sources.index', + 'sort' => 4, + 'icon-class' => '' + ], [ + 'key' => 'settings.channels', + 'name' => 'admin::app.layouts.channels', + 'route' => 'admin.channels.index', + 'sort' => 5, + 'icon-class' => '' + ], [ + 'key' => 'settings.users', + 'name' => 'admin::app.layouts.users', + 'route' => 'admin.users.index', + 'sort' => 6, + 'icon-class' => '' + ], [ + 'key' => 'settings.users.users', + 'name' => 'admin::app.layouts.users', + 'route' => 'admin.users.index', + 'sort' => 1, + 'icon-class' => '' + ], [ + 'key' => 'settings.users.roles', + 'name' => 'admin::app.layouts.roles', + 'route' => 'admin.roles.index', + 'sort' => 2, + 'icon-class' => '' + ], [ + 'key' => 'settings.sliders', + 'name' => 'admin::app.layouts.sliders', + 'route' => 'admin.sliders.index', + 'sort' => 7, + 'icon-class' => '' + ], [ + 'key' => 'settings.taxes', + 'name' => 'admin::app.layouts.taxes', + 'route' => 'admin.tax-categories.index', + 'sort' => 8, + 'icon-class' => '' + ], [ + 'key' => 'settings.taxes.tax-categories', + 'name' => 'admin::app.layouts.tax-categories', + 'route' => 'admin.tax-categories.index', + 'sort' => 1, + 'icon-class' => '' + ], [ + 'key' => 'settings.taxes.tax-rates', + 'name' => 'admin::app.layouts.tax-rates', + 'route' => 'admin.tax-rates.index', + 'sort' => 2, + 'icon-class' => '' + ], [ + 'key' => 'promotions', + 'name' => 'admin::app.layouts.promotions', + 'route' => 'admin.catalog-rules.index', + 'sort' => 5, + 'icon-class' => 'promotion-icon' + ], [ + 'key' => 'promotions.catalog-rules', + 'name' => 'admin::app.promotions.catalog-rules.title', + 'route' => 'admin.catalog-rules.index', + 'sort' => 1, + 'icon-class' => '' + ], [ + 'key' => 'promotions.cart-rules', + 'name' => 'admin::app.promotions.cart-rules.title', + 'route' => 'admin.cart-rules.index', + 'sort' => 2, + 'icon-class' => '' + ], [ + 'key' => 'cms', + 'name' => 'admin::app.layouts.cms', + 'route' => 'admin.cms.index', + 'sort' => 5, + 'icon-class' => 'cms-icon' + ], [ + 'key' => 'cms.pages', + 'name' => 'admin::app.cms.pages.pages', + 'route' => 'admin.cms.index', + 'sort' => 1, + 'icon-class' => '' + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Config/system.php b/packages/Webkul/Admin/src/Config/system.php new file mode 100644 index 000000000..d9a39ee19 --- /dev/null +++ b/packages/Webkul/Admin/src/Config/system.php @@ -0,0 +1,161 @@ + 'general', + 'name' => 'admin::app.admin.system.general', + 'sort' => 1, + ], [ + 'key' => 'general.general', + 'name' => 'admin::app.admin.system.general', + 'sort' => 1, + ], [ + 'key' => 'general.general.locale_options', + 'name' => 'admin::app.admin.system.locale-options', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'weight_unit', + 'title' => 'admin::app.admin.system.weight-unit', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'lbs', + 'value' => 'lbs' + ], [ + 'title' => 'kgs', + 'value' => 'kgs' + ] + ], + 'channel_based' => true, + ] + ] + ], [ + 'key' => 'general.content', + 'name' => 'admin::app.admin.system.content', + 'sort' => 2, + ], [ + 'key' => 'general.content.footer', + 'name' => 'admin::app.admin.system.footer', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'footer_content', + 'title' => 'admin::app.admin.system.footer-content', + 'type' => 'text', + 'channel_based' => true, + 'locale_based' => true + ], [ + 'name' => 'footer_toggle', + 'title' => 'admin::app.admin.system.footer-toggle', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'True', + 'value' => 1 + ], [ + 'title' => 'False', + 'value' => 0 + ] + ], + 'locale_based' => true, + 'channel_based' => true, + ] + ] + ], [ + 'key' => 'general.design', + 'name' => 'admin::app.admin.system.design', + 'sort' => 3, + ], [ + 'key' => 'general.design.admin_logo', + 'name' => 'admin::app.admin.system.admin-logo', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'logo_image', + 'title' => 'admin::app.admin.system.logo-image', + 'type' => 'image', + 'channel_based' => true, + 'validation' => 'mimes:jpeg,bmp,png,jpg' + ] + ] + ], [ + 'key' => 'catalog', + 'name' => 'admin::app.admin.system.catalog', + 'sort' => 2 + ], [ + 'key' => 'catalog.products', + 'name' => 'admin::app.admin.system.products', + 'sort' => 2 + ], [ + 'key' => 'catalog.products.review', + 'name' => 'admin::app.admin.system.review', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'guest_review', + 'title' => 'admin::app.admin.system.allow-guest-review', + 'type' => 'boolean' + ] + ] + ], [ + 'key' => 'catalog.inventory', + 'name' => 'admin::app.admin.system.inventory', + 'sort' => 1, + ], [ + 'key' => 'catalog.inventory.stock_options', + 'name' => 'admin::app.admin.system.stock-options', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'backorders', + 'title' => 'admin::app.admin.system.allow-backorders', + 'type' => 'boolean', + 'channel_based' => true + ] + ] + ], [ + 'key' => 'customer', + 'name' => 'admin::app.admin.system.customer', + 'sort' => 3, + ], [ + 'key' => 'customer.settings', + 'name' => 'admin::app.admin.system.settings', + 'sort' => 1, + ], [ + 'key' => 'customer.settings.address', + 'name' => 'admin::app.admin.system.address', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'street_lines', + 'title' => 'admin::app.admin.system.street-lines', + 'type' => 'text', + 'validation' => 'between:1,4', + 'channel_based' => true + ] + ] + ], [ + 'key' => 'customer.settings.newsletter', + 'name' => 'admin::app.admin.system.newsletter', + 'sort' => 2, + 'fields' => [ + [ + 'name' => 'subscription', + 'title' => 'admin::app.admin.system.newsletter-subscription', + 'type' => 'boolean', + ] + ], + ], [ + 'key' => 'customer.settings.email', + 'name' => 'admin::app.admin.system.email', + 'sort' => 3, + 'fields' => [ + [ + 'name' => 'verification', + 'title' => 'admin::app.admin.system.email-verification', + 'type' => 'boolean' + ] + ], + ], +]; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/AddressDataGrid.php b/packages/Webkul/Admin/src/DataGrids/AddressDataGrid.php new file mode 100644 index 000000000..b9db127b1 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/AddressDataGrid.php @@ -0,0 +1,177 @@ + + * @copyright 2019 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AddressDataGrid extends DataGrid +{ + /** + * + * @var integer + */ + public $index = 'address_id'; + + protected $sortOrder = 'desc'; //asc or desc + + /** + * CustomerRepository object + * + * @var object + */ + protected $customer; + + /** + * Create a new controller instance. + * + * @param Webkul\Customer\Repositories\CustomerRepository $customer + * @return void + */ + public function __construct( + Customer $customer + ) + { + parent::__construct(); + + $this->customer = $customer; + } + + public function prepareQueryBuilder() + { + + $customer = $this->customer->find(request('id')); + + $queryBuilder = DB::table('customer_addresses as ca') + ->leftJoin('countries', 'ca.country', '=', 'countries.code') + ->leftJoin('customers as c', 'ca.customer_id', '=', 'c.id') + ->addSelect('ca.id as address_id', 'ca.address1', 'ca.country', DB::raw('' . DB::getTablePrefix() . 'countries.name as country_name'), 'ca.state', 'ca.city', 'ca.postcode', 'ca.phone', 'ca.default_address') + ->where('c.id', $customer->id); + + $queryBuilder = $queryBuilder->leftJoin('country_states', function($qb) { + $qb->on('ca.state', 'country_states.code') + ->on('countries.id', 'country_states.country_id'); + }); + + $queryBuilder + ->groupBy('ca.id') + ->addSelect(DB::raw(DB::getTablePrefix() . 'country_states.default_name as state_name')); + + $this->addFilter('address_id', 'ca.id'); + $this->addFilter('address1', 'ca.address1'); + $this->addFilter('city', 'ca.city'); + $this->addFilter('state_name', DB::raw(DB::getTablePrefix() . 'country_states.default_name')); + $this->addFilter('country_name', DB::raw(DB::getTablePrefix() . 'countries.name')); + $this->addFilter('postcode', 'ca.postcode'); + $this->addFilter('default_address', 'ca.default_address'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'address_id', + 'label' => trans('admin::app.customers.addresses.address-id'), + 'type' => 'number', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'address1', + 'label' => trans('admin::app.customers.addresses.address-1'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'city', + 'label' => trans('admin::app.customers.addresses.city'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'state_name', + 'label' => trans('admin::app.customers.addresses.state-name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'country_name', + 'label' => trans('admin::app.customers.addresses.country-name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'postcode', + 'label' => trans('admin::app.customers.addresses.postcode'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'default_address', + 'label' => trans('admin::app.customers.addresses.default-address'), + 'type' => 'boolean', + 'sortable' => true, + 'searchable' => false, + 'closure' => true, + 'wrapper' => function($row) { + if ($row->default_address == 1) + return '' . trans('admin::app.customers.addresses.yes') . ''; + else + return trans('admin::app.customers.addresses.dash'); + } + ]); + } + + public function prepareActions() + { + $this->addAction([ + 'type' => 'Edit', + 'method' => 'GET', //use post only for redirects only + 'route' => 'admin.customer.addresses.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'type' => 'Delete', + 'method' => 'POST', + 'route' => 'admin.customer.addresses.delete', + 'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'address']), + 'icon' => 'icon trash-icon' + ]); + } + + public function prepareMassActions() + { + $this->addMassAction([ + 'type' => 'delete', + 'label' => trans('admin::app.customers.addresses.delete'), + 'action' => route('admin.customer.addresses.massdelete', request('id')), + 'method' => 'DELETE' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/AttributeDataGrid.php b/packages/Webkul/Admin/src/DataGrids/AttributeDataGrid.php new file mode 100755 index 000000000..1ab36e2a4 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/AttributeDataGrid.php @@ -0,0 +1,154 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AttributeDataGrid extends DataGrid +{ + protected $index = 'id'; // column that needs to be treated as index column + + protected $sortOrder = 'desc'; // asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('attributes') + ->select('id') + ->addSelect('id', 'code', 'admin_name', 'type', 'is_required', 'is_unique', 'value_per_locale', 'value_per_channel'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'code', + 'label' => trans('admin::app.datagrid.code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'admin_name', + 'label' => trans('admin::app.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'type', + 'label' => trans('admin::app.type'), + 'type' => 'string', + 'sortable' => true, + 'searchable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'is_required', + 'label' => trans('admin::app.required'), + 'type' => 'boolean', + 'sortable' => true, + 'searchable' => false, + 'wrapper' => function($value) { + if ($value->is_required == 1) + return 'True'; + else + return 'False'; + } + ]); + + $this->addColumn([ + 'index' => 'is_unique', + 'label' => trans('admin::app.unique'), + 'type' => 'boolean', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->is_unique == 1) + return 'True'; + else + return 'False'; + } + ]); + + $this->addColumn([ + 'index' => 'value_per_locale', + 'label' => trans('admin::app.locale-based'), + 'type' => 'boolean', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->value_per_locale == 1) + return 'True'; + else + return 'False'; + } + ]); + + $this->addColumn([ + 'index' => 'value_per_channel', + 'label' => trans('admin::app.channel-based'), + 'type' => 'boolean', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->value_per_channel == 1) + return 'True'; + else + return 'False'; + } + ]); + } + + public function prepareActions() + { + $this->addAction([ + 'title' => 'Edit Attribute', + 'method' => 'GET', //use get for redirects only + 'route' => 'admin.catalog.attributes.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Attribute', + 'method' => 'POST', // other than get request it fires ajax and self refreshes datagrid + 'route' => 'admin.catalog.attributes.delete', + 'icon' => 'icon trash-icon' + ]); + } + + public function prepareMassActions() + { + $this->addMassAction([ + 'type' => 'delete', + 'action' => route('admin.catalog.attributes.massdelete'), + 'label' => 'Delete', + 'index' => 'admin_name', + 'method' => 'DELETE' + ]); + } +} diff --git a/packages/Webkul/Admin/src/DataGrids/AttributeFamilyDataGrid.php b/packages/Webkul/Admin/src/DataGrids/AttributeFamilyDataGrid.php new file mode 100755 index 000000000..b0d4141cb --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/AttributeFamilyDataGrid.php @@ -0,0 +1,73 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AttributeFamilyDataGrid extends DataGrid +{ + protected $index = 'id'; //the column that needs to be treated as index column + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('attribute_families')->select('id')->addSelect('id', 'code', 'name'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'code', + 'label' => trans('admin::app.code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Attribute Family', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.catalog.families.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Attribute Family', + 'method' => 'POST', // use GET request only for redirect purposes and POST for rest + 'route' => 'admin.catalog.families.delete', + // 'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'product']), + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php new file mode 100644 index 000000000..735ccf22e --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php @@ -0,0 +1,89 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CMSPageDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('cms_pages') + ->select('cms_pages.id', 'cms_page_translations.page_title', 'cms_page_translations.url_key') + ->leftJoin('cms_page_translations', function($leftJoin) { + $leftJoin->on('cms_pages.id', '=', 'cms_page_translations.cms_page_id') + ->where('cms_page_translations.locale', app()->getLocale()); + }); + + $this->addFilter('id', 'cms_pages.id'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'page_title', + 'label' => trans('admin::app.cms.pages.page-title'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'url_key', + 'label' => trans('admin::app.datagrid.url-key'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit CMSPage', + 'method' => 'GET', + 'route' => 'admin.cms.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete CMSPage', + 'method' => 'POST', + 'route' => 'admin.cms.delete', + 'icon' => 'icon trash-icon' + ]); + } + + public function prepareMassActions() + { + $this->addMassAction([ + 'type' => 'delete', + 'label' => 'Delete', + 'action' => route('admin.cms.mass-delete'), + 'method' => 'DELETE' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/CartRuleCouponDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CartRuleCouponDataGrid.php new file mode 100644 index 000000000..f4eeac150 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CartRuleCouponDataGrid.php @@ -0,0 +1,86 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CartRuleCouponDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('cart_rule_coupons') + ->addSelect('id', 'code', 'created_at', 'expired_at', 'times_used') + ->where('cart_rule_coupons.cart_rule_id', collect(request()->segments())->last()); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'code', + 'label' => trans('admin::app.datagrid.coupon-code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'created_at', + 'label' => trans('admin::app.datagrid.created-date'), + 'type' => 'datetime', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'expired_at', + 'label' => trans('admin::app.datagrid.expiration-date'), + 'type' => 'datetime', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'times_used', + 'label' => trans('admin::app.datagrid.times-used'), + 'type' => 'number', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareMassActions() + { + $this->addMassAction([ + 'type' => 'delete', + 'action' => route('admin.cart-rule-coupons.mass-delete'), + 'label' => trans('admin::app.datagrid.delete'), + 'method' => 'DELETE' + ]); + } +} diff --git a/packages/Webkul/Admin/src/DataGrids/CartRuleDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CartRuleDataGrid.php new file mode 100644 index 000000000..c6efb9517 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CartRuleDataGrid.php @@ -0,0 +1,124 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CartRuleDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('cart_rules') + ->leftJoin('cart_rule_coupons', function($leftJoin) { + $leftJoin->on('cart_rule_coupons.cart_rule_id', '=', 'cart_rules.id') + ->where('cart_rule_coupons.is_primary', 1); + }) + ->addSelect('cart_rules.id', 'name', 'cart_rule_coupons.code as coupon_code', 'status', 'starts_from', 'ends_till', 'sort_order'); + + $this->addFilter('id', 'cart_rules.id'); + + $this->addFilter('coupon_code', 'cart_rule_coupons.code'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'coupon_code', + 'label' => trans('admin::app.datagrid.coupon-code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'starts_from', + 'label' => trans('admin::app.datagrid.start'), + 'type' => 'datetime', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'ends_till', + 'label' => trans('admin::app.datagrid.end'), + 'type' => 'datetime', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'status', + 'label' => trans('admin::app.status'), + 'type' => 'boolean', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->status == 1) + return trans('admin::app.datagrid.active'); + else + return trans('admin::app.datagrid.inactive'); + } + ]); + + $this->addColumn([ + 'index' => 'sort_order', + 'label' => trans('admin::app.datagrid.priority'), + 'type' => 'number', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() + { + $this->addAction([ + 'title' => 'Edit Cart Rule', + 'method' => 'GET', + 'route' => 'admin.cart-rules.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Cart Rule', + 'method' => 'POST', + 'route' => 'admin.cart-rules.delete', + 'icon' => 'icon trash-icon' + ]); + } +} diff --git a/packages/Webkul/Admin/src/DataGrids/CatalogRuleDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CatalogRuleDataGrid.php new file mode 100644 index 000000000..e57e977a1 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CatalogRuleDataGrid.php @@ -0,0 +1,107 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CatalogRuleDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('catalog_rules') + ->addSelect('catalog_rules.id', 'name', 'status', 'starts_from', 'ends_till', 'sort_order'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'starts_from', + 'label' => trans('admin::app.datagrid.start'), + 'type' => 'datetime', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'ends_till', + 'label' => trans('admin::app.datagrid.end'), + 'type' => 'datetime', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'status', + 'label' => trans('admin::app.status'), + 'type' => 'boolean', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->status == 1) + return trans('admin::app.datagrid.active'); + else + return trans('admin::app.datagrid.inactive'); + } + ]); + + $this->addColumn([ + 'index' => 'sort_order', + 'label' => trans('admin::app.datagrid.priority'), + 'type' => 'number', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() + { + $this->addAction([ + 'title' => 'Edit Catalog Rule', + 'method' => 'GET', + 'route' => 'admin.catalog-rules.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Catalog Rule', + 'method' => 'POST', + 'route' => 'admin.catalog-rules.delete', + 'icon' => 'icon trash-icon' + ]); + } +} diff --git a/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php new file mode 100755 index 000000000..44b174a7b --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php @@ -0,0 +1,108 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CategoryDataGrid extends DataGrid +{ + protected $index = 'category_id'; //the column that needs to be treated as index column + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('categories as cat') + ->select('cat.id as category_id', 'ct.name', 'cat.position', 'cat.status', 'ct.locale', + DB::raw('COUNT(DISTINCT ' . DB::getTablePrefix() . 'pc.product_id) as count')) + ->leftJoin('category_translations as ct', function($leftJoin) { + $leftJoin->on('cat.id', '=', 'ct.category_id') + ->where('ct.locale', app()->getLocale()); + }) + ->leftJoin('product_categories as pc', 'cat.id', '=', 'pc.category_id') + ->groupBy('cat.id'); + + + $this->addFilter('category_id', 'cat.id'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'category_id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'position', + 'label' => trans('admin::app.datagrid.position'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'status', + 'label' => trans('admin::app.datagrid.status'), + 'type' => 'boolean', + 'sortable' => true, + 'searchable' => true, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->status == 1) + return 'Active'; + else + return 'Inactive'; + } + ]); + + $this->addColumn([ + 'index' => 'count', + 'label' => trans('admin::app.datagrid.no-of-products'), + 'type' => 'number', + 'sortable' => true, + 'searchable' => false, + 'filterable' => false + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Category', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.catalog.categories.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Category', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.catalog.categories.delete', + 'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'product']), + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/ChannelDataGrid.php b/packages/Webkul/Admin/src/DataGrids/ChannelDataGrid.php new file mode 100755 index 000000000..faddf7634 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/ChannelDataGrid.php @@ -0,0 +1,82 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ChannelDataGrid extends DataGrid +{ + protected $index = 'id'; //the column that needs to be treated as index column + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('channels')->addSelect('id', 'code', 'name', 'hostname'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'code', + 'label' => trans('admin::app.datagrid.code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'hostname', + 'label' => trans('admin::app.datagrid.hostname'), + 'type' => 'string', + 'sortable' => true, + 'searchable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Channel', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.channels.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Channel', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.channels.delete', + 'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'product']), + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/CouponsDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CouponsDataGrid.php new file mode 100644 index 000000000..464e1090a --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CouponsDataGrid.php @@ -0,0 +1,96 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CartRuleCouponsDataGrid extends DataGrid +{ + protected $index = 'id'; //the column that needs to be treated as index column + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('cart_rules') + ->select('id') + ->addSelect('id', 'code', 'limit', 'usage_per_customer', 'usage_throttle'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'code', + 'label' => trans('admin::app.datagrid.code'), + 'type' => 'string', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'limit', + 'label' => trans('admin::app.datagrid.limit'), + 'type' => 'string', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'limit', + 'label' => trans('admin::app.datagrid.limit'), + 'type' => 'string', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'usage_per_customer', + 'label' => trans('admin::app.datagrid.usage-per-customer'), + 'type' => 'boolean', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->end_other_rules == 1) + return 'true'; + else + return 'false'; + } + ]); + } + + public function prepareActions() + { + } + + public function prepareMassActions() + { + // $this->addMassAction([ + // 'type' => 'delete', + // 'action' => route('admin.catalog.attributes.massdelete'), + // 'label' => 'Delete', + // 'method' => 'DELETE' + // ]); + } +} diff --git a/packages/Webkul/Admin/src/DataGrids/CurrencyDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CurrencyDataGrid.php new file mode 100755 index 000000000..48810b6e8 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CurrencyDataGrid.php @@ -0,0 +1,72 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CurrencyDataGrid extends DataGrid +{ + protected $index = 'id'; //the column that needs to be treated as index column + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('currencies')->addSelect('id', 'name', 'code'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'code', + 'label' => trans('admin::app.datagrid.code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Currency', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.currencies.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Currency', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.currencies.delete', + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/CustomerDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CustomerDataGrid.php new file mode 100755 index 000000000..7345ea683 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CustomerDataGrid.php @@ -0,0 +1,181 @@ + @prashant-webkul + * @author Vivek Sharma @viveksh-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CustomerDataGrid extends DataGrid +{ + protected $index = 'customer_id'; //the column that needs to be treated as index column + + protected $sortOrder = 'desc'; //asc or desc + + protected $itemsPerPage = 10; + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('customers') + ->leftJoin('customer_groups', 'customers.customer_group_id', '=', 'customer_groups.id') + ->addSelect('customers.id as customer_id', 'customers.email', 'customer_groups.name', 'customers.phone', 'customers.gender', 'status') + ->addSelect(DB::raw('CONCAT(' . DB::getTablePrefix() . 'customers.first_name, " ", ' . DB::getTablePrefix() . 'customers.last_name) as full_name')); + + $this->addFilter('customer_id', 'customers.id'); + $this->addFilter('full_name', DB::raw('CONCAT(' . DB::getTablePrefix() . 'customers.first_name, " ", ' . DB::getTablePrefix() . 'customers.last_name)')); + $this->addFilter('phone', 'customers.phone'); + $this->addFilter('gender', 'customers.gender'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'customer_id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'full_name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'email', + 'label' => trans('admin::app.datagrid.email'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.group'), + 'type' => 'string', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'phone', + 'label' => trans('admin::app.datagrid.phone'), + 'type' => 'number', + 'searchable' => true, + 'sortable' => true, + 'filterable' => false, + 'closure' => true, + 'wrapper' => function ($row) { + if (! $row->phone) + return '-'; + else + return $row->phone; + } + ]); + + $this->addColumn([ + 'index' => 'gender', + 'label' => trans('admin::app.datagrid.gender'), + 'type' => 'string', + 'searchable' => false, + 'sortable' => true, + 'filterable' => false, + 'closure' => true, + 'wrapper' => function ($row) { + if (! $row->gender) + return '-'; + else + return $row->gender; + } + ]); + + $this->addColumn([ + 'index' => 'status', + 'label' => trans('admin::app.datagrid.status'), + 'type' => 'boolean', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true, + 'closure' => true, + 'wrapper' => function ($row) { + if ($row->status == 1) { + return 'Activated'; + } else { + return 'Blocked'; + } + } + ]); + } + + public function prepareActions() { + $this->addAction([ + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.customer.edit', + 'icon' => 'icon pencil-lg-icon', + 'title' => trans('admin::app.customers.customers.edit-help-title') + ]); + + $this->addAction([ + 'type' => 'Edit', + 'method' => 'GET', //use post only for redirects only + 'route' => 'admin.customer.addresses.index', + 'icon' => 'icon list-icon' + ]); + + $this->addAction([ + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.customer.delete', + 'icon' => 'icon trash-icon', + 'title' => trans('admin::app.customers.customers.delete-help-title') + ]); + + $this->addAction([ + 'method' => 'GET', + 'route' => 'admin.customer.note.create', + 'icon' => 'icon note-icon', + 'title' => trans('admin::app.customers.note.help-title') + ]); + } + + /** + * Customer Mass Action To Delete And Change Their + */ + public function prepareMassActions() + { + $this->addMassAction([ + 'type' => 'delete', + 'label' => 'Delete', + 'action' => route('admin.customer.mass-delete'), + 'method' => 'PUT', + ]); + + $this->addMassAction([ + 'type' => 'update', + 'label' => 'Update Status', + 'action' => route('admin.customer.mass-update'), + 'method' => 'PUT', + 'options' => [ + 'Active' => 1, + 'Inactive' => 0 + ] + ]); + + $this->enableMassAction = true; + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/CustomerGroupDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CustomerGroupDataGrid.php new file mode 100755 index 000000000..4f3698690 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CustomerGroupDataGrid.php @@ -0,0 +1,72 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CustomerGroupDataGrid extends DataGrid +{ + protected $index = 'id'; //the column that needs to be treated as index column + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('customer_groups')->addSelect('id', 'code', 'name'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => 'ID', + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'code', + 'label' => 'Code', + 'type' => 'string', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => 'Name', + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Customer Group', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.groups.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Customer Group', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.groups.delete', + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/CustomerReviewDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CustomerReviewDataGrid.php new file mode 100755 index 000000000..6fe1cc2f5 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/CustomerReviewDataGrid.php @@ -0,0 +1,129 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CustomerReviewDataGrid extends DataGrid +{ + protected $index = 'product_review_id'; //column that needs to be treated as index column + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('product_reviews as pr') + ->leftjoin('product_flat as pf', 'pr.product_id', '=', 'pf.product_id') + ->select('pr.id as product_review_id', 'pr.title', 'pr.comment', 'pf.name as product_name', 'pr.status as product_review_status') + ->where('channel', core()->getCurrentChannelCode()) + ->where('locale', app()->getLocale()); + + $this->addFilter('product_review_id', 'pr.id'); + $this->addFilter('product_review_status', 'pr.status'); + $this->addFilter('product_name', 'pf.name'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'product_review_id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'title', + 'label' => trans('admin::app.datagrid.title'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'comment', + 'label' => trans('admin::app.datagrid.comment'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'product_name', + 'label' => trans('admin::app.datagrid.product-name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => false + ]); + + $this->addColumn([ + 'index' => 'product_review_status', + 'label' => trans('admin::app.datagrid.status'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'width' => '100px', + 'filterable' => true, + 'closure' => true, + 'wrapper' => function ($value) { + if ($value->product_review_status == 'approved') + return 'Approved'; + else if ($value->product_review_status == "pending") + return 'Pending'; + else if ($value->product_review_status == "disapproved") + return 'Disapproved'; + }, + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Customer Review', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.customer.review.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Customer Review', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.customer.review.delete', + 'icon' => 'icon trash-icon' + ]); + } + + public function prepareMassActions() { + $this->addMassAction([ + 'type' => 'delete', + 'label' => 'Delete', + 'action' => route('admin.customer.review.massdelete'), + 'method' => 'DELETE' + ]); + + $this->addMassAction([ + 'type' => 'update', + 'label' => 'Update Status', + 'action' => route('admin.customer.review.massupdate'), + 'method' => 'PUT', + 'options' => [ + 'Pending' => 0, + 'Approve' => 1, + 'Disapprove' => 2 + ] + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/ExchangeRatesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/ExchangeRatesDataGrid.php new file mode 100755 index 000000000..3357b34fc --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/ExchangeRatesDataGrid.php @@ -0,0 +1,75 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ExchangeRatesDataGrid extends DataGrid +{ + protected $index = 'currency_exch_id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('currency_exchange_rates as cer')->addSelect('cer.id as currency_exch_id', 'curr.name', 'cer.rate')->leftJoin('currencies as curr', 'cer.target_currency', '=', 'curr.id'); + + $this->addFilter('currency_exch_id', 'cer.id'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'currency_exch_id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.currency-name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'rate', + 'label' => trans('admin::app.datagrid.exch-rate'), + 'type' => 'number', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Exchange Rate', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.exchange_rates.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Exchange Rate', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.exchange_rates.delete', + 'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'Exchange Rate']), + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/InventorySourcesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/InventorySourcesDataGrid.php new file mode 100755 index 000000000..018eb784a --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/InventorySourcesDataGrid.php @@ -0,0 +1,97 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class InventorySourcesDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('inventory_sources')->addSelect('id', 'code', 'name', 'priority', 'status'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'code', + 'label' => trans('admin::app.datagrid.code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'priority', + 'label' => trans('admin::app.datagrid.priority'), + 'type' => 'number', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'status', + 'label' => trans('admin::app.datagrid.status'), + 'type' => 'boolean', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->status == 1) + return 'Active'; + else + return 'Inactive'; + } + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Inventory Source', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.inventory_sources.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Inventory Source', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.inventory_sources.delete', + 'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'Exchange Rate']), + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/LocalesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/LocalesDataGrid.php new file mode 100755 index 000000000..3a779b910 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/LocalesDataGrid.php @@ -0,0 +1,82 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class LocalesDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('locales')->addSelect('id', 'code', 'name', 'direction'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'code', + 'label' => trans('admin::app.datagrid.code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'direction', + 'label' => trans('admin::app.datagrid.direction'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Locales', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.locales.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Locales', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.locales.delete', + 'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'Exchange Rate']), + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/NewsLetterDataGrid.php b/packages/Webkul/Admin/src/DataGrids/NewsLetterDataGrid.php new file mode 100755 index 000000000..acf76450c --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/NewsLetterDataGrid.php @@ -0,0 +1,79 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class NewsLetterDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('subscribers_list')->addSelect('id', 'is_subscribed', 'email'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'is_subscribed', + 'label' => trans('admin::app.datagrid.subscribed'), + 'type' => 'string', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->is_subscribed == 1) + return 'True'; + else + return 'False'; + } + ]); + + $this->addColumn([ + 'index' => 'email', + 'label' => trans('admin::app.datagrid.email'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit News Letter', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.customers.subscribers.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete News Letter', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.customers.subscribers.delete', + 'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'Exchange Rate']), + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php new file mode 100755 index 000000000..3e8255453 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php @@ -0,0 +1,143 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class OrderDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('orders') + ->leftJoin('order_address as order_address_shipping', function($leftJoin) { + $leftJoin->on('order_address_shipping.order_id', '=', 'orders.id') + ->where('order_address_shipping.address_type', 'shipping'); + }) + ->leftJoin('order_address as order_address_billing', function($leftJoin) { + $leftJoin->on('order_address_billing.order_id', '=', 'orders.id') + ->where('order_address_billing.address_type', 'billing'); + }) + ->addSelect('orders.id','orders.increment_id', 'orders.base_sub_total', 'orders.base_grand_total', 'orders.created_at', 'channel_name', 'status') + ->addSelect(DB::raw('CONCAT(' . DB::getTablePrefix() . 'order_address_billing.first_name, " ", ' . DB::getTablePrefix() . 'order_address_billing.last_name) as billed_to')) + ->addSelect(DB::raw('CONCAT(' . DB::getTablePrefix() . 'order_address_shipping.first_name, " ", ' . DB::getTablePrefix() . 'order_address_shipping.last_name) as shipped_to')); + + $this->addFilter('billed_to', DB::raw('CONCAT(' . DB::getTablePrefix() . 'order_address_billing.first_name, " ", ' . DB::getTablePrefix() . 'order_address_billing.last_name)')); + $this->addFilter('shipped_to', DB::raw('CONCAT(' . DB::getTablePrefix() . 'order_address_shipping.first_name, " ", ' . DB::getTablePrefix() . 'order_address_shipping.last_name)')); + $this->addFilter('increment_id', 'orders.increment_id'); + $this->addFilter('created_at', 'orders.created_at'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'increment_id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'string', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'base_sub_total', + 'label' => trans('admin::app.datagrid.sub-total'), + 'type' => 'price', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'base_grand_total', + 'label' => trans('admin::app.datagrid.grand-total'), + 'type' => 'price', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'created_at', + 'label' => trans('admin::app.datagrid.order-date'), + 'type' => 'datetime', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'channel_name', + 'label' => trans('admin::app.datagrid.channel-name'), + 'type' => 'string', + 'sortable' => true, + 'searchable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'status', + 'label' => trans('admin::app.datagrid.status'), + 'type' => 'string', + 'sortable' => true, + 'searchable' => true, + 'closure' => true, + 'filterable' => true, + 'wrapper' => function ($value) { + if ($value->status == 'processing') + return 'Processing'; + else if ($value->status == 'completed') + return 'Completed'; + else if ($value->status == "canceled") + return 'Canceled'; + else if ($value->status == "closed") + return 'Closed'; + else if ($value->status == "pending") + return 'Pending'; + else if ($value->status == "pending_payment") + return 'Pending Payment'; + else if ($value->status == "fraud") + return 'Fraud'; + } + ]); + + $this->addColumn([ + 'index' => 'billed_to', + 'label' => trans('admin::app.datagrid.billed-to'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'shipped_to', + 'label' => trans('admin::app.datagrid.shipped-to'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Order View', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.sales.orders.view', + 'icon' => 'icon eye-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php new file mode 100755 index 000000000..06a218085 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php @@ -0,0 +1,81 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class OrderInvoicesDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('invoices') + ->leftJoin('orders as ors', 'invoices.order_id', '=', 'ors.id') + ->select('invoices.id as id', 'ors.increment_id as order_id', 'invoices.state as state', 'invoices.base_grand_total as base_grand_total', 'invoices.created_at as created_at'); + + $this->addFilter('id', 'invoices.id'); + $this->addFilter('order_id', 'ors.increment_id'); + $this->addFilter('base_grand_total', 'invoices.base_grand_total'); + $this->addFilter('created_at', 'invoices.created_at'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'order_id', + 'label' => trans('admin::app.datagrid.order-id'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'base_grand_total', + 'label' => trans('admin::app.datagrid.grand-total'), + 'type' => 'price', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'created_at', + 'label' => trans('admin::app.datagrid.invoice-date'), + 'type' => 'datetime', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Order Invoice View', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.sales.invoices.view', + 'icon' => 'icon eye-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/OrderRefundDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderRefundDataGrid.php new file mode 100755 index 000000000..787b1512e --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/OrderRefundDataGrid.php @@ -0,0 +1,97 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class OrderRefundDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('refunds') + ->select('refunds.id', 'orders.increment_id', 'refunds.state', 'refunds.base_grand_total', 'refunds.created_at') + ->leftJoin('orders', 'refunds.order_id', '=', 'orders.id') + ->leftJoin('order_address as order_address_billing', function($leftJoin) { + $leftJoin->on('order_address_billing.order_id', '=', 'orders.id') + ->where('order_address_billing.address_type', 'billing'); + }) + ->addSelect(DB::raw('CONCAT(' . DB::getTablePrefix() . 'order_address_billing.first_name, " ", ' . DB::getTablePrefix() . 'order_address_billing.last_name) as billed_to')); + + $this->addFilter('billed_to', DB::raw('CONCAT(' . DB::getTablePrefix() . 'order_address_billing.first_name, " ", ' . DB::getTablePrefix() . 'order_address_billing.last_name)')); + $this->addFilter('id', 'refunds.id'); + $this->addFilter('increment_id', 'orders.increment_id'); + $this->addFilter('state', 'refunds.state'); + $this->addFilter('base_grand_total', 'refunds.base_grand_total'); + $this->addFilter('created_at', 'refunds.created_at'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'increment_id', + 'label' => trans('admin::app.datagrid.order-id'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'base_grand_total', + 'label' => trans('admin::app.datagrid.refunded'), + 'type' => 'price', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'billed_to', + 'label' => trans('admin::app.datagrid.billed-to'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'created_at', + 'label' => trans('admin::app.datagrid.refund-date'), + 'type' => 'datetime', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Order Refund View', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.sales.refunds.view', + 'icon' => 'icon eye-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/OrderShipmentsDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderShipmentsDataGrid.php new file mode 100755 index 000000000..a254af897 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/OrderShipmentsDataGrid.php @@ -0,0 +1,118 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class OrderShipmentsDataGrid extends DataGrid +{ + protected $index = 'shipment_id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('shipments') + ->leftJoin('order_address as order_address_shipping', function($leftJoin) { + $leftJoin->on('order_address_shipping.order_id', '=', 'shipments.order_id') + ->where('order_address_shipping.address_type', 'shipping'); + }) + ->leftJoin('orders as ors', 'shipments.order_id', '=', 'ors.id') + ->leftJoin('inventory_sources as is', 'shipments.inventory_source_id', '=', 'is.id') + ->select('shipments.id as shipment_id', 'ors.increment_id as shipment_order_id', 'shipments.total_qty as shipment_total_qty', 'ors.created_at as order_date', 'shipments.created_at as shipment_created_at') + ->addSelect(DB::raw('CONCAT(' . DB::getTablePrefix() . 'order_address_shipping.first_name, " ", ' . DB::getTablePrefix() . 'order_address_shipping.last_name) as shipped_to')) + ->selectRaw('IF(' . DB::getTablePrefix() . 'shipments.inventory_source_id IS NOT NULL,' . DB::getTablePrefix() . 'is.name, ' . DB::getTablePrefix() . 'shipments.inventory_source_name) as inventory_source_name'); + + $this->addFilter('shipment_id', 'shipments.id'); + $this->addFilter('shipment_order_id', 'ors.increment_id'); + $this->addFilter('shipment_total_qty', 'shipments.total_qty'); + $this->addFilter('inventory_source_name', DB::raw('IF(' . DB::getTablePrefix() . 'shipments.inventory_source_id IS NOT NULL,' . DB::getTablePrefix() . 'is.name, ' . DB::getTablePrefix() . 'shipments.inventory_source_name)')); + $this->addFilter('order_date', 'ors.created_at'); + $this->addFilter('shipment_created_at', 'shipments.created_at'); + $this->addFilter('shipped_to', DB::raw('CONCAT(' . DB::getTablePrefix() . 'order_address_shipping.first_name, " ", ' . DB::getTablePrefix() . 'order_address_shipping.last_name)')); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'shipment_id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'shipment_order_id', + 'label' => trans('admin::app.datagrid.order-id'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'shipment_total_qty', + 'label' => trans('admin::app.datagrid.total-qty'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'inventory_source_name', + 'label' => trans('admin::app.datagrid.inventory-source'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'order_date', + 'label' => trans('admin::app.datagrid.order-date'), + 'type' => 'datetime', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'shipment_created_at', + 'label' => trans('admin::app.datagrid.shipment-date'), + 'type' => 'datetime', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'shipped_to', + 'label' => trans('admin::app.datagrid.shipment-to'), + 'type' => 'string', + 'sortable' => true, + 'searchable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Order Shipment View', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.sales.shipments.view', + 'icon' => 'icon eye-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php b/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php new file mode 100644 index 000000000..0e78f1f20 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php @@ -0,0 +1,173 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductDataGrid extends DataGrid +{ + protected $sortOrder = 'desc'; //asc or desc + + protected $index = 'product_id'; + + protected $itemsPerPage = 10; + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('product_flat') + ->leftJoin('products', 'product_flat.product_id', '=', 'products.id') + ->leftJoin('attribute_families', 'products.attribute_family_id', '=', 'attribute_families.id') + ->leftJoin('product_inventories', 'product_flat.product_id', '=', 'product_inventories.product_id') + ->select('product_flat.product_id as product_id', 'product_flat.sku as product_sku', 'product_flat.name as product_name', 'products.type as product_type', 'product_flat.status', 'product_flat.price', 'attribute_families.name as attribute_family', DB::raw('SUM(' . DB::getTablePrefix() . 'product_inventories.qty) as quantity')) + ->where('channel', core()->getCurrentChannelCode()) + ->where('locale', app()->getLocale()) + ->groupBy('product_flat.product_id'); + + $this->addFilter('product_id', 'product_flat.product_id'); + $this->addFilter('product_name', 'product_flat.name'); + $this->addFilter('product_sku', 'product_flat.sku'); + $this->addFilter('status', 'product_flat.status'); + $this->addFilter('product_type', 'products.type'); + $this->addFilter('attribute_family', 'attribute_families.name'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'product_id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'product_sku', + 'label' => trans('admin::app.datagrid.sku'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'product_name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'attribute_family', + 'label' => trans('admin::app.datagrid.attribute-family'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'product_type', + 'label' => trans('admin::app.datagrid.type'), + 'type' => 'string', + 'sortable' => true, + 'searchable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'status', + 'label' => trans('admin::app.datagrid.status'), + 'type' => 'boolean', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->status == 1) + return 'Active'; + else + return 'Inactive'; + } + ]); + + $this->addColumn([ + 'index' => 'price', + 'label' => trans('admin::app.datagrid.price'), + 'type' => 'price', + 'sortable' => true, + 'searchable' => false, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'quantity', + 'label' => trans('admin::app.datagrid.qty'), + 'type' => 'number', + 'sortable' => true, + 'searchable' => false, + 'filterable' => false, + 'wrapper' => function($value) { + if (is_null($value->quantity)) + return 0; + else + return $value->quantity; + } + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Product', + 'condition' => function() { + return true; + }, + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.catalog.products.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Product', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.catalog.products.delete', + 'confirm_text' => trans('ui::app.datagrid.massaction.delete', ['resource' => 'product']), + 'icon' => 'icon trash-icon' + ]); + + $this->enableAction = true; + } + + public function prepareMassActions() { + $this->addMassAction([ + 'type' => 'delete', + 'label' => 'Delete', + 'action' => route('admin.catalog.products.massdelete'), + 'method' => 'DELETE' + ]); + + $this->addMassAction([ + 'type' => 'update', + 'label' => 'Update Status', + 'action' => route('admin.catalog.products.massupdate'), + 'method' => 'PUT', + 'options' => [ + 'Active' => 1, + 'Inactive' => 0 + ] + ]); + + $this->enableMassAction = true; + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/RolesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/RolesDataGrid.php new file mode 100755 index 000000000..1dde27f2e --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/RolesDataGrid.php @@ -0,0 +1,73 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class RolesDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('roles')->addSelect('id', 'name', 'permission_type'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'width' => '40px', + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'permission_type', + 'label' => trans('admin::app.datagrid.permission-type'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.roles.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.roles.delete', + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/SliderDataGrid.php b/packages/Webkul/Admin/src/DataGrids/SliderDataGrid.php new file mode 100755 index 000000000..830bd003c --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/SliderDataGrid.php @@ -0,0 +1,76 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class SliderDataGrid extends DataGrid +{ + protected $index = 'slider_id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('sliders as sl')->addSelect('sl.id as slider_id', 'sl.title', 'ch.name')->leftJoin('channels as ch', 'sl.channel_id', '=', + 'ch.id'); + + $this->addFilter('slider_id', 'sl.id'); + $this->addFilter('channel_name', 'ch.name'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'slider_id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'title', + 'label' => trans('admin::app.datagrid.title'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.channel-name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Slider', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.sliders.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Slider', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.sliders.delete', + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/TaxCategoryDataGrid.php b/packages/Webkul/Admin/src/DataGrids/TaxCategoryDataGrid.php new file mode 100755 index 000000000..948fc6372 --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/TaxCategoryDataGrid.php @@ -0,0 +1,72 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class TaxCategoryDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('tax_categories')->addSelect('id', 'name', 'code'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'code', + 'label' => trans('admin::app.datagrid.code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Tax Category', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.tax-categories.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Tax Category', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.tax-categories.delete', + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/TaxRateDataGrid.php b/packages/Webkul/Admin/src/DataGrids/TaxRateDataGrid.php new file mode 100755 index 000000000..8812bc2ba --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/TaxRateDataGrid.php @@ -0,0 +1,123 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class TaxRateDataGrid extends DataGrid +{ + protected $index = 'id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('tax_rates')->addSelect('id', 'identifier', 'state', 'country', 'zip_code', 'zip_from', 'zip_to', 'tax_rate'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'identifier', + 'label' => trans('admin::app.datagrid.identifier'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'state', + 'label' => trans('admin::app.datagrid.state'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + 'wrapper' => function($value) { + if (empty($value->state)) + return '*'; + else + return $value->state; + } + ]); + + $this->addColumn([ + 'index' => 'country', + 'label' => trans('admin::app.datagrid.country'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'zip_code', + 'label' => trans('admin::app.configuration.tax-rates.zip_code'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'zip_from', + 'label' => trans('admin::app.configuration.tax-rates.zip_from'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'zip_to', + 'label' => trans('admin::app.configuration.tax-rates.zip_to'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'tax_rate', + 'label' => trans('admin::app.datagrid.tax-rate'), + 'type' => 'number', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit Tax Rate', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.tax-rates.store', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete Tax Rate', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.tax-rates.delete', + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/UserDataGrid.php b/packages/Webkul/Admin/src/DataGrids/UserDataGrid.php new file mode 100755 index 000000000..e145de46a --- /dev/null +++ b/packages/Webkul/Admin/src/DataGrids/UserDataGrid.php @@ -0,0 +1,101 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class UserDataGrid extends DataGrid +{ + protected $index = 'user_id'; + + protected $sortOrder = 'desc'; //asc or desc + + public function prepareQueryBuilder() + { + $queryBuilder = DB::table('admins as u')->addSelect('u.id as user_id', 'u.name as user_name', 'u.status', 'u.email', 'ro.name as role_name')->leftJoin('roles as ro', 'u.role_id', '=', 'ro.id'); + + $this->addFilter('user_id', 'u.id'); + $this->addFilter('user_name', 'u.name'); + $this->addFilter('role_name', 'ro.name'); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'user_id', + 'label' => trans('admin::app.datagrid.id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'user_name', + 'label' => trans('admin::app.datagrid.name'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'status', + 'label' => trans('admin::app.datagrid.status'), + 'type' => 'boolean', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + 'wrapper' => function($value) { + if ($value->status == 1) { + return 'Active'; + } else { + return 'Inactive'; + } + } + ]); + + $this->addColumn([ + 'index' => 'email', + 'label' => trans('admin::app.datagrid.email'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + + $this->addColumn([ + 'index' => 'role_name', + 'label' => trans('admin::app.datagrid.role'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); + } + + public function prepareActions() { + $this->addAction([ + 'title' => 'Edit User', + 'method' => 'GET', // use GET request only for redirect purposes + 'route' => 'admin.users.edit', + 'icon' => 'icon pencil-lg-icon' + ]); + + $this->addAction([ + 'title' => 'Delete User', + 'method' => 'POST', // use GET request only for redirect purposes + 'route' => 'admin.users.delete', + 'icon' => 'icon trash-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Database/Seeders/DatabaseSeeder.php b/packages/Webkul/Admin/src/Database/Seeders/DatabaseSeeder.php new file mode 100755 index 000000000..dbdaed761 --- /dev/null +++ b/packages/Webkul/Admin/src/Database/Seeders/DatabaseSeeder.php @@ -0,0 +1,31 @@ +call(CategorySeeder::class); + $this->call(InventorySeeder::class); + $this->call(CoreSeeder::class); + $this->call(AttributeSeeder::class); + $this->call(UserSeeder::class); + $this->call(CustomerSeeder::class); + $this->call(CMSSeeder::class); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Exceptions/Handler.php b/packages/Webkul/Admin/src/Exceptions/Handler.php new file mode 100755 index 000000000..cfbf7c63d --- /dev/null +++ b/packages/Webkul/Admin/src/Exceptions/Handler.php @@ -0,0 +1,79 @@ + 'Resource not found', + 403 => '403 forbidden Error', + 401 => 'Unauthenticated', + 500 => '500 Internal Server Error', + ]; + + /** + * Render an exception into an HTTP response. + * + * @param \Illuminate\Http\Request $request + * @param \Exception $exception + * @return \Illuminate\Http\Response + */ + public function render($request, Exception $exception) + { + $path = $this->isAdminUri() ? 'admin' : 'shop'; + + if ($exception instanceof HttpException) { + $statusCode = in_array($exception->getStatusCode(), [401, 403, 404, 503]) ? $exception->getStatusCode() : 500; + + return $this->response($path, $statusCode); + } else if ($exception instanceof ModelNotFoundException) { + return $this->response($path, 404); + } else if ($exception instanceof PDOException) { + return $this->response($path, 500); + } + + return parent::render($request, $exception); + } + + /** + * Convert an authentication exception into a response. + * + * @param \Illuminate\Http\Request $request + * @param \Illuminate\Auth\AuthenticationException $exception + * @return \Illuminate\Http\Response + */ + protected function unauthenticated($request, AuthenticationException $exception) + { + if ($request->expectsJson()) { + return response()->json(['error' => $this->jsonErrorMessages[401]], 401); + } + + return redirect()->guest(route('auth.login')); + } + + private function isAdminUri() + { + return strpos(\Illuminate\Support\Facades\Request::path(), 'admin') !== false ? true : false; + } + + private function response($path, $statusCode) + { + if (request()->expectsJson()) { + return response()->json([ + 'error' => isset($this->jsonErrorMessages[$statusCode]) + ? $this->jsonErrorMessages[$statusCode] + : 'Something went wrong, please try again later.' + ], $statusCode); + } + + return response()->view("{$path}::errors.{$statusCode}", [], $statusCode); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Exports/DataGridExport.php b/packages/Webkul/Admin/src/Exports/DataGridExport.php new file mode 100755 index 000000000..9b6289b1e --- /dev/null +++ b/packages/Webkul/Admin/src/Exports/DataGridExport.php @@ -0,0 +1,56 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class DataGridExport implements FromView, ShouldAutoSize +{ + + /** + * DataGrid instance + * + * @var mixed + */ + protected $gridData = array(); + + /** + * Create a new instance. + * + * @param mixed DataGrid + * @return void + */ + public function __construct($gridData) + { + $this->gridData = $gridData; + } + + /** + * function to create a blade view for export. + * + */ + public function view(): View + { + $columns = array(); + + foreach($this->gridData as $key => $gridData) { + $columns = array_keys((array) $gridData); + + break; + } + + return view('admin::export.temp', [ + 'columns' => $columns, + 'records' => $this->gridData, + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php new file mode 100755 index 000000000..d5672cbe7 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php @@ -0,0 +1,165 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ConfigurationController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + protected $_config; + + /** + * CoreConfigRepository object + * + * @var array + */ + protected $coreConfigRepository; + + /** + * + * @var array + */ + protected $configTree; + + /** + * Create a new controller instance. + * + * @param \Webkul\Core\Repositories\CoreConfigRepository $coreConfigRepository + * @return void + */ + public function __construct(CoreConfigRepository $coreConfigRepository) + { + $this->middleware('admin'); + + $this->coreConfigRepository = $coreConfigRepository; + + $this->_config = request('_config'); + + $this->prepareConfigTree(); + + } + + /** + * Prepares config tree + * + * @return void + */ + public function prepareConfigTree() + { + $tree = Tree::create(); + + foreach (config('core') as $item) { + $tree->add($item); + } + + $tree->items = core()->sortItems($tree->items); + + $this->configTree = $tree; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + $slugs = $this->getDefaultConfigSlugs(); + + if (count($slugs)) { + return redirect()->route('admin.configuration.index', $slugs); + } + + return view($this->_config['view'], ['config' => $this->configTree]); + } + + /** + * Returns slugs + * + * @return array + */ + public function getDefaultConfigSlugs() + { + if (! request()->route('slug')) { + $firstItem = current($this->configTree->items); + $secondItem = current($firstItem['children']); + + return $this->getSlugs($secondItem); + } + + if (! request()->route('slug2')) { + $secondItem = current($this->configTree->items[request()->route('slug')]['children']); + + return $this->getSlugs($secondItem); + } + + return []; + } + + /** + * Store a newly created resource in storage. + * + * @param \Webkul\Admin\Http\Requests\ConfigurationForm $request + * @return \Illuminate\Http\Response + */ + public function store() + { + Event::dispatch('core.configuration.save.before'); + + if (request()->has('general.design.admin_logo.logo_image') && ! request()->input('general.design.admin_logo.logo_image.delete')) { + $this->validate(request(), [ + 'general.design.admin_logo.logo_image' => 'required|mimes:jpeg,bmp,png,jpg' + ]); + } + + $this->coreConfigRepository->create(request()->all()); + + Event::dispatch('core.configuration.save.after'); + + session()->flash('success', trans('admin::app.configuration.save-message')); + + return redirect()->back(); + } + + /** + * download the file for the specified resource. + * + * @return \Illuminate\Http\Response + */ + public function download() + { + $path = request()->route()->parameters()['path']; + + $fileName = 'configuration/'. $path; + + $config = $this->coreConfigRepository->findOneByField('value', $fileName); + + return Storage::download($config['value']); + } + + /** + * @param $secondItem + * + * @return array + */ + private function getSlugs($secondItem): array + { + $temp = explode('.', $secondItem['key']); + + return ['slug' => current($temp), 'slug2' => end($temp)]; + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/Controller.php b/packages/Webkul/Admin/src/Http/Controllers/Controller.php new file mode 100755 index 000000000..7be383568 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/Controller.php @@ -0,0 +1,23 @@ +route('admin.session.create'); + } +} diff --git a/packages/Webkul/Admin/src/Http/Controllers/Customer/AddressController.php b/packages/Webkul/Admin/src/Http/Controllers/Customer/AddressController.php new file mode 100644 index 000000000..2f89fa8d6 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/Customer/AddressController.php @@ -0,0 +1,189 @@ + + * @copyright 2019 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AddressController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Customer Repository object + * + * @var object + */ + protected $customer; + + /** + * CustomerAddress Repository object + * + * @var object + */ + protected $customerAddress; + + /** + * Create a new controller instance. + * + * @param Webkul\Customer\Repositories\CustomerAddressRepository $customerAddress + * @return void + */ + public function __construct( + Customer $customer, + CustomerAddress $customerAddress + ) + { + $this->customer = $customer; + + $this->customerAddress = $customerAddress; + + $this->_config = request('_config'); + } + + /** + * Method to populate the seller order page which will be populated. + * + * @return Mixed + */ + public function index($id) + { + $customer = $this->customer->find($id); + + return view($this->_config['view'], compact('customer')); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create($id) + { + $customer = $this->customer->find($id); + + return view($this->_config['view'], compact('customer')); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + request()->merge(['address1' => implode(PHP_EOL, array_filter(request()->input('address1')))]); + + $data = collect(request()->input())->except('_token')->toArray(); + + $this->validate(request(), [ + 'address1' => 'string|required', + 'country' => 'string|required', + 'state' => 'string|required', + 'city' => 'string|required', + 'postcode' => 'required', + 'phone' => 'required' + ]); + + if ( $this->customerAddress->create($data) ) { + session()->flash('success', trans('admin::app.customers.addresses.success-create')); + + return redirect()->route('admin.customer.addresses.index', ['id' => $data['customer_id']]); + } else { + session()->flash('success', trans('admin::app.customers.addresses.error-create')); + + return redirect()->back(); + } + } + + /** + * Display a listing of the resource. + * + * @return Mixed + */ + public function edit($id) + { + $address = $this->customerAddress->find($id); + + return view($this->_config['view'], compact('address')); + } + + /** + * Edit's the premade resource of customer called + * Address. + * + * @return redirect + */ + public function update($id) + { + request()->merge(['address1' => implode(PHP_EOL, array_filter(request()->input('address1')))]); + + $this->validate(request(), [ + 'address1' => 'string|required', + 'country' => 'string|required', + 'state' => 'string|required', + 'city' => 'string|required', + 'postcode' => 'required', + 'phone' => 'required' + ]); + + $data = collect(request()->input())->except('_token')->toArray(); + + $address = $this->customerAddress->find($id); + + if ( $address ) { + + $this->customerAddress->update($data, $id); + + session()->flash('success', trans('admin::app.customers.addresses.success-update')); + + return redirect()->route('admin.customer.addresses.index', ['id' => $address->customer_id]); + } + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $this->customerAddress->delete($id); + + session()->flash('success', trans('admin::app.customers.addresses.success-delete')); + + return redirect()->back(); + } + + /** + * Mass Delete the customer's addresses + * + * @return response + */ + public function massDestroy($id) + { + $addressIds = explode(',', request()->input('indexes')); + + foreach ($addressIds as $addressId) { + $this->customerAddress->delete($addressId); + } + + session()->flash('success', trans('admin::app.customers.addresses.success-mass-delete')); + + return redirect()->route($this->_config['redirect'], ['id' => $id]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php b/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php new file mode 100755 index 000000000..5c9930e84 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php @@ -0,0 +1,276 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CustomerController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * CustomerRepository object + * + * @var array + */ + protected $customerRepository; + + /** + * CustomerGroupRepository object + * + * @var array + */ + protected $customerGroupRepository; + + /** + * ChannelRepository object + * + * @var array + */ + protected $channelRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Customer\Repositories\CustomerRepository $customerRepository + * @param \Webkul\Customer\Repositories\CustomerGroupRepository $customerGroupRepository + * @param \Webkul\Core\Repositories\ChannelRepository $channelRepository + */ + public function __construct( + CustomerRepository $customerRepository, + CustomerGroupRepository $customerGroupRepository, + ChannelRepository $channelRepository + ) + { + $this->_config = request('_config'); + + $this->middleware('admin'); + + $this->customerRepository = $customerRepository; + + $this->customerGroupRepository = $customerGroupRepository; + + $this->channelRepository = $channelRepository; + + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + $customerGroup = $this->customerGroupRepository->findWhere([['code', '<>', 'guest']]); + + $channelName = $this->channelRepository->all(); + + return view($this->_config['view'], compact('customerGroup','channelName')); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'first_name' => 'string|required', + 'last_name' => 'string|required', + 'gender' => 'required', + 'email' => 'required|unique:customers,email', + 'date_of_birth' => 'date|before:today' + ]); + + $data = request()->all(); + + $password = rand(100000,10000000); + + $data['password'] = bcrypt($password); + + $data['is_verified'] = 1; + + $customer = $this->customerRepository->create($data); + + try { + Mail::queue(new NewCustomerNotification($customer, $password)); + } catch (\Exception $e) { + + } + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Customer'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $customer = $this->customerRepository->findOrFail($id); + + $customerGroup = $this->customerGroupRepository->findWhere([['code', '<>', 'guest']]); + + $channelName = $this->channelRepository->all(); + + return view($this->_config['view'], compact('customer', 'customerGroup', 'channelName')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $this->validate(request(), [ + 'first_name' => 'string|required', + 'last_name' => 'string|required', + 'gender' => 'required', + 'email' => 'required|unique:customers,email,'. $id, + 'date_of_birth' => 'date|before:today' + ]); + + $this->customerRepository->update(request()->all(), $id); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Customer'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $customer = $this->customerRepository->findorFail($id); + + try { + $this->customerRepository->delete($id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Customer'])); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Customer'])); + } + + return response()->json(['message' => false], 400); + } + + /** + * To load the note taking screen for the customers + * + * @return \Illuminate\View\View + */ + public function createNote($id) + { + $customer = $this->customerRepository->find($id); + + return view($this->_config['view'])->with('customer', $customer); + } + + /** + * To store the response of the note in storage + * + * @return redirect + */ + public function storeNote() + { + $this->validate(request(), [ + 'notes' => 'string|nullable' + ]); + + $customer = $this->customerRepository->find(request()->input('_customer')); + + $noteTaken = $customer->update([ + 'notes' => request()->input('notes') + ]); + + if ($noteTaken) { + session()->flash('success', 'Note taken'); + } else { + session()->flash('error', 'Note cannot be taken'); + } + + return redirect()->route($this->_config['redirect']); + } + + /** + * To mass update the customer + * + * @return redirect + */ + public function massUpdate() + { + $customerIds = explode(',', request()->input('indexes')); + $updateOption = request()->input('update-options'); + + foreach ($customerIds as $customerId) { + $customer = $this->customerRepository->find($customerId); + + $customer->update([ + 'status' => $updateOption + ]); + } + + session()->flash('success', trans('admin::app.customers.customers.mass-update-success')); + + return redirect()->back(); + } + + /** + * To mass delete the customer + * + * @return redirect + */ + public function massDestroy() + { + $customerIds = explode(',', request()->input('indexes')); + + foreach ($customerIds as $customerId) { + $this->customerRepository->deleteWhere([ + 'id' => $customerId + ]); + } + + session()->flash('success', trans('admin::app.customers.customers.mass-destroy-success')); + + return redirect()->back(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerGroupController.php b/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerGroupController.php new file mode 100755 index 000000000..f4b4499bf --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerGroupController.php @@ -0,0 +1,149 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CustomerGroupController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * CustomerGroupRepository object + * + * @var array + */ + protected $customerGroupRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Customer\Repositories\CustomerGroupRepository $customerGroupRepository; + * @return void + */ + public function __construct(CustomerGroupRepository $customerGroupRepository) + { + $this->_config = request('_config'); + + $this->middleware('admin'); + + $this->customerGroupRepository = $customerGroupRepository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'code' => ['required', 'unique:customer_groups,code', new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required', + ]); + + $data = request()->all(); + + $data['is_user_defined'] = 1; + + $this->customerGroupRepository->create($data); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Customer Group'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $group = $this->customerGroupRepository->findOrFail($id); + + return view($this->_config['view'], compact('group')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $this->validate(request(), [ + 'code' => ['required', 'unique:customer_groups,code,' . $id, new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required', + ]); + + $this->customerGroupRepository->update(request()->all(), $id); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Customer Group'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $customerGroup = $this->customerGroupRepository->findOrFail($id); + + if ($customerGroup->is_user_defined == 0) { + session()->flash('warning', trans('admin::app.customers.customers.group-default')); + } else if (count($customerGroup->customer) > 0) { + session()->flash('warning', trans('admin::app.response.customer-associate', ['name' => 'Customer Group'])); + } else { + try { + $this->customerGroupRepository->delete($id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Customer Group'])); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Customer Group'])); + } + } + + return response()->json(['message' => false], 400); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php b/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php new file mode 100755 index 000000000..08a81d355 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php @@ -0,0 +1,320 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class DashboardController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + protected $_config; + + /** + * OrderRepository object + * + * @var Object + */ + protected $orderRepository; + + /** + * OrderItemRepository object + * + * @var Object + */ + protected $orderItemRepository; + + /** + * CustomerRepository object + * + * @var Object + */ + protected $customerRepository; + + /** + * ProductInventoryRepository object + * + * @var Object + */ + protected $productInventoryRepository; + + /** + * string object + * + * @var Object + */ + protected $startDate; + + /** + * string object + * + * @var Object + */ + protected $lastStartDate; + + /** + * string object + * + * @var Object + */ + protected $endDate; + + /** + * string object + * + * @var Object + */ + protected $lastEndDate; + + /** + * Create a new controller instance. + * + * @param \Webkul\Sales\Repositories\OrderRepository $orderRepository + * @param \Webkul\Sales\Repositories\OrderItemRepository $orderItemRepository + * @param \Webkul\Customer\Repositories\CustomerRepository $customerRepository + * @param \Webkul\Product\Repositories\ProductInventoryRepository $productInventoryRepository + * @return void + */ + public function __construct( + OrderRepository $orderRepository, + OrderItemRepository $orderItemRepository, + CustomerRepository $customerRepository, + ProductInventoryRepository $productInventoryRepository + ) + { + $this->_config = request('_config'); + + $this->middleware('admin'); + + $this->orderRepository = $orderRepository; + + $this->orderItemRepository = $orderItemRepository; + + $this->customerRepository = $customerRepository; + + $this->productInventoryRepository = $productInventoryRepository; + } + + /** + * Returns percentage difference + * + * @return integer + */ + public function getPercentageChange($previous, $current) + { + if (! $previous) + return $current ? 100 : 0; + + return ($current - $previous) / $previous * 100; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + $this->setStartEndDate(); + + $statistics = [ + 'total_customers' => [ + 'previous' => $previous = $this->getCustomersBetweenDates($this->lastStartDate, $this->lastEndDate)->count(), + 'current' => $current = $this->getCustomersBetweenDates($this->startDate, $this->endDate)->count(), + 'progress' => $this->getPercentageChange($previous, $current) + ], + 'total_orders' => [ + 'previous' => $previous = $this->previousOrders()->count(), + 'current' => $current = $this->currentOrders()->count(), + 'progress' => $this->getPercentageChange($previous, $current) + ], + 'total_sales' => [ + 'previous' => $previous = $this->previousOrders()->sum('base_grand_total_invoiced') - $this->previousOrders()->sum('base_grand_total_refunded'), + 'current' => $current = $this->currentOrders()->sum('base_grand_total_invoiced') - $this->currentOrders()->sum('base_grand_total_refunded'), + 'progress' => $this->getPercentageChange($previous, $current) + ], + 'avg_sales' => [ + 'previous' => $previous = $this->previousOrders()->avg('base_grand_total_invoiced') - $this->previousOrders()->avg('base_grand_total_refunded'), + 'current' => $current = $this->currentOrders()->avg('base_grand_total_invoiced') - $this->currentOrders()->avg('base_grand_total_refunded'), + 'progress' => $this->getPercentageChange($previous, $current) + ], + 'top_selling_categories' => $this->getTopSellingCategories(), + 'top_selling_products' => $this->getTopSellingProducts(), + 'customer_with_most_sales' => $this->getCustomerWithMostSales(), + 'stock_threshold' => $this->getStockThreshold(), + ]; + + foreach (core()->getTimeInterval($this->startDate, $this->endDate) as $interval) { + $statistics['sale_graph']['label'][] = $interval['start']->format('d M'); + + $total = $this->getOrdersBetweenDate($interval['start'], $interval['end'])->sum('base_grand_total_invoiced') - $this->getOrdersBetweenDate($interval['start'], $interval['end'])->sum('base_grand_total_refunded'); + + $statistics['sale_graph']['total'][] = $total; + $statistics['sale_graph']['formated_total'][] = core()->formatBasePrice($total); + } + + return view($this->_config['view'], compact('statistics'))->with(['startDate' => $this->startDate, 'endDate' => $this->endDate]); + } + + /** + * Returns the list of top selling categories + * + * @return Collection + */ + public function getTopSellingCategories() + { + return $this->orderItemRepository->getModel() + ->leftJoin('products', 'order_items.product_id', 'products.id') + ->leftJoin('product_categories', 'products.id', 'product_categories.product_id') + ->leftJoin('categories', 'product_categories.category_id', 'categories.id') + ->leftJoin('category_translations', 'categories.id', 'category_translations.category_id') + ->where('category_translations.locale', app()->getLocale()) + ->where('order_items.created_at', '>=', $this->startDate) + ->where('order_items.created_at', '<=', $this->endDate) + ->addSelect(DB::raw('SUM(qty_invoiced - qty_refunded) as total_qty_invoiced')) + ->addSelect(DB::raw('COUNT(' . DB::getTablePrefix() . 'products.id) as total_products')) + ->addSelect('order_items.id', 'categories.id as category_id', 'category_translations.name') + ->groupBy('categories.id') + ->havingRaw('SUM(qty_invoiced - qty_refunded) > 0') + ->orderBy('total_qty_invoiced', 'DESC') + ->limit(5) + ->get(); + } + + /** + * Return stock threshold. + * + * @return Collection + */ + public function getStockThreshold() + { + return $this->productInventoryRepository->getModel() + ->leftJoin('products', 'product_inventories.product_id', 'products.id') + ->select(DB::raw('SUM(qty) as total_qty')) + ->addSelect('product_inventories.product_id') + ->groupBy('product_id') + ->orderBy('total_qty', 'ASC') + ->limit(5) + ->get(); + } + + /** + * Returns top selling products + * @return Collection + */ + public function getTopSellingProducts() + { + return $this->orderItemRepository->getModel() + ->select(DB::raw('SUM(qty_ordered) as total_qty_ordered')) + ->addSelect('id', 'product_id', 'product_type', 'name') + ->where('order_items.created_at', '>=', $this->startDate) + ->where('order_items.created_at', '<=', $this->endDate) + ->whereNull('parent_id') + ->groupBy('product_id') + ->orderBy('total_qty_ordered', 'DESC') + ->limit(5) + ->get(); + } + + /** + * Returns top selling products + * + * @return Collection + */ + public function getCustomerWithMostSales() + { + return $this->orderRepository->getModel() + ->select(DB::raw('SUM(base_grand_total) as total_base_grand_total')) + ->addSelect(DB::raw('COUNT(id) as total_orders')) + ->addSelect('id', 'customer_id', 'customer_email', 'customer_first_name', 'customer_last_name') + ->where('orders.created_at', '>=', $this->startDate) + ->where('orders.created_at', '<=', $this->endDate) + ->groupBy('customer_email') + ->orderBy('total_base_grand_total', 'DESC') + ->limit(5) + ->get(); + } + + /** + * Sets start and end date + * + * @return void + */ + public function setStartEndDate() + { + $this->startDate = request()->get('start') + ? Carbon::createFromTimeString(request()->get('start') . " 00:00:01") + : Carbon::createFromTimeString(Carbon::now()->subDays(30)->format('Y-m-d') . " 00:00:01"); + + $this->endDate = request()->get('end') + ? Carbon::createFromTimeString(request()->get('end') . " 23:59:59") + : Carbon::now(); + + if ($this->endDate > Carbon::now()) + $this->endDate = Carbon::now(); + + $this->lastStartDate = clone $this->startDate; + $this->lastEndDate = clone $this->startDate; + + $this->lastStartDate->subDays($this->startDate->diffInDays($this->endDate)); + // $this->lastEndDate->subDays($this->lastStartDate->diffInDays($this->lastEndDate)); + } + + /** + * Returns previous order query + * + * @return mixed + */ + private function previousOrders() + { + return $this->getOrdersBetweenDate($this->lastStartDate, $this->lastEndDate); + } + + /** + * Returns current order query + * + * @return mixed + */ + private function currentOrders() + { + return $this->getOrdersBetweenDate($this->startDate, $this->endDate); + } + + /** + * Returns orders between two dates + * + * @return mixed + */ + private function getOrdersBetweenDate($start, $end) + { + return $this->orderRepository->scopeQuery(function ($query) use ($start, $end) { + return $query->where('orders.created_at', '>=', $start)->where('orders.created_at', '<=', $end); + }); + } + + /** + * Returns customers between two dates + * + * @return mixed + */ + private function getCustomersBetweenDates($start, $end) + { + return $this->customerRepository->scopeQuery(function ($query) use ($start, $end) { + return $query->where('customers.created_at', '>=', $start)->where('customers.created_at', '<=', $end); + }); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/Development/DashboardController.php b/packages/Webkul/Admin/src/Http/Controllers/Development/DashboardController.php new file mode 100755 index 000000000..89dbecf9a --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/Development/DashboardController.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class DashboardController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view('admin::settings.development.dashboard'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/ExportController.php b/packages/Webkul/Admin/src/Http/Controllers/ExportController.php new file mode 100755 index 000000000..1267d40b2 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/ExportController.php @@ -0,0 +1,76 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ExportController extends Controller +{ + protected $exportableGrids = [ + 'OrderDataGrid', 'OrderInvoicesDataGrid', 'OrderShipmentsDataGrid', 'OrderRefundDataGrid', 'CustomerDataGrid', 'TaxRateDataGrid', 'ProductDataGrid', 'CMSPageDataGrid' + ]; + + /** + * Create a new controller instance. + * + */ + public function __construct() + { + $this->middleware('admin'); + } + + /** + * function for export datagrid + * + * @return \Illuminate\Http\Response + */ + public function export() + { + $criteria = request()->all(); + + $format = $criteria['format']; + + $gridName = explode('\\', $criteria['gridName']); + $path = '\Webkul\Admin\DataGrids'.'\\'.last($gridName); + + $proceed = false; + + foreach ($this->exportableGrids as $exportableGrid) { + if (last($gridName) == $exportableGrid) { + $proceed = true; + } + } + + if (! $proceed) { + return redirect()->back(); + } + + $gridInstance = new $path; + $records = $gridInstance->export(); + + if (count($records) == 0) { + session()->flash('warning', trans('admin::app.export.no-records')); + + return redirect()->back(); + } + + if ($format == 'csv') { + return Excel::download(new DataGridExport($records), last($gridName).'.csv'); + } + + if ($format == 'xls') { + return Excel::download(new DataGridExport($records), last($gridName).'.xlsx'); + } + + session()->flash('warning', trans('admin::app.export.illegal-format')); + + return redirect()->back(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php new file mode 100755 index 000000000..40ba5609e --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php @@ -0,0 +1,154 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class InvoiceController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + protected $_config; + + /** + * OrderRepository object + * + * @var array + */ + protected $orderRepository; + + /** + * InvoiceRepository object + * + * @var array + */ + protected $invoiceRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Sales\Repositories\OrderRepository $orderRepository + * @param \Webkul\Sales\Repositories\InvoiceRepository $invoiceRepository + * @return void + */ + public function __construct( + OrderRepository $orderRepository, + InvoiceRepository $invoiceRepository + ) + { + $this->middleware('admin'); + + $this->_config = request('_config'); + + $this->orderRepository = $orderRepository; + + $this->invoiceRepository = $invoiceRepository; + + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @param int $orderId + * @return \Illuminate\View\View + */ + public function create($orderId) + { + $order = $this->orderRepository->findOrFail($orderId); + + return view($this->_config['view'], compact('order')); + } + + /** + * Store a newly created resource in storage. + * + * @param int $orderId + * @return \Illuminate\Http\Response + */ + public function store($orderId) + { + $order = $this->orderRepository->findOrFail($orderId); + + if (! $order->canInvoice()) { + session()->flash('error', trans('admin::app.sales.invoices.creation-error')); + + return redirect()->back(); + } + + $this->validate(request(), [ + 'invoice.items.*' => 'required|numeric|min:0', + ]); + + $data = request()->all(); + + $haveProductToInvoice = false; + foreach ($data['invoice']['items'] as $itemId => $qty) { + if ($qty) { + $haveProductToInvoice = true; + break; + } + } + + if (! $haveProductToInvoice) { + session()->flash('error', trans('admin::app.sales.invoices.product-error')); + + return redirect()->back(); + } + + $this->invoiceRepository->create(array_merge($data, ['order_id' => $orderId])); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Invoice'])); + + return redirect()->route($this->_config['redirect'], $orderId); + } + + /** + * Show the view for the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function view($id) + { + $invoice = $this->invoiceRepository->findOrFail($id); + + return view($this->_config['view'], compact('invoice')); + } + + /** + * Print and download the for the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function print($id) + { + $invoice = $this->invoiceRepository->findOrFail($id); + + $pdf = PDF::loadView('admin::sales.invoices.pdf', compact('invoice'))->setPaper('a4'); + + return $pdf->download('invoice-' . $invoice->created_at->format('d-m-Y') . '.pdf'); + } +} diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/OrderController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/OrderController.php new file mode 100755 index 000000000..19906800e --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/OrderController.php @@ -0,0 +1,87 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class OrderController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + protected $_config; + + /** + * OrderRepository object + * + * @var array + */ + protected $orderRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Sales\Repositories\OrderRepository $orderRepository + * @return void + */ + public function __construct(OrderRepository $orderRepository) + { + $this->middleware('admin'); + + $this->_config = request('_config'); + + $this->orderRepository = $orderRepository; + + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the view for the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function view($id) + { + $order = $this->orderRepository->findOrFail($id); + + return view($this->_config['view'], compact('order')); + } + + /** + * Cancel action for the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function cancel($id) + { + $result = $this->orderRepository->cancel($id); + + if ($result) { + session()->flash('success', trans('admin::app.response.cancel-success', ['name' => 'Order'])); + } else { + session()->flash('error', trans('admin::app.response.cancel-error', ['name' => 'Order'])); + } + + return redirect()->back(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/RefundController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/RefundController.php new file mode 100755 index 000000000..47a891a25 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/RefundController.php @@ -0,0 +1,169 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class RefundController extends Controller +{ + /** + * Display a listing of the resource. + * + * @var array + */ + protected $_config; + + /** + * OrderRepository object + * + * @var Object + */ + protected $orderRepository; + + /** + * OrderItemRepository object + * + * @var Object + */ + protected $orderItemRepository; + + /** + * RefundRepository object + * + * @var Object + */ + protected $refundRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Sales\Repositories\OrderRepository $orderRepository + * @param \Webkul\Sales\Repositories\OrderItemRepository $orderItemRepository + * @param \Webkul\Sales\Repositories\RefundRepository $refundRepository + * @return void + */ + public function __construct( + OrderRepository $orderRepository, + OrderItemRepository $orderItemRepository, + RefundRepository $refundRepository + ) + { + $this->middleware('admin'); + + $this->_config = request('_config'); + + $this->orderRepository = $orderRepository; + + $this->orderItemRepository = $orderItemRepository; + + $this->refundRepository = $refundRepository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @param int $orderId + * @return \Illuminate\Http\View + */ + public function create($orderId) + { + $order = $this->orderRepository->findOrFail($orderId); + + return view($this->_config['view'], compact('order')); + } + + /** + * Store a newly created resource in storage. + * + * @param int $orderId + * @return \Illuminate\Http\Response + */ + public function store($orderId) + { + $order = $this->orderRepository->findOrFail($orderId); + + if (! $order->canRefund()) { + session()->flash('error', trans('admin::app.sales.refunds.creation-error')); + + return redirect()->back(); + } + + $this->validate(request(), [ + 'refund.items.*' => 'required|numeric|min:0' + ]); + + $data = request()->all(); + + $totals = $this->refundRepository->getOrderItemsRefundSummary($data['refund']['items'], $orderId); + + $maxRefundAmount = $totals['grand_total']['price'] - $order->refunds()->sum('base_adjustment_refund'); + + $refundAmount = $totals['grand_total']['price'] - $totals['shipping']['price'] + $data['refund']['shipping'] + $data['refund']['adjustment_refund'] - $data['refund']['adjustment_fee']; + + if (! $refundAmount) { + session()->flash('error', trans('admin::app.sales.refunds.invalid-refund-amount-error')); + + return redirect()->back(); + } + + if ($refundAmount > $maxRefundAmount) { + session()->flash('error', trans('admin::app.sales.refunds.refund-limit-error', ['amount' => core()->formatBasePrice($maxRefundAmount)])); + + return redirect()->back(); + } + + $this->refundRepository->create(array_merge($data, ['order_id' => $orderId])); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Refund'])); + + return redirect()->route($this->_config['redirect'], $orderId); + } + + /** + * Store a newly created resource in storage. + * + * @param int $orderId + * @return \Illuminate\Http\JsonResponse + */ + public function updateQty($orderId) + { + $data = $this->refundRepository->getOrderItemsRefundSummary(request()->all(), $orderId); + + if (! $data) + return response(''); + + return response()->json($data); + } + + /** + * Show the view for the specified resource. + * + * @param int $id + * @return \Illuminate\Http\View + */ + public function view($id) + { + $refund = $this->refundRepository->findOrFail($id); + + return view($this->_config['view'], compact('refund')); + } +} diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/ShipmentController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/ShipmentController.php new file mode 100755 index 000000000..059ce1ae7 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/ShipmentController.php @@ -0,0 +1,204 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ShipmentController extends Controller +{ + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + protected $_config; + + /** + * OrderRepository object + * + * @var mixed + */ + protected $orderRepository; + + /** + * OrderItemRepository object + * + * @var mixed + */ + protected $orderItemRepository; + + /** + * ShipmentRepository object + * + * @var mixed + */ + protected $shipmentRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Sales\Repositories\ShipmentRepository $shipmentRepository + * @param \Webkul\Sales\Repositories\OrderRepository $orderRepository + * @param \Webkul\Sales\Repositories\OrderitemRepository $orderItemRepository + * @return void + */ + public function __construct( + ShipmentRepository $shipmentRepository, + OrderRepository $orderRepository, + OrderItemRepository $orderItemRepository + ) + { + $this->middleware('admin'); + + $this->_config = request('_config'); + + $this->orderRepository = $orderRepository; + + $this->orderItemRepository = $orderItemRepository; + + $this->shipmentRepository = $shipmentRepository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @param int $orderId + * @return \Illuminate\View\View + */ + public function create($orderId) + { + $order = $this->orderRepository->findOrFail($orderId); + + if (! $order->channel || !$order->canShip()) { + session()->flash('error', trans('admin::app.sales.shipments.creation-error')); + + return redirect()->back(); + } + + return view($this->_config['view'], compact('order')); + } + + /** + * Store a newly created resource in storage. + * + * @param int $orderId + * @return \Illuminate\Http\Response + */ + public function store($orderId) + { + $order = $this->orderRepository->findOrFail($orderId); + + if (! $order->canShip()) { + session()->flash('error', trans('admin::app.sales.shipments.order-error')); + + return redirect()->back(); + } + + $this->validate(request(), [ + 'shipment.carrier_title' => 'required', + 'shipment.track_number' => 'required', + 'shipment.source' => 'required', + 'shipment.items.*.*' => 'required|numeric|min:0', + ]); + + $data = request()->all(); + + if (! $this->isInventoryValidate($data)) { + session()->flash('error', trans('admin::app.sales.shipments.quantity-invalid')); + + return redirect()->back(); + } + + $this->shipmentRepository->create(array_merge($data, ['order_id' => $orderId])); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Shipment'])); + + return redirect()->route($this->_config['redirect'], $orderId); + } + + /** + * Checks if requested quantity available or not + * + * @param array $data + * @return boolean + */ + public function isInventoryValidate(&$data) + { + if (! isset($data['shipment']['items'])) + return ; + + $valid = false; + + $inventorySourceId = $data['shipment']['source']; + + foreach ($data['shipment']['items'] as $itemId => $inventorySource) { + if ($qty = $inventorySource[$inventorySourceId]) { + $orderItem = $this->orderItemRepository->find($itemId); + + if ($orderItem->qty_to_ship < $qty) + return false; + + if ($orderItem->getTypeInstance()->isComposite()) { + foreach ($orderItem->children as $child) { + if (! $child->qty_ordered) + continue; + + $finalQty = ($child->qty_ordered / $orderItem->qty_ordered) * $qty; + + $availableQty = $child->product->inventories() + ->where('inventory_source_id', $inventorySourceId) + ->sum('qty'); + + if ($child->qty_to_ship < $finalQty || $availableQty < $finalQty) + return false; + } + } else { + $availableQty = $orderItem->product->inventories() + ->where('inventory_source_id', $inventorySourceId) + ->sum('qty'); + + if ($orderItem->qty_to_ship < $qty || $availableQty < $qty) + return false; + } + + $valid = true; + } else { + unset($data['shipment']['items'][$itemId]); + } + } + + return $valid; + } + + /** + * Show the view for the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function view($id) + { + $shipment = $this->shipmentRepository->findOrFail($id); + + return view($this->_config['view'], compact('shipment')); + } +} diff --git a/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php b/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php new file mode 100644 index 000000000..cf0e18aa4 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php @@ -0,0 +1,50 @@ +rules = [ + 'sales.*.*.title' => 'required', + 'sales.*.*.active' => 'required', + 'sales.*.*.order_status' => 'required', + 'sales.*.*.file' => 'max:2048', + ]; + + return $this->rules; + } + + /** + * Get the error messages for the defined validation rules. + * + * @return array + */ + public function messages() + { + return [ + 'sales.*.*.title.required' => 'The title field is required.', + 'sales.*.*.active.required' => 'The status field is required.', + 'sales.*.*.order_status.required' => 'Order Status field is required', + ]; + } +} diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php new file mode 100755 index 000000000..604a16bdc --- /dev/null +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -0,0 +1,760 @@ + ['web']], function () { + Route::prefix('admin')->group(function () { + + Route::get('/', 'Webkul\Admin\Http\Controllers\Controller@redirectToLogin'); + + // Login Routes + Route::get('/login', 'Webkul\User\Http\Controllers\SessionController@create')->defaults('_config', [ + 'view' => 'admin::users.sessions.create' + ])->name('admin.session.create'); + + //login post route to admin auth controller + Route::post('/login', 'Webkul\User\Http\Controllers\SessionController@store')->defaults('_config', [ + 'redirect' => 'admin.dashboard.index' + ])->name('admin.session.store'); + + // Forget Password Routes + Route::get('/forget-password', 'Webkul\User\Http\Controllers\ForgetPasswordController@create')->defaults('_config', [ + 'view' => 'admin::users.forget-password.create' + ])->name('admin.forget-password.create'); + + Route::post('/forget-password', 'Webkul\User\Http\Controllers\ForgetPasswordController@store')->name('admin.forget-password.store'); + + // Reset Password Routes + Route::get('/reset-password/{token}', 'Webkul\User\Http\Controllers\ResetPasswordController@create')->defaults('_config', [ + 'view' => 'admin::users.reset-password.create' + ])->name('admin.reset-password.create'); + + Route::post('/reset-password', 'Webkul\User\Http\Controllers\ResetPasswordController@store')->defaults('_config', [ + 'redirect' => 'admin.dashboard.index' + ])->name('admin.reset-password.store'); + + + // Admin Routes + Route::group(['middleware' => ['admin']], function () { + Route::get('/logout', 'Webkul\User\Http\Controllers\SessionController@destroy')->defaults('_config', [ + 'redirect' => 'admin.session.create' + ])->name('admin.session.destroy'); + + // Dashboard Route + Route::get('dashboard', 'Webkul\Admin\Http\Controllers\DashboardController@index')->defaults('_config', [ + 'view' => 'admin::dashboard.index' + ])->name('admin.dashboard.index'); + + //Customer Management Routes + Route::get('customers', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@index')->defaults('_config', [ + 'view' => 'admin::customers.index' + ])->name('admin.customer.index'); + + Route::get('customers/create', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@create')->defaults('_config',[ + 'view' => 'admin::customers.create' + ])->name('admin.customer.create'); + + Route::post('customers/create', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@store')->defaults('_config',[ + 'redirect' => 'admin.customer.index' + ])->name('admin.customer.store'); + + Route::get('customers/edit/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@edit')->defaults('_config',[ + 'view' => 'admin::customers.edit' + ])->name('admin.customer.edit'); + + Route::get('customers/note/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@createNote')->defaults('_config',[ + 'view' => 'admin::customers.note' + ])->name('admin.customer.note.create'); + + Route::put('customers/note/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@storeNote')->defaults('_config',[ + 'redirect' => 'admin.customer.index' + ])->name('admin.customer.note.store'); + + Route::put('customers/edit/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@update')->defaults('_config', [ + 'redirect' => 'admin.customer.index' + ])->name('admin.customer.update'); + + Route::post('customers/delete/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@destroy')->name('admin.customer.delete'); + + Route::post('customers/masssdelete', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@massDestroy')->name('admin.customer.mass-delete'); + + Route::post('customers/masssupdate', 'Webkul\Admin\Http\Controllers\Customer\CustomerController@massUpdate')->name('admin.customer.mass-update'); + + Route::get('reviews', 'Webkul\Product\Http\Controllers\ReviewController@index')->defaults('_config',[ + 'view' => 'admin::customers.reviews.index' + ])->name('admin.customer.review.index'); + + //Customer's addresses routes + Route::get('customers/{id}/addresses', 'Webkul\Admin\Http\Controllers\Customer\AddressController@index')->defaults('_config', [ + 'view' => 'admin::customers.addresses.index' + ])->name('admin.customer.addresses.index'); + + Route::get('customers/{id}/addresses/create', 'Webkul\Admin\Http\Controllers\Customer\AddressController@create')->defaults('_config',[ + 'view' => 'admin::customers.addresses.create' + ])->name('admin.customer.addresses.create'); + + Route::post('customers/{id}/addresses/create', 'Webkul\Admin\Http\Controllers\Customer\AddressController@store')->defaults('_config',[ + 'redirect' => 'admin.customer.addresses.index' + ])->name('admin.customer.addresses.store'); + + Route::get('customers/addresses/edit/{id}', 'Webkul\Admin\Http\Controllers\Customer\AddressController@edit')->defaults('_config',[ + 'view' => 'admin::customers.addresses.edit' + ])->name('admin.customer.addresses.edit'); + + Route::put('customers/addresses/edit/{id}', 'Webkul\Admin\Http\Controllers\Customer\AddressController@update')->defaults('_config', [ + 'redirect' => 'admin.customer.addresses.index' + ])->name('admin.customer.addresses.update'); + + Route::post('customers/addresses/delete/{id}', 'Webkul\Admin\Http\Controllers\Customer\AddressController@destroy')->defaults('_config', [ + 'redirect' => 'admin.customer.addresses.index' + ])->name('admin.customer.addresses.delete'); + + //mass destroy + Route::post('customers/{id}/addresses', 'Webkul\Admin\Http\Controllers\Customer\AddressController@massDestroy')->defaults('_config', [ + 'redirect' => 'admin.customer.addresses.index' + ])->name('admin.customer.addresses.massdelete'); + + // Configuration routes + Route::get('configuration/{slug?}/{slug2?}', 'Webkul\Admin\Http\Controllers\ConfigurationController@index')->defaults('_config', [ + 'view' => 'admin::configuration.index' + ])->name('admin.configuration.index'); + + Route::post('configuration/{slug?}/{slug2?}', 'Webkul\Admin\Http\Controllers\ConfigurationController@store')->defaults('_config', [ + 'redirect' => 'admin.configuration.index' + ])->name('admin.configuration.index.store'); + + Route::get('configuration/{slug?}/{slug2?}/{path}', 'Webkul\Admin\Http\Controllers\ConfigurationController@download')->defaults('_config', [ + 'redirect' => 'admin.configuration.index' + ])->name('admin.configuration.download'); + + // Reviews Routes + Route::get('reviews/edit/{id}', 'Webkul\Product\Http\Controllers\ReviewController@edit')->defaults('_config',[ + 'view' => 'admin::customers.reviews.edit' + ])->name('admin.customer.review.edit'); + + Route::put('reviews/edit/{id}', 'Webkul\Product\Http\Controllers\ReviewController@update')->defaults('_config', [ + 'redirect' => 'admin.customer.review.index' + ])->name('admin.customer.review.update'); + + Route::post('reviews/delete/{id}', 'Webkul\Product\Http\Controllers\ReviewController@destroy')->defaults('_config', [ + 'redirect' => 'admin.customer.review.index' + ])->name('admin.customer.review.delete'); + + //mass destroy + Route::post('reviews/massdestroy', 'Webkul\Product\Http\Controllers\ReviewController@massDestroy')->defaults('_config', [ + 'redirect' => 'admin.customer.review.index' + ])->name('admin.customer.review.massdelete'); + + //mass update + Route::post('reviews/massupdate', 'Webkul\Product\Http\Controllers\ReviewController@massUpdate')->defaults('_config', [ + 'redirect' => 'admin.customer.review.index' + ])->name('admin.customer.review.massupdate'); + + // Customer Groups Routes + Route::get('groups', 'Webkul\Admin\Http\Controllers\Customer\CustomerGroupController@index')->defaults('_config',[ + 'view' => 'admin::customers.groups.index' + ])->name('admin.groups.index'); + + Route::get('groups/create', 'Webkul\Admin\Http\Controllers\Customer\CustomerGroupController@create')->defaults('_config',[ + 'view' => 'admin::customers.groups.create' + ])->name('admin.groups.create'); + + Route::post('groups/create', 'Webkul\Admin\Http\Controllers\Customer\CustomerGroupController@store')->defaults('_config',[ + 'redirect' => 'admin.groups.index' + ])->name('admin.groups.store'); + + Route::get('groups/edit/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerGroupController@edit')->defaults('_config',[ + 'view' => 'admin::customers.groups.edit' + ])->name('admin.groups.edit'); + + Route::put('groups/edit/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerGroupController@update')->defaults('_config',[ + 'redirect' => 'admin.groups.index' + ])->name('admin.groups.update'); + + Route::post('groups/delete/{id}', 'Webkul\Admin\Http\Controllers\Customer\CustomerGroupController@destroy')->name('admin.groups.delete'); + + + // Sales Routes + Route::prefix('sales')->group(function () { + // Sales Order Routes + Route::get('/orders', 'Webkul\Admin\Http\Controllers\Sales\OrderController@index')->defaults('_config', [ + 'view' => 'admin::sales.orders.index' + ])->name('admin.sales.orders.index'); + + Route::get('/orders/view/{id}', 'Webkul\Admin\Http\Controllers\Sales\OrderController@view')->defaults('_config', [ + 'view' => 'admin::sales.orders.view' + ])->name('admin.sales.orders.view'); + + Route::get('/orders/cancel/{id}', 'Webkul\Admin\Http\Controllers\Sales\OrderController@cancel')->defaults('_config', [ + 'view' => 'admin::sales.orders.cancel' + ])->name('admin.sales.orders.cancel'); + + + // Sales Invoices Routes + Route::get('/invoices', 'Webkul\Admin\Http\Controllers\Sales\InvoiceController@index')->defaults('_config', [ + 'view' => 'admin::sales.invoices.index' + ])->name('admin.sales.invoices.index'); + + Route::get('/invoices/create/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\InvoiceController@create')->defaults('_config', [ + 'view' => 'admin::sales.invoices.create' + ])->name('admin.sales.invoices.create'); + + Route::post('/invoices/create/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\InvoiceController@store')->defaults('_config', [ + 'redirect' => 'admin.sales.orders.view' + ])->name('admin.sales.invoices.store'); + + Route::get('/invoices/view/{id}', 'Webkul\Admin\Http\Controllers\Sales\InvoiceController@view')->defaults('_config', [ + 'view' => 'admin::sales.invoices.view' + ])->name('admin.sales.invoices.view'); + + Route::get('/invoices/print/{id}', 'Webkul\Admin\Http\Controllers\Sales\InvoiceController@print')->defaults('_config', [ + 'view' => 'admin::sales.invoices.print' + ])->name('admin.sales.invoices.print'); + + + // Sales Shipments Routes + Route::get('/shipments', 'Webkul\Admin\Http\Controllers\Sales\ShipmentController@index')->defaults('_config', [ + 'view' => 'admin::sales.shipments.index' + ])->name('admin.sales.shipments.index'); + + Route::get('/shipments/create/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\ShipmentController@create')->defaults('_config', [ + 'view' => 'admin::sales.shipments.create' + ])->name('admin.sales.shipments.create'); + + Route::post('/shipments/create/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\ShipmentController@store')->defaults('_config', [ + 'redirect' => 'admin.sales.orders.view' + ])->name('admin.sales.shipments.store'); + + Route::get('/shipments/view/{id}', 'Webkul\Admin\Http\Controllers\Sales\ShipmentController@view')->defaults('_config', [ + 'view' => 'admin::sales.shipments.view' + ])->name('admin.sales.shipments.view'); + + + // Sales Redunds Routes + Route::get('/refunds', 'Webkul\Admin\Http\Controllers\Sales\RefundController@index')->defaults('_config', [ + 'view' => 'admin::sales.refunds.index' + ])->name('admin.sales.refunds.index'); + + Route::get('/refunds/create/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\RefundController@create')->defaults('_config', [ + 'view' => 'admin::sales.refunds.create' + ])->name('admin.sales.refunds.create'); + + Route::post('/refunds/create/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\RefundController@store')->defaults('_config', [ + 'redirect' => 'admin.sales.orders.view' + ])->name('admin.sales.refunds.store'); + + Route::post('/refunds/update-qty/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\RefundController@updateQty')->defaults('_config', [ + 'redirect' => 'admin.sales.orders.view' + ])->name('admin.sales.refunds.update_qty'); + + Route::get('/refunds/view/{id}', 'Webkul\Admin\Http\Controllers\Sales\RefundController@view')->defaults('_config', [ + 'view' => 'admin::sales.refunds.view' + ])->name('admin.sales.refunds.view'); + }); + + // Catalog Routes + Route::prefix('catalog')->group(function () { + Route::get('/sync', 'Webkul\Product\Http\Controllers\ProductController@sync'); + + // Catalog Product Routes + Route::get('/products', 'Webkul\Product\Http\Controllers\ProductController@index')->defaults('_config', [ + 'view' => 'admin::catalog.products.index' + ])->name('admin.catalog.products.index'); + + Route::get('/products/create', 'Webkul\Product\Http\Controllers\ProductController@create')->defaults('_config', [ + 'view' => 'admin::catalog.products.create' + ])->name('admin.catalog.products.create'); + + Route::post('/products/create', 'Webkul\Product\Http\Controllers\ProductController@store')->defaults('_config', [ + 'redirect' => 'admin.catalog.products.edit' + ])->name('admin.catalog.products.store'); + + Route::get('/products/edit/{id}', 'Webkul\Product\Http\Controllers\ProductController@edit')->defaults('_config', [ + 'view' => 'admin::catalog.products.edit' + ])->name('admin.catalog.products.edit'); + + Route::put('/products/edit/{id}', 'Webkul\Product\Http\Controllers\ProductController@update')->defaults('_config', [ + 'redirect' => 'admin.catalog.products.index' + ])->name('admin.catalog.products.update'); + + Route::post('/products/upload-file/{id}', 'Webkul\Product\Http\Controllers\ProductController@uploadLink')->name('admin.catalog.products.upload_link'); + + Route::post('/products/upload-sample/{id}', 'Webkul\Product\Http\Controllers\ProductController@uploadSample')->name('admin.catalog.products.upload_sample'); + + //product delete + Route::post('/products/delete/{id}', 'Webkul\Product\Http\Controllers\ProductController@destroy')->name('admin.catalog.products.delete'); + + //product massaction + Route::post('products/massaction', 'Webkul\Product\Http\Controllers\ProductController@massActionHandler')->name('admin.catalog.products.massaction'); + + //product massdelete + Route::post('products/massdelete', 'Webkul\Product\Http\Controllers\ProductController@massDestroy')->defaults('_config', [ + 'redirect' => 'admin.catalog.products.index' + ])->name('admin.catalog.products.massdelete'); + + //product massupdate + Route::post('products/massupdate', 'Webkul\Product\Http\Controllers\ProductController@massUpdate')->defaults('_config', [ + 'redirect' => 'admin.catalog.products.index' + ])->name('admin.catalog.products.massupdate'); + + //product search for linked products + Route::get('products/search', 'Webkul\Product\Http\Controllers\ProductController@productLinkSearch')->defaults('_config', [ + 'view' => 'admin::catalog.products.edit' + ])->name('admin.catalog.products.productlinksearch'); + + Route::get('products/search-simple-products', 'Webkul\Product\Http\Controllers\ProductController@searchSimpleProducts')->name('admin.catalog.products.search_simple_product'); + + Route::get('/products/{id}/{attribute_id}', 'Webkul\Product\Http\Controllers\ProductController@download')->defaults('_config', [ + 'view' => 'admin.catalog.products.edit' + ])->name('admin.catalog.products.file.download'); + + // Catalog Category Routes + Route::get('/categories', 'Webkul\Category\Http\Controllers\CategoryController@index')->defaults('_config', [ + 'view' => 'admin::catalog.categories.index' + ])->name('admin.catalog.categories.index'); + + Route::get('/categories/create', 'Webkul\Category\Http\Controllers\CategoryController@create')->defaults('_config', [ + 'view' => 'admin::catalog.categories.create' + ])->name('admin.catalog.categories.create'); + + Route::post('/categories/create', 'Webkul\Category\Http\Controllers\CategoryController@store')->defaults('_config', [ + 'redirect' => 'admin.catalog.categories.index' + ])->name('admin.catalog.categories.store'); + + Route::get('/categories/edit/{id}', 'Webkul\Category\Http\Controllers\CategoryController@edit')->defaults('_config', [ + 'view' => 'admin::catalog.categories.edit' + ])->name('admin.catalog.categories.edit'); + + Route::put('/categories/edit/{id}', 'Webkul\Category\Http\Controllers\CategoryController@update')->defaults('_config', [ + 'redirect' => 'admin.catalog.categories.index' + ])->name('admin.catalog.categories.update'); + + Route::post('/categories/delete/{id}', 'Webkul\Category\Http\Controllers\CategoryController@destroy')->name('admin.catalog.categories.delete'); + + + // Catalog Attribute Routes + Route::get('/attributes', 'Webkul\Attribute\Http\Controllers\AttributeController@index')->defaults('_config', [ + 'view' => 'admin::catalog.attributes.index' + ])->name('admin.catalog.attributes.index'); + + Route::get('/attributes/create', 'Webkul\Attribute\Http\Controllers\AttributeController@create')->defaults('_config', [ + 'view' => 'admin::catalog.attributes.create' + ])->name('admin.catalog.attributes.create'); + + Route::post('/attributes/create', 'Webkul\Attribute\Http\Controllers\AttributeController@store')->defaults('_config', [ + 'redirect' => 'admin.catalog.attributes.index' + ])->name('admin.catalog.attributes.store'); + + Route::get('/attributes/edit/{id}', 'Webkul\Attribute\Http\Controllers\AttributeController@edit')->defaults('_config', [ + 'view' => 'admin::catalog.attributes.edit' + ])->name('admin.catalog.attributes.edit'); + + Route::put('/attributes/edit/{id}', 'Webkul\Attribute\Http\Controllers\AttributeController@update')->defaults('_config', [ + 'redirect' => 'admin.catalog.attributes.index' + ])->name('admin.catalog.attributes.update'); + + Route::post('/attributes/delete/{id}', 'Webkul\Attribute\Http\Controllers\AttributeController@destroy')->name('admin.catalog.attributes.delete'); + + Route::post('/attributes/massdelete', 'Webkul\Attribute\Http\Controllers\AttributeController@massDestroy')->name('admin.catalog.attributes.massdelete'); + + // Catalog Family Routes + Route::get('/families', 'Webkul\Attribute\Http\Controllers\AttributeFamilyController@index')->defaults('_config', [ + 'view' => 'admin::catalog.families.index' + ])->name('admin.catalog.families.index'); + + Route::get('/families/create', 'Webkul\Attribute\Http\Controllers\AttributeFamilyController@create')->defaults('_config', [ + 'view' => 'admin::catalog.families.create' + ])->name('admin.catalog.families.create'); + + Route::post('/families/create', 'Webkul\Attribute\Http\Controllers\AttributeFamilyController@store')->defaults('_config', [ + 'redirect' => 'admin.catalog.families.index' + ])->name('admin.catalog.families.store'); + + Route::get('/families/edit/{id}', 'Webkul\Attribute\Http\Controllers\AttributeFamilyController@edit')->defaults('_config', [ + 'view' => 'admin::catalog.families.edit' + ])->name('admin.catalog.families.edit'); + + Route::put('/families/edit/{id}', 'Webkul\Attribute\Http\Controllers\AttributeFamilyController@update')->defaults('_config', [ + 'redirect' => 'admin.catalog.families.index' + ])->name('admin.catalog.families.update'); + + Route::post('/families/delete/{id}', 'Webkul\Attribute\Http\Controllers\AttributeFamilyController@destroy')->name('admin.catalog.families.delete'); + }); + + // User Routes + //datagrid for backend users + Route::get('/users', 'Webkul\User\Http\Controllers\UserController@index')->defaults('_config', [ + 'view' => 'admin::users.users.index' + ])->name('admin.users.index'); + + //create backend user get + Route::get('/users/create', 'Webkul\User\Http\Controllers\UserController@create')->defaults('_config', [ + 'view' => 'admin::users.users.create' + ])->name('admin.users.create'); + + //create backend user post + Route::post('/users/create', 'Webkul\User\Http\Controllers\UserController@store')->defaults('_config', [ + 'redirect' => 'admin.users.index' + ])->name('admin.users.store'); + + //delete backend user view + Route::get('/users/edit/{id}', 'Webkul\User\Http\Controllers\UserController@edit')->defaults('_config', [ + 'view' => 'admin::users.users.edit' + ])->name('admin.users.edit'); + + //edit backend user submit + Route::put('/users/edit/{id}', 'Webkul\User\Http\Controllers\UserController@update')->defaults('_config', [ + 'redirect' => 'admin.users.index' + ])->name('admin.users.update'); + + //delete backend user + Route::post('/users/delete/{id}', 'Webkul\User\Http\Controllers\UserController@destroy')->name('admin.users.delete'); + + Route::post('/confirm/destroy', 'Webkul\User\Http\Controllers\UserController@destroySelf')->defaults('_config', [ + 'redirect' => 'admin.users.index' + ])->name('admin.users.confirm.destroy'); + + // User Role Routes + Route::get('/roles', 'Webkul\User\Http\Controllers\RoleController@index')->defaults('_config', [ + 'view' => 'admin::users.roles.index' + ])->name('admin.roles.index'); + + Route::get('/roles/create', 'Webkul\User\Http\Controllers\RoleController@create')->defaults('_config', [ + 'view' => 'admin::users.roles.create' + ])->name('admin.roles.create'); + + Route::post('/roles/create', 'Webkul\User\Http\Controllers\RoleController@store')->defaults('_config', [ + 'redirect' => 'admin.roles.index' + ])->name('admin.roles.store'); + + Route::get('/roles/edit/{id}', 'Webkul\User\Http\Controllers\RoleController@edit')->defaults('_config', [ + 'view' => 'admin::users.roles.edit' + ])->name('admin.roles.edit'); + + Route::put('/roles/edit/{id}', 'Webkul\User\Http\Controllers\RoleController@update')->defaults('_config', [ + 'redirect' => 'admin.roles.index' + ])->name('admin.roles.update'); + + Route::post('/roles/delete/{id}', 'Webkul\User\Http\Controllers\RoleController@destroy')->name('admin.roles.delete'); + + + // Locale Routes + Route::get('/locales', 'Webkul\Core\Http\Controllers\LocaleController@index')->defaults('_config', [ + 'view' => 'admin::settings.locales.index' + ])->name('admin.locales.index'); + + Route::get('/locales/create', 'Webkul\Core\Http\Controllers\LocaleController@create')->defaults('_config', [ + 'view' => 'admin::settings.locales.create' + ])->name('admin.locales.create'); + + Route::post('/locales/create', 'Webkul\Core\Http\Controllers\LocaleController@store')->defaults('_config', [ + 'redirect' => 'admin.locales.index' + ])->name('admin.locales.store'); + + Route::get('/locales/edit/{id}', 'Webkul\Core\Http\Controllers\LocaleController@edit')->defaults('_config', [ + 'view' => 'admin::settings.locales.edit' + ])->name('admin.locales.edit'); + + Route::put('/locales/edit/{id}', 'Webkul\Core\Http\Controllers\LocaleController@update')->defaults('_config', [ + 'redirect' => 'admin.locales.index' + ])->name('admin.locales.update'); + + Route::post('/locales/delete/{id}', 'Webkul\Core\Http\Controllers\LocaleController@destroy')->name('admin.locales.delete'); + + + // Currency Routes + Route::get('/currencies', 'Webkul\Core\Http\Controllers\CurrencyController@index')->defaults('_config', [ + 'view' => 'admin::settings.currencies.index' + ])->name('admin.currencies.index'); + + Route::get('/currencies/create', 'Webkul\Core\Http\Controllers\CurrencyController@create')->defaults('_config', [ + 'view' => 'admin::settings.currencies.create' + ])->name('admin.currencies.create'); + + Route::post('/currencies/create', 'Webkul\Core\Http\Controllers\CurrencyController@store')->defaults('_config', [ + 'redirect' => 'admin.currencies.index' + ])->name('admin.currencies.store'); + + Route::get('/currencies/edit/{id}', 'Webkul\Core\Http\Controllers\CurrencyController@edit')->defaults('_config', [ + 'view' => 'admin::settings.currencies.edit' + ])->name('admin.currencies.edit'); + + Route::put('/currencies/edit/{id}', 'Webkul\Core\Http\Controllers\CurrencyController@update')->defaults('_config', [ + 'redirect' => 'admin.currencies.index' + ])->name('admin.currencies.update'); + + Route::post('/currencies/delete/{id}', 'Webkul\Core\Http\Controllers\CurrencyController@destroy')->name('admin.currencies.delete'); + + Route::post('/currencies/massdelete', 'Webkul\Core\Http\Controllers\CurrencyController@massDestroy')->name('admin.currencies.massdelete'); + + + // Exchange Rates Routes + Route::get('/exchange_rates', 'Webkul\Core\Http\Controllers\ExchangeRateController@index')->defaults('_config', [ + 'view' => 'admin::settings.exchange_rates.index' + ])->name('admin.exchange_rates.index'); + + Route::get('/exchange_rates/create', 'Webkul\Core\Http\Controllers\ExchangeRateController@create')->defaults('_config', [ + 'view' => 'admin::settings.exchange_rates.create' + ])->name('admin.exchange_rates.create'); + + Route::post('/exchange_rates/create', 'Webkul\Core\Http\Controllers\ExchangeRateController@store')->defaults('_config', [ + 'redirect' => 'admin.exchange_rates.index' + ])->name('admin.exchange_rates.store'); + + Route::get('/exchange_rates/edit/{id}', 'Webkul\Core\Http\Controllers\ExchangeRateController@edit')->defaults('_config', [ + 'view' => 'admin::settings.exchange_rates.edit' + ])->name('admin.exchange_rates.edit'); + + Route::get('/exchange_rates/update-rates/{service}', 'Webkul\Core\Http\Controllers\ExchangeRateController@updateRates')->name('admin.exchange_rates.update-rates'); + + Route::put('/exchange_rates/edit/{id}', 'Webkul\Core\Http\Controllers\ExchangeRateController@update')->defaults('_config', [ + 'redirect' => 'admin.exchange_rates.index' + ])->name('admin.exchange_rates.update'); + + Route::post('/exchange_rates/delete/{id}', 'Webkul\Core\Http\Controllers\ExchangeRateController@destroy')->name('admin.exchange_rates.delete'); + + + // Inventory Source Routes + Route::get('/inventory_sources', 'Webkul\Inventory\Http\Controllers\InventorySourceController@index')->defaults('_config', [ + 'view' => 'admin::settings.inventory_sources.index' + ])->name('admin.inventory_sources.index'); + + Route::get('/inventory_sources/create', 'Webkul\Inventory\Http\Controllers\InventorySourceController@create')->defaults('_config', [ + 'view' => 'admin::settings.inventory_sources.create' + ])->name('admin.inventory_sources.create'); + + Route::post('/inventory_sources/create', 'Webkul\Inventory\Http\Controllers\InventorySourceController@store')->defaults('_config', [ + 'redirect' => 'admin.inventory_sources.index' + ])->name('admin.inventory_sources.store'); + + Route::get('/inventory_sources/edit/{id}', 'Webkul\Inventory\Http\Controllers\InventorySourceController@edit')->defaults('_config', [ + 'view' => 'admin::settings.inventory_sources.edit' + ])->name('admin.inventory_sources.edit'); + + Route::put('/inventory_sources/edit/{id}', 'Webkul\Inventory\Http\Controllers\InventorySourceController@update')->defaults('_config', [ + 'redirect' => 'admin.inventory_sources.index' + ])->name('admin.inventory_sources.update'); + + Route::post('/inventory_sources/delete/{id}', 'Webkul\Inventory\Http\Controllers\InventorySourceController@destroy')->name('admin.inventory_sources.delete'); + + // Channel Routes + Route::get('/channels', 'Webkul\Core\Http\Controllers\ChannelController@index')->defaults('_config', [ + 'view' => 'admin::settings.channels.index' + ])->name('admin.channels.index'); + + Route::get('/channels/create', 'Webkul\Core\Http\Controllers\ChannelController@create')->defaults('_config', [ + 'view' => 'admin::settings.channels.create' + ])->name('admin.channels.create'); + + Route::post('/channels/create', 'Webkul\Core\Http\Controllers\ChannelController@store')->defaults('_config', [ + 'redirect' => 'admin.channels.index' + ])->name('admin.channels.store'); + + Route::get('/channels/edit/{id}', 'Webkul\Core\Http\Controllers\ChannelController@edit')->defaults('_config', [ + 'view' => 'admin::settings.channels.edit' + ])->name('admin.channels.edit'); + + Route::put('/channels/edit/{id}', 'Webkul\Core\Http\Controllers\ChannelController@update')->defaults('_config', [ + 'redirect' => 'admin.channels.index' + ])->name('admin.channels.update'); + + Route::post('/channels/delete/{id}', 'Webkul\Core\Http\Controllers\ChannelController@destroy')->name('admin.channels.delete'); + + + // Admin Profile route + Route::get('/account', 'Webkul\User\Http\Controllers\AccountController@edit')->defaults('_config', [ + 'view' => 'admin::account.edit' + ])->name('admin.account.edit'); + + Route::put('/account', 'Webkul\User\Http\Controllers\AccountController@update')->name('admin.account.update'); + + + // Admin Store Front Settings Route + Route::get('/subscribers','Webkul\Core\Http\Controllers\SubscriptionController@index')->defaults('_config',[ + 'view' => 'admin::customers.subscribers.index' + ])->name('admin.customers.subscribers.index'); + + //destroy a newsletter subscription item + Route::post('subscribers/delete/{id}', 'Webkul\Core\Http\Controllers\SubscriptionController@destroy')->name('admin.customers.subscribers.delete'); + + Route::get('subscribers/edit/{id}', 'Webkul\Core\Http\Controllers\SubscriptionController@edit')->defaults('_config', [ + 'view' => 'admin::customers.subscribers.edit' + ])->name('admin.customers.subscribers.edit'); + + Route::put('subscribers/update/{id}', 'Webkul\Core\Http\Controllers\SubscriptionController@update')->defaults('_config', [ + 'redirect' => 'admin.customers.subscribers.index' + ])->name('admin.customers.subscribers.update'); + + //slider index + Route::get('/slider','Webkul\Core\Http\Controllers\SliderController@index')->defaults('_config',[ + 'view' => 'admin::settings.sliders.index' + ])->name('admin.sliders.index'); + + //slider create show + Route::get('slider/create','Webkul\Core\Http\Controllers\SliderController@create')->defaults('_config',[ + 'view' => 'admin::settings.sliders.create' + ])->name('admin.sliders.create'); + + //slider create show + Route::post('slider/create','Webkul\Core\Http\Controllers\SliderController@store')->defaults('_config',[ + 'redirect' => 'admin.sliders.index' + ])->name('admin.sliders.store'); + + //slider edit show + Route::get('slider/edit/{id}','Webkul\Core\Http\Controllers\SliderController@edit')->defaults('_config',[ + 'view' => 'admin::settings.sliders.edit' + ])->name('admin.sliders.edit'); + + //slider edit update + Route::post('slider/edit/{id}','Webkul\Core\Http\Controllers\SliderController@update')->defaults('_config',[ + 'redirect' => 'admin.sliders.index' + ])->name('admin.sliders.update'); + + //destroy a slider item + Route::post('slider/delete/{id}', 'Webkul\Core\Http\Controllers\SliderController@destroy')->name('admin.sliders.delete'); + + //tax routes + Route::get('/tax-categories', 'Webkul\Tax\Http\Controllers\TaxController@index')->defaults('_config', [ + 'view' => 'admin::tax.tax-categories.index' + ])->name('admin.tax-categories.index'); + + + // tax category routes + Route::get('/tax-categories/create', 'Webkul\Tax\Http\Controllers\TaxCategoryController@show')->defaults('_config', [ + 'view' => 'admin::tax.tax-categories.create' + ])->name('admin.tax-categories.show'); + + Route::post('/tax-categories/create', 'Webkul\Tax\Http\Controllers\TaxCategoryController@create')->defaults('_config', [ + 'redirect' => 'admin.tax-categories.index' + ])->name('admin.tax-categories.create'); + + Route::get('/tax-categories/edit/{id}', 'Webkul\Tax\Http\Controllers\TaxCategoryController@edit')->defaults('_config', [ + 'view' => 'admin::tax.tax-categories.edit' + ])->name('admin.tax-categories.edit'); + + Route::put('/tax-categories/edit/{id}', 'Webkul\Tax\Http\Controllers\TaxCategoryController@update')->defaults('_config', [ + 'redirect' => 'admin.tax-categories.index' + ])->name('admin.tax-categories.update'); + + Route::post('/tax-categories/delete/{id}', 'Webkul\Tax\Http\Controllers\TaxCategoryController@destroy')->name('admin.tax-categories.delete'); + //tax category ends + + + //tax rate + Route::get('tax-rates', 'Webkul\Tax\Http\Controllers\TaxRateController@index')->defaults('_config', [ + 'view' => 'admin::tax.tax-rates.index' + ])->name('admin.tax-rates.index'); + + Route::get('tax-rates/create', 'Webkul\Tax\Http\Controllers\TaxRateController@show')->defaults('_config', [ + 'view' => 'admin::tax.tax-rates.create' + ])->name('admin.tax-rates.show'); + + Route::post('tax-rates/create', 'Webkul\Tax\Http\Controllers\TaxRateController@create')->defaults('_config', [ + 'redirect' => 'admin.tax-rates.index' + ])->name('admin.tax-rates.create'); + + Route::get('tax-rates/edit/{id}', 'Webkul\Tax\Http\Controllers\TaxRateController@edit')->defaults('_config', [ + 'view' => 'admin::tax.tax-rates.edit' + ])->name('admin.tax-rates.store'); + + Route::put('tax-rates/update/{id}', 'Webkul\Tax\Http\Controllers\TaxRateController@update')->defaults('_config', [ + 'redirect' => 'admin.tax-rates.index' + ])->name('admin.tax-rates.update'); + + Route::post('/tax-rates/delete/{id}', 'Webkul\Tax\Http\Controllers\TaxRateController@destroy')->name('admin.tax-rates.delete'); + + Route::post('/tax-rates/import', 'Webkul\Tax\Http\Controllers\TaxRateController@import')->defaults('_config', [ + 'redirect' => 'admin.tax-rates.index' + ])->name('admin.tax-rates.import'); + //tax rate ends + + //DataGrid Export + Route::post('admin/export', 'Webkul\Admin\Http\Controllers\ExportController@export')->name('admin.datagrid.export'); + + Route::prefix('promotions')->group(function () { + Route::get('cart-rules', 'Webkul\CartRule\Http\Controllers\CartRuleController@index')->defaults('_config', [ + 'view' => 'admin::promotions.cart-rules.index' + ])->name('admin.cart-rules.index'); + + Route::get('cart-rules/create', 'Webkul\CartRule\Http\Controllers\CartRuleController@create')->defaults('_config', [ + 'view' => 'admin::promotions.cart-rules.create' + ])->name('admin.cart-rules.create'); + + Route::post('cart-rules/create', 'Webkul\CartRule\Http\Controllers\CartRuleController@store')->defaults('_config', [ + 'redirect' => 'admin.cart-rules.index' + ])->name('admin.cart-rules.store'); + + Route::get('cart-rules/edit/{id}', 'Webkul\CartRule\Http\Controllers\CartRuleController@edit')->defaults('_config', [ + 'view' => 'admin::promotions.cart-rules.edit' + ])->name('admin.cart-rules.edit'); + + Route::post('cart-rules/edit/{id}', 'Webkul\CartRule\Http\Controllers\CartRuleController@update')->defaults('_config', [ + 'redirect' => 'admin.cart-rules.index' + ])->name('admin.cart-rules.update'); + + Route::post('cart-rules/delete/{id}', 'Webkul\CartRule\Http\Controllers\CartRuleController@destroy')->name('admin.cart-rules.delete'); + + Route::post('cart-rules/generate-coupons/{id?}', 'Webkul\CartRule\Http\Controllers\CartRuleController@generateCoupons')->name('admin.cart-rules.generate-coupons'); + + Route::post('/massdelete', 'Webkul\CartRule\Http\Controllers\CartRuleCouponController@massDelete')->name('admin.cart-rule-coupons.mass-delete'); + + + //Catalog rules + Route::get('catalog-rules', 'Webkul\CatalogRule\Http\Controllers\CatalogRuleController@index')->defaults('_config', [ + 'view' => 'admin::promotions.catalog-rules.index' + ])->name('admin.catalog-rules.index'); + + Route::get('catalog-rules/create', 'Webkul\CatalogRule\Http\Controllers\CatalogRuleController@create')->defaults('_config', [ + 'view' => 'admin::promotions.catalog-rules.create' + ])->name('admin.catalog-rules.create'); + + Route::post('catalog-rules/create', 'Webkul\CatalogRule\Http\Controllers\CatalogRuleController@store')->defaults('_config', [ + 'redirect' => 'admin.catalog-rules.index' + ])->name('admin.catalog-rules.store'); + + Route::get('catalog-rules/edit/{id}', 'Webkul\CatalogRule\Http\Controllers\CatalogRuleController@edit')->defaults('_config', [ + 'view' => 'admin::promotions.catalog-rules.edit' + ])->name('admin.catalog-rules.edit'); + + Route::post('catalog-rules/edit/{id}', 'Webkul\CatalogRule\Http\Controllers\CatalogRuleController@update')->defaults('_config', [ + 'redirect' => 'admin.catalog-rules.index' + ])->name('admin.catalog-rules.update'); + + Route::post('catalog-rules/delete/{id}', 'Webkul\CatalogRule\Http\Controllers\CatalogRuleController@destroy')->name('admin.catalog-rules.delete'); + }); + + Route::prefix('cms')->group(function () { + Route::get('/', 'Webkul\CMS\Http\Controllers\Admin\PageController@index')->defaults('_config', [ + 'view' => 'admin::cms.index' + ])->name('admin.cms.index'); + + + Route::get('create', 'Webkul\CMS\Http\Controllers\Admin\PageController@create')->defaults('_config', [ + 'view' => 'admin::cms.create' + ])->name('admin.cms.create'); + + Route::post('create', 'Webkul\CMS\Http\Controllers\Admin\PageController@store')->defaults('_config', [ + 'redirect' => 'admin.cms.index' + ])->name('admin.cms.store'); + + Route::get('edit/{id}', 'Webkul\CMS\Http\Controllers\Admin\PageController@edit')->defaults('_config', [ + 'view' => 'admin::cms.edit' + ])->name('admin.cms.edit'); + + Route::post('edit/{id}', 'Webkul\CMS\Http\Controllers\Admin\PageController@update')->defaults('_config', [ + 'redirect' => 'admin.cms.index' + ])->name('admin.cms.update'); + + Route::post('/delete/{id}', 'Webkul\CMS\Http\Controllers\Admin\PageController@delete')->defaults('_config', [ + 'redirect' => 'admin.cms.index' + ])->name('admin.cms.delete'); + + Route::post('/massdelete', 'Webkul\CMS\Http\Controllers\Admin\PageController@massDelete')->defaults('_config', [ + 'redirect' => 'admin.cms.index' + ])->name('admin.cms.mass-delete'); + + // Route::post('/delete/{id}', 'Webkul\CMS\Http\Controllers\Admin\PageController@delete')->defaults('_config', [ + // 'redirect' => 'admin.cms.index' + // ])->name('admin.cms.delete'); + }); + }); + }); +}); diff --git a/packages/Webkul/Admin/src/Imports/DataGridImport.php b/packages/Webkul/Admin/src/Imports/DataGridImport.php new file mode 100644 index 000000000..07ed1b7b7 --- /dev/null +++ b/packages/Webkul/Admin/src/Imports/DataGridImport.php @@ -0,0 +1,29 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) +*/ + +class DataGridImport implements ToCollection, WithHeadingRow +{ + use Importable; + + /** + * @param array $row + * @return void + */ + public function collection(Collection $rows) + { + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Listeners/Order.php b/packages/Webkul/Admin/src/Listeners/Order.php new file mode 100755 index 000000000..895c05539 --- /dev/null +++ b/packages/Webkul/Admin/src/Listeners/Order.php @@ -0,0 +1,97 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Order { + + /** + * @param mixed $order + * + * Send new order Mail to the customer and admin + */ + public function sendNewOrderMail($order) + { + try { + Mail::queue(new NewOrderNotification($order)); + + Mail::queue(new NewAdminNotification($order)); + } catch (\Exception $e) { + + } + } + + /** + * @param mixed $invoice + * + * Send new invoice mail to the customer + */ + public function sendNewInvoiceMail($invoice) + { + try { + if ($invoice->email_sent) + return; + + Mail::queue(new NewInvoiceNotification($invoice)); + } catch (\Exception $e) { + + } + } + + /** + * @param mixed $refund + * + * Send new refund mail to the customer + */ + public function sendNewRefundMail($refund) + { + try { + Mail::queue(new NewRefundNotification($refund)); + } catch (\Exception $e) { + + } + } + + /** + * @param mixed $shipment + * + * Send new shipment mail to the customer + */ + public function sendNewShipmentMail($shipment) + { + try { + if ($shipment->email_sent) + return; + + Mail::queue(new NewShipmentNotification($shipment)); + + Mail::queue(new NewInventorySourceNotification($shipment)); + } catch (\Exception $e) { + + } + } + + /* + * @param mixed $order + * */ + public function sendCancelOrderMail($order){ + try{ + Mail::queue(new CancelOrderNotification($order)); + }catch (\Exception $e){ + \Log::error('Error occured when sending email '.$e->getMessage()); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Mail/CancelOrderNotification.php b/packages/Webkul/Admin/src/Mail/CancelOrderNotification.php new file mode 100644 index 000000000..b13a93b58 --- /dev/null +++ b/packages/Webkul/Admin/src/Mail/CancelOrderNotification.php @@ -0,0 +1,30 @@ +order = $order; + } + + public function build() + { + return $this->to($this->order->customer_email, $this->order->customer_full_name) + ->subject(trans('shop::app.mail.order.cancel.subject')) + ->view('shop::emails.sales.order-cancel'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Mail/NewAdminNotification.php b/packages/Webkul/Admin/src/Mail/NewAdminNotification.php new file mode 100644 index 000000000..b31a4ab1c --- /dev/null +++ b/packages/Webkul/Admin/src/Mail/NewAdminNotification.php @@ -0,0 +1,49 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class NewAdminNotification extends Mailable +{ + use Queueable, SerializesModels; + + /** + * The order instance. + * + * @var Order + */ + public $order; + + + /** + * Create a new message instance. + * + * @return void + */ + public function __construct($order) + { + $this->order = $order; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + return $this->to(config('mail.admin.address')) + ->subject(trans('shop::app.mail.order.subject')) + ->view('shop::emails.sales.new-admin-order'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Mail/NewCustomerNotification.php b/packages/Webkul/Admin/src/Mail/NewCustomerNotification.php new file mode 100644 index 000000000..4af9308e6 --- /dev/null +++ b/packages/Webkul/Admin/src/Mail/NewCustomerNotification.php @@ -0,0 +1,57 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class NewCustomerNotification extends Mailable +{ + use Queueable, SerializesModels; + + /** + * The customer instance. + * + * @var customer + */ + public $customer; + + /** + * The password instance. + * + * @var password + */ + public $password; + + /** + * Create a new message instance. + * + * @return void + */ + public function __construct($customer, $password) + { + $this->customer = $customer; + + $this->password = $password; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + return $this->to($this->customer->email) + ->subject(trans('shop::app.mail.customer.new.subject')) + ->view('shop::emails.customer.new-customer')->with(['customer' => $this->customer, 'password' => $this->password]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Mail/NewInventorySourceNotification.php b/packages/Webkul/Admin/src/Mail/NewInventorySourceNotification.php new file mode 100644 index 000000000..4ed66f352 --- /dev/null +++ b/packages/Webkul/Admin/src/Mail/NewInventorySourceNotification.php @@ -0,0 +1,52 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class NewInventorySourceNotification extends Mailable +{ + use Queueable, SerializesModels; + + /** + * The shipment instance. + * + * @var Shipment + */ + public $shipment; + + /** + * Create a new message instance. + * + * @param mixed $shipment + * @return void + */ + public function __construct($shipment) + { + $this->shipment = $shipment; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + $order = $this->shipment->order; + $inventory = $this->shipment->inventory_source; + + return $this->to($inventory->contact_email, $inventory->name) + ->subject(trans('shop::app.mail.shipment.subject', ['order_id' => $order->increment_id])) + ->view('shop::emails.sales.new-inventorysource-shipment'); + } +} diff --git a/packages/Webkul/Admin/src/Mail/NewInvoiceNotification.php b/packages/Webkul/Admin/src/Mail/NewInvoiceNotification.php new file mode 100755 index 000000000..2b9cf68e3 --- /dev/null +++ b/packages/Webkul/Admin/src/Mail/NewInvoiceNotification.php @@ -0,0 +1,51 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class NewInvoiceNotification extends Mailable +{ + use Queueable, SerializesModels; + + /** + * The invoice instance. + * + * @var Invoice + */ + public $invoice; + + /** + * Create a new message instance. + * + * @param mixed $invoice + * @return void + */ + public function __construct($invoice) + { + $this->invoice = $invoice; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + $order = $this->invoice->order; + + return $this->to($order->customer_email, $order->customer_full_name) + ->subject(trans('shop::app.mail.invoice.subject', ['order_id' => $order->increment_id])) + ->view('shop::emails.sales.new-invoice'); + } +} diff --git a/packages/Webkul/Admin/src/Mail/NewOrderNotification.php b/packages/Webkul/Admin/src/Mail/NewOrderNotification.php new file mode 100755 index 000000000..cc1f332af --- /dev/null +++ b/packages/Webkul/Admin/src/Mail/NewOrderNotification.php @@ -0,0 +1,48 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class NewOrderNotification extends Mailable +{ + use Queueable, SerializesModels; + + /** + * The order instance. + * + * @var Order + */ + public $order; + + /** + * Create a new message instance. + * + * @return void + */ + public function __construct($order) + { + $this->order = $order; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + return $this->to($this->order->customer_email, $this->order->customer_full_name) + ->subject(trans('shop::app.mail.order.subject')) + ->view('shop::emails.sales.new-order'); + } +} diff --git a/packages/Webkul/Admin/src/Mail/NewRefundNotification.php b/packages/Webkul/Admin/src/Mail/NewRefundNotification.php new file mode 100644 index 000000000..2de6230cd --- /dev/null +++ b/packages/Webkul/Admin/src/Mail/NewRefundNotification.php @@ -0,0 +1,51 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class NewRefundNotification extends Mailable +{ + use Queueable, SerializesModels; + + /** + * The refund instance. + * + * @var Refund + */ + public $refund; + + /** + * Create a new message instance. + * + * @param mixed $refund + * @return void + */ + public function __construct($refund) + { + $this->refund = $refund; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + $order = $this->refund->order; + + return $this->to($order->customer_email, $order->customer_full_name) + ->subject(trans('shop::app.mail.refund.subject', ['order_id' => $order->increment_id])) + ->view('shop::emails.sales.new-refund'); + } +} diff --git a/packages/Webkul/Admin/src/Mail/NewShipmentNotification.php b/packages/Webkul/Admin/src/Mail/NewShipmentNotification.php new file mode 100755 index 000000000..9b53c49a3 --- /dev/null +++ b/packages/Webkul/Admin/src/Mail/NewShipmentNotification.php @@ -0,0 +1,51 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class NewShipmentNotification extends Mailable +{ + use Queueable, SerializesModels; + + /** + * The shipment instance. + * + * @var Shipment + */ + public $shipment; + + /** + * Create a new message instance. + * + * @param mixed $shipment + * @return void + */ + public function __construct($shipment) + { + $this->shipment = $shipment; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + $order = $this->shipment->order; + + return $this->to($order->customer_email, $order->customer_full_name) + ->subject(trans('shop::app.mail.shipment.subject', ['order_id' => $order->increment_id])) + ->view('shop::emails.sales.new-shipment'); + } +} diff --git a/packages/Webkul/Admin/src/Providers/.gitkeep b/packages/Webkul/Admin/src/Providers/.gitkeep new file mode 100755 index 000000000..e69de29bb diff --git a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php new file mode 100755 index 000000000..987f84924 --- /dev/null +++ b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php @@ -0,0 +1,175 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AdminServiceProvider extends ServiceProvider +{ + /** + * Bootstrap services. + * + * @return void + */ + public function boot() + { + $this->loadRoutesFrom(__DIR__ . '/../Http/routes.php'); + + $this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'admin'); + + $this->publishes([ + __DIR__ . '/../../publishable/assets' => public_path('vendor/webkul/admin/assets'), + ], 'public'); + + $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'admin'); + + $this->composeView(); + + $this->registerACL(); + + $this->app->register(EventServiceProvider::class); + + $this->app->bind( + ExceptionHandler::class, + Handler::class + ); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + $this->registerConfig(); + } + + /** + * Bind the the data to the views + * + * @return void + */ + protected function composeView() + { + view()->composer(['admin::layouts.nav-left', 'admin::layouts.nav-aside', 'admin::layouts.tabs'], function ($view) { + $tree = Tree::create(); + + $permissionType = auth()->guard('admin')->user()->role->permission_type; + $allowedPermissions = auth()->guard('admin')->user()->role->permissions; + + foreach (config('menu.admin') as $index => $item) { + if (! bouncer()->hasPermission($item['key'])) { + continue; + } + + if ($index + 1 < count(config('menu.admin')) && $permissionType != 'all') { + $permission = config('menu.admin')[$index + 1]; + + if (substr_count($permission['key'], '.') == 2 && substr_count($item['key'], '.') == 1) { + foreach ($allowedPermissions as $key => $value) { + if ($item['key'] == $value) { + $neededItem = $allowedPermissions[$key + 1]; + + foreach (config('menu.admin') as $key1 => $findMatced) { + if ($findMatced['key'] == $neededItem) { + $item['route'] = $findMatced['route']; + } + } + } + } + } + } + + $tree->add($item, 'menu'); + } + + $tree->items = core()->sortItems($tree->items); + + $view->with('menu', $tree); + }); + + view()->composer(['admin::users.roles.create', 'admin::users.roles.edit'], function ($view) { + $view->with('acl', $this->createACL()); + }); + + view()->composer(['admin::catalog.products.create'], function ($view) { + $items = array(); + + foreach (config('product_types') as $item) { + $item['children'] = []; + + array_push($items, $item); + } + + $types = core()->sortItems($items); + + $view->with('productTypes', $types); + }); + } + + /** + * Registers acl to entire application + * + * @return void + */ + public function registerACL() + { + $this->app->singleton('acl', function () { + return $this->createACL(); + }); + } + + /** + * Create acl tree + * + * @return mixed + */ + public function createACL() + { + static $tree; + + if ($tree) + return $tree; + + $tree = Tree::create(); + + foreach (config('acl') as $item) { + $tree->add($item, 'acl'); + } + + $tree->items = core()->sortItems($tree->items); + + return $tree; + } + + /** + * Register package config. + * + * @return void + */ + protected function registerConfig() + { + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/menu.php', 'menu.admin' + ); + + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/acl.php', 'acl' + ); + + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/system.php', 'core' + ); + } +} diff --git a/packages/Webkul/Admin/src/Providers/EventServiceProvider.php b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php new file mode 100755 index 000000000..c8427b542 --- /dev/null +++ b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php @@ -0,0 +1,27 @@ + { + if (result) { + e.target.submit(); + } else { + this.toggleButtonDisable(false); + + eventBus.$emit('onFormError') + } + }); + }, + + toggleButtonDisable (value) { + var buttons = document.getElementsByTagName("button"); + + for (var i = 0; i < buttons.length; i++) { + buttons[i].disabled = value; + } + }, + + addServerErrors(scope = null) { + for (var key in serverErrors) { + var inputNames = []; + key.split('.').forEach(function(chunk, index) { + if(index) { + inputNames.push('[' + chunk + ']') + } else { + inputNames.push(chunk) + } + }) + + var inputName = inputNames.join(''); + + const field = this.$validator.fields.find({ + name: inputName, + scope: scope + }); + if (field) { + this.$validator.errors.add({ + id: field.id, + field: inputName, + msg: serverErrors[key][0], + scope: scope + }); + } + } + }, + + addFlashMessages() { + if (typeof flashMessages == 'undefined') { + return; + }; + + const flashes = this.$refs.flashes; + + flashMessages.forEach(function(flash) { + flashes.addFlash(flash); + }, this); + }, + + showModal(id) { + this.$set(this.modalIds, id, true); + } + } + }); +}); diff --git a/packages/Webkul/Admin/src/Resources/assets/js/bootstrap.js b/packages/Webkul/Admin/src/Resources/assets/js/bootstrap.js new file mode 100755 index 000000000..a3c9974d7 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/js/bootstrap.js @@ -0,0 +1,21 @@ +window._ = require('lodash'); +window.axios = require("axios"); +window.$ = window.jQuery = require('jquery'); + +if (window.axios) { + window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + + /** + * Next we will register the CSRF Token as a common header with Axios so that + * all outgoing HTTP requests automatically have it attached. This is just + * a simple convenience so we don't have to attach every token manually. + */ + + let token = document.head.querySelector('meta[name="csrf-token"]'); + + if (token) { + window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; + } else { + console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'); + } +} diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/_colors.scss b/packages/Webkul/Admin/src/Resources/assets/sass/_colors.scss new file mode 100644 index 000000000..d6978561d --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/sass/_colors.scss @@ -0,0 +1,3 @@ +$black: #0000; +$brand-color: #0041FF; +$white: #ffffff; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/_mixins.scss b/packages/Webkul/Admin/src/Resources/assets/sass/_mixins.scss new file mode 100755 index 000000000..7aa9186c5 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/sass/_mixins.scss @@ -0,0 +1,13 @@ +// Mixins +@mixin box-shadow($shadows...) { + -webkit-box-shadow: $shadows; + -moz-box-shadow: $shadows; + box-shadow: $shadows; +} + +@mixin border-radius($radius) { + -webkit-border-radius: $radius; + -moz-border-radius: $radius; + -ms-border-radius: $radius; + border-radius: $radius; +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/_variables.scss b/packages/Webkul/Admin/src/Resources/assets/sass/_variables.scss new file mode 100755 index 000000000..1013967be --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/sass/_variables.scss @@ -0,0 +1,26 @@ +$body-background: $white; +$background-color: #f8f9fa; +$border-color: rgba(162, 162, 162, 0.2); +$navbar-top-background: $white; + +// Accordion +$accordian-header: #fbfbfb; + +// Buttons +$btn-primary: $white; +$btn-primary-bg: #0041FF; + +// Cards +$card-title: #a2a2a2; +$card-background: $white; + +// Dashboard +$dashboard-stats-data: #0041ff; + +// Typography +$font-family: 'Montserrat', sans-serif; +$font-size-base: 14px; +$font-color: #3A3A3A; + +$link-color: #a2a2a2; +$link-active-color: #a2a2a2; diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/app.scss b/packages/Webkul/Admin/src/Resources/assets/sass/app.scss new file mode 100755 index 000000000..287410a9e --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/sass/app.scss @@ -0,0 +1,16 @@ +// Fonts +@import url("https://fonts.googleapis.com/css?family=Montserrat:400,500"); + +// Variables +@import "colors"; +@import "variables"; +@import "mixins"; + +@import "partials/default"; + +@import "partials/dashboard"; +@import "partials/configuration"; +@import "partials/sales"; +@import "partials/rtl"; + +@import "partials/ui/components"; diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/partials/_configuration.scss b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_configuration.scss new file mode 100644 index 000000000..c66e1bda9 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_configuration.scss @@ -0,0 +1,76 @@ +.configuration-image { + position: relative; + height: 33px; + width: 33px; + top: 15px; + border-radius: 3px; + margin-right: 5px; +} + +.download { + position: relative; + height: 24px !important; + width: 24px !important; + top: 12px; + margin-right: 10px; +} + +.aside-nav-toggle { + height: 48px; + width: 100%; + padding-top: 15px; + border-top: 1px solid rgba(162, 162, 162, 0.2); + + .close-icon, + .open-icon { + position: absolute; + cursor: pointer; + left: 45%; + } +} + +.aside-nav-toggle.open { + display: none; +} + +.linked-product-search-result { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.16), 0 0 9px 0 rgba(0, 0, 0, 0.16); + z-index: 10; + text-align: left; + border-radius: 3px; + background-color: $white; + width: 70%; + max-height: 200px; + overflow-y: auto; + + li { + padding: 10px; + border-bottom: 1px solid #e8e8e8; + cursor: pointer; + } +} + +.cart-rule-conditions, +.catalog-rule-conditions { + table { + td { + &.attribute { + width: 250px; + padding-left: 0; + } + + &.operator, + &.value { + width: 260px; + } + + &.actions { + width: 44px; + + .icon { + margin-top: 6px; + } + } + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/partials/_dashboard.scss b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_dashboard.scss new file mode 100644 index 000000000..43f14d343 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_dashboard.scss @@ -0,0 +1,165 @@ +.dashboard { + .page-header { + margin-bottom: 0 !important; + padding-bottom: 15px; + border-bottom: 1px solid $border-color; + } + + .page-content { + margin-top: 15px; + } + + .card { + height: 445px; + background-color: $card-background; + border: 1px solid $border-color; + box-shadow: 0 5px 10px 2px $border-color; + border-radius: 0.25rem; + padding: 20px 0px 0px 20px; + overflow: auto; + + .card-title { + font-size: 14px; + color: $card-title; + letter-spacing: -0.26px; + text-transform: uppercase; + } + + .card-info { + width: 100%; + display: inline-block; + + &.center { + text-align: center; + } + + ul { + li { + border-bottom: 1px solid $border-color; + width: 100%; + display: inline-block; + padding: 10px 0; + position: relative; + + .image { + height: 60px; + width: 60px; + float: left; + margin-right: 15px; + + &.product { + background: #f2f2f2; + } + + img { + width: 100%; + } + } + + .description { + margin-top: 10px; + + .name { + color: #0041ff; + } + + .info { + color: #3a3a3a; + margin-top: 5px; + } + } + + .icon.angle-right-icon { + position: absolute; + right: 30px; + top: 50%; + margin-top: -8px; + } + + &:last-child { + border-bottom: 0; + } + } + } + + .no-result-found { + margin-top: 146px; + + p { + margin: 0; + color: #a2a2a2; + } + } + } + } + + .dashboard-stats { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); + grid-auto-rows: auto; + grid-column-gap: 30px; + grid-row-gap: 15px; + + .dashboard-card { + height: 100px; + background: $card-background; + border: 1px solid $border-color; + box-shadow: 0 5px 10px 2px $border-color; + border-radius: 5px; + position: relative; + padding: 15px; + + .title { + font-size: 14px; + color: $card-title; + text-transform: uppercase; + } + + .data { + padding-top: 13px; + font-size: 32px; + color: $dashboard-stats-data; + + .progress { + font-size: 14px; + color: #8e8e8e; + float: right; + margin-top: -2px; + + .icon { + vertical-align: middle; + } + } + } + } + } + + .graph-stats { + margin-top: 30px; + width: 100%; + display: inline-block; + + .left-card-container { + float: left; + width: 75%; + padding-right: 9px; + } + + .right-card-container { + float: left; + width: 25%; + padding-left: 21px; + } + } + + .sale-stock { + width: 100%; + display: inline-block; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(435px, 1fr)); + grid-auto-rows: auto; + grid-column-gap: 30px; + grid-row-gap: 15px; + margin-top: 30px; + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/partials/_default.scss b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_default.scss new file mode 100644 index 000000000..ff8c76d06 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_default.scss @@ -0,0 +1,312 @@ +body { + margin: 0; + color: $font-color; + font-family: $font-family; + font-size: $font-size-base; + font-weight: 500; + position: static; + height: 100%; + width: 100%; + background-color: $body-background; +} + +::-webkit-scrollbar { + width: 12px; +} + +::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(255, 255, 255, 0.3); + border-radius: 10px; +} + +::-webkit-scrollbar-thumb { + border-radius: 10px; + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); +} + +.navbar-top { + height: 60px; + background-color: $navbar-top-background; + font-size: 0; + @include box-shadow(0 3px 6px 0 rgba(0, 0, 0, 0.05)); + border-bottom: 1px solid $border-color; + position: fixed; + left: 0; + right: 0; + z-index: 5; + + .navbar-top-left { + width: 50%; + height: 60px; + display: inline-block; + vertical-align: middle; + background-color: $white; + + .brand-logo { + padding: 10px; + } + } + + .navbar-top-right { + width: 50%; + height: 60px; + text-align: right; + display: inline-block; + vertical-align: middle; + + .profile-info { + display: inline-block; + vertical-align: middle; + text-align: left; + min-width: 50px; + position: relative; + padding: 12px 0px; + margin: 0px 25px 0px 30px; + font-size: 15px; + cursor: pointer; + position: relative; + + .dropdown-list { + top: 63px; + } + + .name { + color: #000311; + display: block; + text-align: left; + } + .role { + font-size: 14px; + color: #8e8e8e; + display: block; + text-align: left; + } + + i.icon { + margin-left: 10px; + } + } + } +} + +.navbar-left { + position: fixed; + left: 0; + top: 60px; + width: 90px; + padding-top: 20px; + border-right: 1px solid rgba(162, 162, 162, 0.2); + height: auto; + bottom: 0; + z-index: 2; + background-color: $white; + + ul.menubar { + // padding-bottom: 60px; + li.menu-item { + padding: 10px 5px; + font-size: 11px; + text-align: center; + text-transform: uppercase; + + a { + color: $link-color; + } + + &.active { + a { + color: #0041ff; + } + } + + span { + display: block; + margin: auto; + } + } + } +} + +.content-container { + padding-left: 90px; + position: absolute; + margin-top: 60px; + top: 0px; + right: 0; + left: 0; + bottom: 0px; + height: calc(100% - 60px); + width: 100%; + + .inner-section { + height: 100%; + } + + .aside-nav { + width: 280px; + position: fixed; + top: 60px; + bottom: 0; + border-right: 1px solid $border-color; + background-color: $background-color; + padding-top: 10px; + padding-bottom: 10px; + z-index: 4; + + ul { + overflow-y: auto; + height: 90%; + } + + a { + padding: 15px; + display: block; + color: #000311; + } + + .active { + a { + background: $white; + border-top: 1px solid $border-color; + border-bottom: 1px solid $border-color; + } + + i { + float: right; + } + } + } + + .content-wrapper { + padding: 25px 25px 25px 15px; + margin-left: 280px; + margin-top:1px; + background-color: $white; + } + + .content { + margin-top: 25px; + + &.full-page { + padding: 25px; + } + + .page-header { + display: inline-block; + width: 100%; + padding: 15px 10px 15px 0px; + position: sticky; + top: 50px; + z-index: 3; + background-color: $white; + + .page-title { + float: left; + + .back-link { + float: left; + margin-right: 10px; + width: 24px; + height: 24px; + cursor: pointer; + margin-top: 5px; + } + + h1 { + margin-bottom: 0; + vertical-align: middle; + display: inline-block; + line-height: initial; + } + } + + .page-action { + float: right; + + * { + display: inline-block; + } + + a { + margin-left: 25px; + } + } + + .control-group { + width: 180px; + display: inline-block; + margin-bottom: 0; + margin-left: 20px; + } + + .control { + width: 100%; + margin: 0; + } + } + + .page-content { + width: 100%; + display: inline-block; + } + } +} + +.control-container { + display: flex; + flex-direction: row; + align-items: flex-start; + width: 750px; + + .control { + background: $white; + border: 2px solid #c7c7c7; + @include border-radius(3px); + width: 150px; + height: 36px; + display: inline-block; + vertical-align: middle; + transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1); + padding: 0px 10px; + font-size: 15px; + + &:focus { + border-color: #0041ff; + } + } + + .icon:hover { + cursor: pointer; + } + + .control-group::last-child { + margin-right: 0px; + } +} + +.boolean-control-container { + display: flex; + flex-direction: row; + justify-content: flex-start; + width: 750px; + + .control-group { + width: 200px; + } +} + +.control-group { + label { + width: 70%; + + .locale { + float: right; + color: #8e8e8e; + } + } + + .mce-tinymce { + margin-top: 10px; + margin-bottom: 5px; + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/partials/_rtl.scss b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_rtl.scss new file mode 100644 index 000000000..91d0b562c --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_rtl.scss @@ -0,0 +1,241 @@ +.rtl { + direction: rtl; + + .navbar-top { + .navbar-top-right { + text-align: left; + + .profile-info { + margin: 0 30px 0 25px; + + i.icon { + margin-left: 0px; + margin-right: 10px; + } + } + } + } + + .navbar-left { + border-left: 1px solid rgba(162, 162, 162, 0.2); + border-right: none; + left: calc(100% - 90px); + background-color: $white; + } + + .content-container { + padding-right: 90px; + padding-left: 0px; + + .content .page-header { + .page-title { + float: right; + } + + .page-action { + float: left; + + a { + margin-left: 0px; + } + } + + .control-group { + margin-right: 20px; + margin-left: 0px; + } + + .control-group.date { + &::after { + margin-top: 6px; + position: absolute; + margin-right: -35px; + } + + &:last-child { + margin-left: 0px; + } + } + } + + .content-wrapper { + padding: 25px 305px 25px 25px; + margin-left: 0px; + } + + .aside-nav .active i { + float: left; + transform: rotate(180deg); + } + } + + .dashboard { + .dashboard-stats .dashboard-card .data span { + float: left; + } + + .card { + padding: 20px 20px 0px 0px; + + .card-info ul li { + .image { + float: right; + margin-right: 0px; + margin-left: 15px; + } + + .icon.angle-right-icon { + left: 30px; + right: auto; + transform: rotate(180deg); + } + } + } + + .graph-stats { + .left-card-container { + float: right; + padding-right: 0px; + } + + .right-card-container { + float: right; + padding-left: 0px; + padding-right: 30px; + } + } + } + + .sale-container .sale-summary { + float: left; + } + + // ui + .grid-container { + .filter-row-one .search-filter { + border: 2px solid #c7c7c7; + border-radius: 2px; + + .control { + border: none; + padding-right: 10px; + } + + .icon-wrapper { + border: none; + padding-top: 2px; + padding-right: 5px; + border-right: 2px solid #c7c7c7; + border-radius: 0px; + } + } + + .filter-row-two .filter-tag { + .wrapper, + .icon.cross-icon { + margin-right: 10px; + margin-left: 0px; + } + } + + .filter-row-one .dropdown-filters { + right: unset; + left: 25px; + } + } + + .grid-container + .filter-wrapper + .filter-row-one + .dropdown-filters + .more-filters + .dropdown-toggle + .dropdown-header + span { + padding-right: 5px; + } + + .grid-container .table tbody td.action a:first-child { + margin-left: 10px; + margin-right: 0px; + } + + .table table { + text-align: right; + + .massaction-remove { + margin-right: 5px !important; + margin-left: 10px; + } + + .btn.btn-primary { + margin-right: 10px !important; + } + } + + .dropdown-list.bottom-right { + left: 0px; + right: auto; + } + + .dropdown-list .dropdown-container { + text-align: right; + } + + .accordian .accordian-header .icon { + float: left; + } + + .tree-container .tree-item { + padding-right: 30px; + + .expand-icon, + .folder-icon { + margin-left: 10px; + margin-right: 0px; + } + } + + .tree-container > .tree-item { + padding-right: 0px; + } + + .radio .radio-view { + margin-left: 5px; + } + + .image-wrapper .image-item { + margin-right: 0px; + margin-left: 20px; + + .remove-image { + margin-right: 0px; + } + } + + .control-group label.required::before { + content: "*"; + color: #fc6868; + font-weight: 700; + } + + .control-group label.required::after { + content: none; + } + + .control-group label .locale { + float: left; + } + + .control-group.date { + &::after { + margin-top: 15px; + position: absolute; + margin-right: -35px; + } + } + + .pagination .page-item .icon { + transform: rotate(180deg); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/partials/_sales.scss b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_sales.scss new file mode 100644 index 000000000..8fff0b4db --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_sales.scss @@ -0,0 +1,97 @@ +.sale-container { + .sale-section { + font-size: 16px; + + .secton-title { + font-size: 18px; + color: #8e8e8e; + padding: 15px 0; + border-bottom: 1px solid $border-color; + } + + .section-content { + display: block; + padding: 20px 0; + + .row { + display: block; + padding: 7px 0; + + .title { + width: 200px; + color: $font-color; + letter-spacing: -0.26px; + display: inline-block; + } + + .value { + color: $font-color; + letter-spacing: -0.26px; + display: inline-block; + } + } + } + } + + .table { + .qty-row { + display: block; + margin-bottom: 5px; + + &:last-child { + margin-bottom: 0; + } + } + + .radio { + margin: 0; + } + } + + .sale-summary { + margin-top: 2%; + height: 130px; + float: right; + + tr { + td { + padding: 5px 8px; + vertical-align: text-bottom; + } + + &.bold { + font-weight: 600; + font-size: 15px; + } + + &.border { + td { + border-bottom: 1px solid $border-color; + } + } + } + } +} + +.stars { + margin-top: 5px; + + .icon { + width: 16px; + height: 16px; + } +} + +.export-import { + cursor: pointer; + + .export-icon, + .import-icon { + position: relative; + top: 10px; + } + + span { + margin-left: 2px; + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/partials/ui/_components.scss b/packages/Webkul/Admin/src/Resources/assets/sass/partials/ui/_components.scss new file mode 100644 index 000000000..3bf197d1e --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/sass/partials/ui/_components.scss @@ -0,0 +1,27 @@ +// Accordion +.accordian-header { + background-color: $accordian-header; +} + +// buttons +.btn.btn-primary{ + background: $btn-primary-bg; +} + +.fixed-action { + position: fixed; + top: 108px; + right: 32px; + z-index: 20; +} + +.fixed-action-slight { + position: fixed; + top: 94px; + right: 32px; + z-index: 20; +} + +.pagination { + margin-top: 30px; +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php new file mode 100644 index 000000000..2f7acfa1d --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -0,0 +1,919 @@ + + [ + 'no-result-found' => 'لم نتمكن من العثور على أي سجلات.', + 'country' => 'Country', + 'state' => 'State', + 'true' => 'صحيح', + 'false' => 'خطأ' + ], + + 'layouts' => [ + 'my-account' => 'حسابي', + 'logout' => 'خروج', + 'visit-shop' => 'Visit Shop', + 'dashboard' => 'لوحة العدادات', + 'sales' => 'المبيعات', + 'orders' => 'الأوامر', + 'shipments' => 'الشحنات', + 'invoices' => 'الفواتير', + 'catalog' => 'فهرس', + 'products' => 'المنتجات', + 'categories' => 'الفئات', + 'attributes' => 'الصفات', + 'attribute-families' => 'وصف الأسر', + 'customers' => 'زبائن', + 'groups' => 'المجموعات', + 'reviews' => 'باء-الاستعراضات', + 'newsletter-subscriptions' => 'الاشتراك في الرسالة الإخبارية', + 'configure' => 'اضبط', + 'settings' => 'إعدادات', + 'locales' => 'Currencies', + 'currencies' => 'العملات', + 'exchange-rates' => 'أسعار الصرف', + 'inventory-sources' => 'مصادر الجرد', + 'channels' => 'القنوات', + 'users' => 'المستخدمون', + 'roles' => 'الأدوار', + 'sliders' => 'المنزلقون', + 'taxes' => 'الضرائب', + 'tax-categories' => 'فئات الضرائب', + 'tax-rates' => 'المعدلات الضريبية' + ], + + 'acl' => [ + 'dashboard' => 'لوحة العدادات', + 'sales' => 'المبيعات', + 'orders' => 'الأوامر', + 'shipments' => 'الشحنات', + 'invoices' => 'الفواتير', + 'catalog' => 'فهرس', + 'products' => 'المنتجات', + 'categories' => 'الفئات', + 'attributes' => 'الصفات', + 'attribute-families' => 'وصف الأسر', + 'customers' => 'زبائن', + 'groups' => 'المجموعات', + 'reviews' => 'باء-الاستعراضات', + 'newsletter-subscriptions' => 'الاشتراك في الرسالة الإخبارية', + 'configure' => 'اضبط', + 'settings' => 'إعدادات', + 'locales' => 'المواقع', + 'currencies' => 'Currencies', + 'exchange-rates' => 'أسعار الصرف', + 'inventory-sources' => 'مصادر الجرد', + 'channels' => 'القنوات', + 'users' => 'المستخدمون', + 'roles' => 'الأدوار', + 'sliders' => 'المنزلقون', + 'taxes' => 'الضرائب', + 'tax-categories' => 'فئات الضرائب', + 'tax-rates' => 'المعدلات الضريبية', + 'edit' => 'Edit', + 'create' => 'Add', + 'delete' => 'Delete', + ], + + 'dashboard' => [ + 'title' => 'لوحة العدادات', + 'from' => 'من', + 'to' => 'إلى', + 'total-customers' => 'مجموع الزبائن', + 'total-orders' => 'مجموع الطلبات', + 'total-sale' => 'مجموع المبيعات', + 'average-sale' => 'متوسط مبيعات الطلبات', + 'increased' => ':progress% زيادة', + 'decreased' => ':progress% نقصان', + 'sales' => 'المبيعات', + 'top-performing-categories' => 'أعلى أداء الفئات', + 'product-count' => ':count المنتجات', + 'top-selling-products' => 'Top Selling Products', + 'sale-count' => ':count المبيعات', + 'customer-with-most-sales' => 'زبون لديه معظم المبيعات', + 'order-count' => ':count الأوامر', + 'revenue' => 'الإيرادات :total', + 'stock-threshold' => 'عتبة المخزون', + 'qty-left' => ':qty يسار', + ], + + 'datagrid' => [ + 'mass-ops' => [ + 'method-error' => 'خطأ! تم اكتشاف طريقة خاطئة ، الرجاء التحقق من تشكيل حركة الكتلة', + 'delete-success' => 'فهرس مختار من :resource were successfully deleted', + 'partial-action' => 'ولم تنفذ بعض الإجراءات بسبب القيود المفروضة على النظام :resource', + 'update-success' => 'فهرس مختار من :resource were successfully updated', + ], + 'id' => 'ID', + 'status' => 'الحالة', + 'code' => 'رمز', + 'admin-name' => 'Name', + 'name' => 'Name', + 'fullname' => 'Full Name', + 'type' => 'النوع', + 'required' => 'مطلوب', + 'unique' => 'فريد', + 'per-locale' => 'Locale Based', + 'per-channel' => 'Channel Based', + 'position' => 'Position', + 'locale' => 'Locale', + 'hostname' => 'Hostname', + 'email' => 'Email', + 'group' => 'المجموعة', + 'title' => 'العنوان', + 'comment' => 'Comment', + 'product-name' => 'المنتج', + 'currency-name' => 'Currency Name', + 'exch-rate' => 'باء-سعر الصرف', + 'priority' => 'Priority', + 'subscribed' => 'مشترك', + 'base-total' => 'المجموع الأساسي', + 'grand-total' => 'المجموع الكلي', + 'order-date' => 'Order Date', + 'channel-name' => 'اسم القناة', + 'billed-to' => 'Billed To', + 'shipped-to' => 'Shipped To', + 'order-id' => 'Order Id', + 'invoice-date' => 'Invoice Date', + 'total-qty' => 'Total Qty', + 'inventory-source' => 'مصدر الجرد', + 'shipment-date' => 'تاريخ الشحن', + 'shipment-to' => 'الشحن إلى', + 'sku' => 'SKU', + 'price' => 'Price', + 'qty' => 'Quantity', + 'permission-type' => 'نوع الإذن', + 'identifier' => 'معرف', + 'state' => 'State', + 'country' => 'Country', + 'tax-rate' => 'المعدل', + 'role' => 'الدور', + 'sub-total' => 'المجموع الفرعي', + 'no-of-products' => 'عدد المنتجات', + 'refunded' => 'Refunded' + ], + + 'account' => [ + 'title' => 'حسابي', + 'save-btn-title' => 'احفظ', + 'general' => 'ألف-لمحة عامة', + 'name' => 'Name', + 'email' => 'Email', + 'password' => 'Password', + 'confirm-password' => 'Confirm Password', + 'change-password' => 'غير كلمة سر الحساب', + 'current-password' => 'Current Password' + ], + + 'users' => [ + 'forget-password' => [ + 'title' => 'انس كلمة السر', + 'header-title' => 'استرجع كلمة السر', + 'email' => 'البريد الإلكتروني المسجل', + 'password' => 'Password', + 'confirm-password' => 'Confirm Password', + 'back-link-title' => 'العودة للتوقيع', + 'submit-btn-title' => 'بريد إلكتروني كلمة مرور إعادة تعيين وصلة' + ], + 'reset-password' => [ + 'title' => 'أعد ضبط كلمة السر', + 'title' => 'أعد ضبط كلمة السر', + 'email' => 'البريد الإلكتروني المسجل', + 'password' => 'Password', + 'confirm-password' => 'Confirm Password', + 'back-link-title' => 'العودة للتوقيع', + 'submit-btn-title' => 'أعد ضبط كلمة السر' + ], + 'roles' => [ + 'title' => 'الأدوار', + 'add-role-title' => 'أضف الدور', + 'edit-role-title' => 'حرر الدور', + 'save-btn-title' => 'احفظ الدور', + 'general' => 'ألف-لمحة عامة', + 'name' => 'Name', + 'description' => 'الوصف', + 'access-control' => 'مراقبة الدخول', + 'permissions' => 'الأذون', + 'custom' => 'مخصص', + 'all' => 'الكل' + ], + 'users' => [ + 'title' => 'User', + 'add-user-title' => 'إضافة مستخدم', + 'edit-user-title' => 'حرر المستخدم', + 'save-btn-title' => 'احفظ المستخدم', + 'general' => 'ألف-لمحة عامة', + 'email' => 'Email', + 'name' => 'Name', + 'password' => 'Password', + 'confirm-password' => 'Confirm Password', + 'status-and-role' => 'المركز والدور', + 'role' => 'الدور', + 'status' => 'الحالة', + 'account-is-active' => 'الحساب نشط', + 'current-password' => 'أدخل كلمة السر الحالية', + 'confirm-delete' => 'تأكيد حذف هذا الحساب', + 'confirm-delete-title' => 'تأكيد كلمة السر قبل حذف', + 'delete-last' => 'على الأقل مدير واحد مطلوب.', + 'delete-success' => 'نجاح! حذف المستخدم', + 'incorrect-password' => 'كلمة السر التي أدخلتها غير صحيحة', + 'password-match' => 'كلمة السر الحالية لا تطابق.', + 'account-save' => 'الحساب التغييرات و الموفرة بنجاح.', + 'login-error' => 'الرجاء التحقق من أوراق اعتمادك ومحاولة مرة أخرى.', + 'activate-warning' => 'حسابك لم يتم تفعيله بعد ، الرجاء الاتصال بالمدير.' + ], + 'sessions' => [ + 'title' => 'وقع هنا', + 'email' => 'Email', + 'password' => 'Password', + 'forget-password-link-title' => 'نسيت كلمة السر ؟', + 'remember-me' => 'تذكريني', + 'submit-btn-title' => 'وقع هنا' + ] + ], + + 'sales' => [ + 'orders' => [ + 'title' => 'الأوامر', + 'view-title' => 'الأوامر #:order_id', + 'cancel-btn-title' => 'إلغاء', + 'shipment-btn-title' => 'السفينة', + 'invoice-btn-title' => 'فاتورة', + 'info' => 'معلومات', + 'invoices' => 'الفواتير', + 'shipments' => 'الشحنات', + 'order-and-account' => 'النظام والحساب', + 'order-info' => 'أمر معلومات', + 'order-date' => 'تاريخ الطلب', + 'order-status' => 'حالة الترتيب', + 'channel' => 'القناة', + 'customer-name' => 'Customer Name', + 'email' => 'Email', + 'contact-number' => 'Contact Number', + 'account-info' => 'معلومات الحساب', + 'address' => 'Address', + 'shipping-address' => 'Shipping Address', + 'billing-address' => 'Billing Address', + 'payment-and-shipping' => 'الدفع والشحن', + 'payment-info' => 'معلومات الدفع', + 'payment-method' => 'طريقة الدفع', + 'currency' => 'العملة', + 'shipping-info' => 'معلومات الشحن', + 'shipping-method' => 'Shipping Method', + 'shipping-price' => 'Shipping Price', + 'products-ordered' => 'المنتجات المطلوبة', + 'SKU' => 'SKU', + 'product-name' => 'Product Name', + 'qty' => 'Qty', + 'item-status' => 'حالة البند', + 'item-ordered' => 'أمر (:qty_ordered)', + 'item-invoice' => '3-الفواتير (:qty_invoiced)', + 'item-shipped' => 'شحنت (:qty_shipped)', + 'item-canceled' => 'ملغاة (:qty_canceled)', + 'item-refunded' => 'Refunded (:qty_refunded)', + 'price' => 'Price', + 'total' => 'المجموع', + 'subtotal' => 'المجموع الفرعي', + 'shipping-handling' => 'الشحن والمناولة', + 'discount' => 'Discount', + 'tax' => 'الضرائب', + 'tax-percent' => 'نسبة الضرائب', + 'tax-amount' => 'المبلغ الضريبي', + 'discount-amount' => 'Discount Amount', + 'discount-amount' => 'مبلغ الخصم', + 'grand-total' => 'المجموع الكلي', + 'total-paid' => 'المجموع المدفوع', + 'total-refunded' => 'مجموع المبالغ المستردة', + 'total-due' => 'المجموع المستحق', + 'cancel-confirm-msg' => 'هل أنت متأكد من أنك تريد إلغاء هذا الطلب ؟', + 'refunds' => 'Refunds', + 'refunded' => 'Refunded' + ], + 'invoices' => [ + 'title' => 'الفواتير', + 'id' => 'Id', + 'invoice-id' => 'Invoice Id', + 'date' => 'Invoice Date', + 'order-id' => 'Order Id', + 'customer-name' => 'Customer Name', + 'status' => 'الحالة', + 'amount' => 'المبلغ', + 'action' => 'الإجراء', + 'add-title' => 'أنشئ الفاتورة', + 'save-btn-title' => 'احفظ الفاتورة', + 'qty' => 'Qty', + 'qty-ordered' => 'أمر qty', + 'qty-to-invoice' => 'qty إلى فاتورة', + 'view-title' => 'فاتورة #:invoice_id', + 'bill-to' => 'بيل إلى', + 'ship-to' => 'السفينة إلى', + 'print' => 'اطبع', + 'order-date' => 'Order Date', + 'creation-error' => 'لا يسمح بإنشاء الفواتير.', + 'product-error' => 'ولا يمكن إعداد الفاتورة بدون منتجات.' + ], + + 'shipments' => [ + 'title' => 'الشحنات', + 'id' => 'Id', + 'date' => 'Shipment Date', + 'order-id' => 'Order Id', + 'order-date' => 'Order date', + 'customer-name' => 'Customer Name', + 'total-qty' => 'Total Qty', + 'action' => 'الإجراء', + 'add-title' => 'أنشئ شحنة', + 'save-btn-title' => 'احفظ الشحنة', + 'qty-ordered' => 'أمر qty', + 'qty-to-ship' => 'من كيوتي إلى السفينة', + 'available-sources' => 'المصادر المتاحة', + 'source' => 'المصدر', + 'select-source' => 'رجاء تحديد المصدر', + 'qty-available' => 'qty متوفر', + 'inventory-source' => 'مصدر الجرد', + 'carrier-title' => 'حق الناقل في الملكية', + 'tracking-number' => 'رقم التتبع', + 'view-title' => 'الشحن #:shipment_id', + 'creation-error' => 'لا يمكن إنشاء الشحنة لهذا الطلب.', + 'order-error' => 'لا يسمح بإنشاء شحنة الطلب.', + 'quantity-invalid' => 'الكمية المطلوبة غير صالحة أو غير متاحة.', + ], + + 'refunds' => [ + 'title' => 'Refunds', + 'id' => 'Id', + 'add-title' => 'Create Refund', + 'save-btn-title' => 'Refund', + 'order-id' => 'Order Id', + 'qty-ordered' => 'Qty Ordered', + 'qty-to-refund' => 'Qty To Refund', + 'refund-shipping' => 'Refund Shipping', + 'adjustment-refund' => 'Adjustment Refund', + 'adjustment-fee' => 'Adjustment Fee', + 'update-qty' => 'Update Quantities', + 'invalid-qty' => 'Found invalid quantity for return items.', + 'refund-limit-error' => 'The most money available to refund is :amount.', + 'refunded' => 'Refunded', + 'date' => 'Refund Date', + 'customer-name' => 'Customer Name', + 'status' => 'Status', + 'action' => 'Action', + 'view-title' => 'Refund #:refund_id', + 'invalid-refund-amount-error' => 'Refund amount should be non zero.' + ] + ], + + 'catalog' => [ + 'products' => [ + 'title' => 'المنتجات', + 'add-product-btn-title' => 'أضف المنتج', + 'add-title' => 'أضف المنتج', + 'edit-title' => 'حرر المنتج', + 'save-btn-title' => 'احفظ المنتج', + 'general' => 'ألف-لمحة عامة', + 'product-type' => 'نوع المنتج', + 'simple' => 'بسيط', + 'configurable' => 'مهيء', + 'familiy' => 'الصفة الأسرة', + 'sku' => 'SKU', + 'configurable-attributes' => 'خصائص قابلة للتهيئة', + 'attribute-header' => 'Attribute(s)', + 'attribute-option-header' => 'Attribute Option(s)', + 'no' => 'لا.', + 'yes' => 'نعم.', + 'disabled' => 'معطل', + 'enabled' => 'مكن', + 'add-variant-btn-title' => 'إضافة متغير', + 'name' => 'Name', + 'qty' => 'Qty', + 'price' => 'Price', + 'weight' => 'Weight', + 'status' => 'الحالة', + 'enabled' => 'مكن', + 'disabled' => 'معطل', + 'add-variant-title' => 'إضافة متغير', + 'variant-already-exist-message' => 'المتغير مع نفس الخاصية خيارات موجود.', + 'add-image-btn-title' => 'إضافة صورة', + 'mass-delete-success' => 'تم حذف كل الفهرس المنتقى من المنتجات بنجاح', + 'mass-update-success' => 'كل الفهرس المختار من المنتجات تم تحديثه بنجاح', + 'configurable-error' => 'رجاء تحديد واحد مهيء الصفة.', + 'categories' => 'Categories', + 'images' => 'Images', + 'inventories' => 'Inventories', + 'variations' => 'Variations', + 'downloadable' => 'Downloadable Information', + 'links' => 'Links', + 'add-link-btn-title' => 'Add Link', + 'samples' => 'Samples', + 'add-sample-btn-title' => 'Add Sample', + 'downloads' => 'Download Allowed', + 'file' => 'File', + 'sample' => 'Sample', + 'upload-file' => 'Upload File', + 'url' => 'Url', + 'sort-order' => 'Sort Order', + 'browse-file' => 'Browse File', + 'product-link' => 'Linked Products', + 'cross-selling' => 'Cross Selling', + 'up-selling' => 'Up Selling', + 'related-products' => 'Related Products', + 'product-search-hint' => 'Start typing product name', + 'no-result-found' => 'Products not found with same name.', + 'searching' => 'Searching ...', + 'grouped-products' => 'Grouped Products', + 'search-products' => 'Search Products', + 'no-result-found' => 'Products not found with same name.', + 'bundle-items' => 'Bundle Items', + 'add-option-btn-title' => 'Add Option', + 'option-title' => 'Option Title', + 'input-type' => 'Input Type', + 'is-required' => 'Is Required', + 'select' => 'Select', + 'radio' => 'Radio', + 'checkbox' => 'Checkbox', + 'multiselect' => 'Multiselect', + 'new-option' => 'New Option', + 'is-default' => 'Is Default' + ], + 'attributes' => [ + 'title' => 'الصفات', + 'add-title' => 'إضافة الصفة', + 'edit-title' => 'حرر الصفة', + 'save-btn-title' => 'احفظ الصفة', + 'general' => 'ألف-لمحة عامة', + 'code' => 'Attribute Code', + 'type' => 'الصفة نوع', + 'text' => 'Text', + 'textarea' => 'Textarea', + 'price' => 'Price', + 'boolean' => 'Boolean', + 'select' => 'Select', + 'multiselect' => 'Multiselect', + 'datetime' => 'Datetime', + 'date' => 'Date', + 'label' => 'Label', + 'admin' => 'Admin', + 'options' => 'Options', + 'position' => 'Position', + 'add-option-btn-title' => 'إضافة خيار', + 'validations' => 'التصديقات', + 'input_validation' => 'التحقق من الإدخال', + 'is_required' => 'Is Required', + 'is_unique' => 'Is Unique', + 'number' => 'Number', + 'decimal' => 'Decimal', + 'email' => 'Email', + 'url' => 'URL', + 'configuration' => 'إعدادات', + 'status' => 'الحالة', + 'yes' => 'نعم.', + 'no' => 'لا.', + 'value_per_locale' => 'القيمة لكل موقع', + 'value_per_channel' => 'القيمة لكل قناة', + 'value_per_channel' => 'القيمة لكل قناة', + 'is_filterable' => 'إستعمل بوصة تسلسل الملاحة', + 'is_configurable' => 'إستعمل إلى إ_ نشئ مهيء منتجname', + 'admin_name' => 'Admin Name', + 'is_visible_on_front' => 'مرئي على صفحة عرض المنتج على الواجهة الأمامية' + ], + 'families' => [ + 'title' => 'الأسر', + 'add-family-btn-title' => 'إضافة عائلة', + 'add-title' => 'إضافة عائلة', + 'edit-title' => 'حرر العائلة', + 'save-btn-title' => 'أنقذ العائلة', + 'general' => 'ألف-لمحة عامة', + 'code' => 'Family Code', + 'name' => 'Name', + 'groups' => 'المجموعات', + 'add-group-title' => 'أضف المجموعة', + 'position' => 'Position', + 'attribute-code' => 'Code', + 'type' => 'النوع', + 'add-attribute-title' => 'إضافة خصائص', + 'search' => 'ابحث', + 'group-exist-error' => 'المجموعة مع الاسم موجود.' + ], + 'categories' => [ + 'title' => 'الفئات', + 'add-title' => 'إضافة الفئة', + 'edit-title' => 'حرر الفئة', + 'save-btn-title' => 'احفظ الفئة', + 'general' => 'ألف-لمحة عامة', + 'name' => 'Name', + 'visible-in-menu' => 'مرئي في القائمة', + 'yes' => 'نعم.', + 'no' => 'لا.', + 'position' => 'Position', + 'description-and-images' => 'الوصف والصور', + 'description' => 'الوصف', + 'parent-category' => 'الفئة الأم', + 'seo' => 'محرك البحث الأمثل', + 'slug' => 'Slug', + 'meta_title' => 'Meta Title', + 'meta_description' => 'Meta Description', + 'meta_keywords' => 'Meta Keywords', + 'image' => 'Image', + ] + ], + + 'configuration' => [ + 'title' => 'إعدادات', + 'save-btn-title' => 'احفظ', + 'save-message' => 'الإعدادات المحفوظة بنجاح', + 'yes' => 'نعم.', + 'no' => 'لا.', + 'delete' => 'احذف', + 'tax-categories' => [ + 'title' => 'فئات الضرائب', + 'add-title' => 'أضف فئة الضرائب', + 'edit-title' => 'حرر فئة الضرائب', + 'save-btn-title' => 'احفظ فئة الضرائب', + 'general' => 'Tax Category', + 'select-channel' => 'انتق القناة', + 'name' => 'Name', + 'code' => 'Code', + 'description' => 'الوصف', + 'select-taxrates' => 'انتق ضريبة المعدلات', + 'edit' => [ + 'title' => 'حرر فئة الضرائب', + 'edit-button-title' => 'حرر فئة الضرائب' + ] + ], + 'tax-rates' => [ + 'title' => 'المعدلات الضريبية', + 'add-title' => 'أضف معدل الضريبة', + 'edit-title' => 'حرر معدل الضريبة', + 'save-btn-title' => 'معدل الادخار الضريبي', + 'general' => 'معدل الضرائب', + 'identifier' => 'معرف', + 'is_zip' => 'Enable Zip Range', + 'zip_from' => 'Zip From', + 'zip_to' => 'Zip To', + 'state' => 'State', + 'select-state' => 'اختر منطقة أو ولاية أو مقاطعة.', + 'country' => 'Country', + 'tax_rate' => 'Rate', + 'edit' => [ + 'title' => 'حرر معدل الضريبة', + 'edit-button-title' => 'حرر المعدل' + ], + 'zip_code' => 'Zip Code', + 'is_zip' => 'Enable Zip Range', + ], + 'sales' => [ + 'shipping-method' => [ + 'title' => 'طرائق الشحن', + 'save-btn-title' => 'احفظ', + 'description' => 'الوصف', + 'active' => 'نشط', + 'status' => 'الحالة' + ] + ] + ], + + 'settings' => [ + 'locales' => [ + 'title' => 'Locales', + 'add-title' => 'إضافة محلي', + 'edit-title' => 'حرر الموقع', + 'add-title' => 'إضافة محلي', + 'save-btn-title' => 'احفظ محلي', + 'general' => 'ألف-لمحة عامة', + 'code' => 'Code', + 'name' => 'Name' + ], + 'countries' => [ + 'title' => 'Countries', + 'add-title' => 'أضف البلد', + 'save-btn-title' => 'احفظ البلد', + 'general' => 'ألف-لمحة عامة', + 'code' => 'Code', + 'name' => 'Name' + ], + 'currencies' => [ + 'title' => 'Currencies', + 'add-title' => 'أضف عملة', + 'edit-title' => 'حرر العملة', + 'save-btn-title' => 'احفظ العملة', + 'general' => 'General', + 'code' => 'Code', + 'name' => 'Name', + 'symbol' => 'Symbol' + ], + 'exchange_rates' => [ + 'title' => 'Exchange Rates', + 'add-title' => 'Add Exchange Rate', + 'edit-title' => 'Edit Exchange Rate', + 'save-btn-title' => 'Save Exchange Rate', + 'general' => 'ألف-لمحة عامة', + 'source_currency' => 'العملة الأصلية', + 'target_currency' => 'العملة المستهدفة', + 'rate' => 'Rate' + ], + 'inventory_sources' => [ + 'title' => 'Inventory Sources', + 'add-title' => 'إضافة قائمة الجرد المصدر', + 'edit-title' => 'حرر مصدر الجرد', + 'save-btn-title' => 'احفظ مصدر الجرد', + 'general' => 'ألف-لمحة عامة', + 'code' => 'Code', + 'name' => 'Name', + 'description' => 'الوصف', + 'source-is-active' => 'المصدر نشط', + 'contact-info' => 'معلومات الاتصال', + 'contact_name' => 'Name', + 'contact_email' => 'Email', + 'contact_number' => 'Contact Number', + 'contact_fax' => 'Fax', + 'address' => 'Source Address', + 'country' => 'Country', + 'state' => 'State', + 'city' => 'City', + 'street' => 'Street', + 'postcode' => 'Postcode', + 'priority' => 'Priority', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'status' => 'Status' + ], + 'channels' => [ + 'title' => 'Channels', + 'add-title' => 'أضف القناة', + 'edit-title' => 'تحرير القناة', + 'save-btn-title' => 'احفظ القناة', + 'general' => 'ألف-لمحة عامة', + 'code' => 'Code', + 'name' => 'Name', + 'description' => 'الوصف', + 'hostname' => 'Hostname', + 'currencies-and-locales' => 'العملات والمواضع', + 'locales' => 'Locales', + 'default-locale' => 'الموقع الافتراضي', + 'currencies' => 'Currencies', + 'base-currency' => 'Base Currency', + 'root-category' => 'Root Category', + 'inventory_sources' => 'Inventory Sources', + 'design' => 'التصميم', + 'theme' => 'السمة', + 'home_page_content' => 'محتوى الصفحة الرئيسية', + 'footer_content' => 'المحتويات', + 'logo' => 'الشعار', + 'favicon' => 'Favicon' + ], + 'sliders' => [ + 'title' => 'المنزلقون', + 'name' => 'Name', + 'add-title' => 'أنشئ مزلق', + 'edit-title' => 'حرر المزلق', + 'save-btn-title' => 'احفظ المنزلق', + 'general' => 'ألف-لمحة عامة', + 'image' => 'Image', + 'content' => 'Content', + 'channels' => 'Channel', + 'created-success' => 'عنصر المزلق أنشئ بنجاح', + 'created-fault' => 'خطأ في إنشاء عنصر المزلق', + 'update-success' => 'تم تحديث عنصر المزلق بنجاح', + 'update-fail' => 'المنزلق لا يمكن تحديثه', + 'delete-success' => 'لا يستطيع حذف الأخير عنصر', + 'delete-fail' => 'تم حذف عنصر المزلق بنجاح' + ], + 'tax-categories' => [ + 'title' => 'فئات الضرائب', + 'add-title' => 'إنشاء فئة ضريبية', + 'edit-title' => 'حرر فئة الضرائب', + 'save-btn-title' => 'احفظ فئة الضرائب', + 'general' => 'الفئة الضريبية', + 'select-channel' => 'انتق القناة', + 'name' => 'Name', + 'code' => 'Code', + 'description' => 'الوصف', + 'select-taxrates' => 'انتق ضريبة المعدلات', + 'edit' => [ + 'title' => 'حرر فئة الضرائب', + 'edit-button-title' => 'حرر فئة الضرائب' + ], + 'create-success' => 'الفئة الضريبية الجديدة المنشأة', + 'create-error' => 'خطأ أثناء إنشاء فئة ضريبية', + 'update-success' => 'الفئة الضريبية المستكملة بنجاح', + 'update-error' => 'خطأ عند تحديث فئة الضرائب', + 'atleast-one' => 'لا يستطيع حذف الأخير ضريبة الفئة', + 'delete' => 'الفئة الضريبية المحذوفة بنجاح' + ], + 'tax-rates' => [ + 'title' => 'المعدلات الضريبية', + 'add-title' => 'إنشاء ضريبة معدل', + 'edit-title' => 'حرر معدل الضريبة', + 'save-btn-title' => 'معدل الادخار الضريبي', + 'general' => 'معدل الضرائب', + 'identifier' => 'معرف', + 'is_zip' => 'Enable Zip Range', + 'zip_from' => 'Zip From', + 'zip_to' => 'Zip To', + 'state' => 'State', + 'select-state' => 'اختر منطقة أو ولاية أو مقاطعة.', + 'country' => 'Country', + 'tax_rate' => 'Rate', + 'edit' => [ + 'title' => 'حرر معدل الضريبة', + 'edit-button-title' => 'حرر المعدل' + ], + 'zip_code' => 'Zip Code', + 'is_zip' => 'Enable Zip Range', + 'create-success' => 'معدل الضرائب الذي تم إنشاؤه بنجاح', + 'create-error' => 'لا يستطيع إنشاء ضريبة معدل', + 'update-success' => 'معدل الضريبة تم تحديثه بنجاح', + 'update-error' => 'خطأ! معدل الضرائب لا يمكن تحديثه', + 'delete' => 'معدل الضريبة محذوف بنجاح', + 'atleast-one' => 'لا يستطيع حذف الأخير ضريبة معدل' + ], + 'development' => [ + 'title' => 'تطوير', + ] + ], + + 'customers' => [ + 'groups' =>[ + 'add-title' => 'أضف المجموعة', + 'edit-title' => 'حرر المجموعة', + 'save-btn-title' => 'احفظ المجموعة', + 'title' => 'المجموعات', + 'save-btn-title' => 'احفظ المجموعة', + 'code' => 'Code', + 'name' => 'Name', + 'is_user_defined' => 'تعريف المستخدم', + 'yes' => 'نعم.' + ], + 'customers' => [ + 'add-title' => 'أضف زبونا', + 'edit-title' => 'حرر الزبون', + 'title' => 'زبائن', + 'first_name' => 'First Name', + 'last_name' => 'Last Name', + 'gender' => 'Gender', + 'email' => 'Email', + 'date_of_birth' => 'Date of Birth', + 'phone' => 'Phone', + 'customer_group' => 'مجموعة العملاء', + 'save-btn-title' => 'احفظ الزبون', + 'channel_name' => 'Channel Name', + 'state' => 'State', + 'select-state' => 'اختر منطقة أو ولاية أو مقاطعة.', + 'country' => 'Country', + 'male' => 'Male', + 'female' => 'Female', + 'phone' => 'Phone', + 'group-default' => 'لا يستطيع حذف افتراضي المجموعة.', + ], + 'reviews' => [ + 'title' => 'باء-الاستعراضات', + 'edit-title' => 'حرر الاستعراض', + 'rating' => 'التقييم', + 'status' => 'الحالة', + 'comment' => 'تعليق', + 'pending' => 'معلقة', + 'approved' => 'الموافقة', + 'disapproved' => 'رفض' + ], + 'subscribers' => [ + 'title' => 'المشتركين في الرسالة الإخبارية', + 'title-edit' => 'تحرير رسالة إخبارية مشترك', + 'email' => 'Email', + 'is_subscribed' => 'مشترك', + 'edit-btn-title' => 'تحديث المشترك', + 'update-success' => 'تم تحديث المشترك بنجاح', + 'update-failed' => 'خطأ! لا يمكنك إلغاء تسجيل المشترك', + 'delete' => 'تم حذف المشترك بنجاح', + 'delete-failed' => 'خطأ! المشترك لا يمكن حذفه' + ] + ], + + 'error' => [ + 'go-to-home' => 'إذهب إلى البيت', + 'in-maitainace' => 'In Maintenance', + 'right-back' => 'Be Right Back', + + '404' => [ + 'page-title' => '404 صفحة غير موجودة', + 'name' => '404', + 'title' => 'الصفحة غير موجودة', + 'message' => 'الصفحة التي تبحث عنها غير موجودة أو تم نقلها. ابحر باستخدام قائمة جانبية.' + ], + '403' => [ + 'page-title' => 'خطأ محظور 403', + 'name' => '403', + 'title' => 'خطأ محظور', + 'message' => 'ليس لديك إذن للدخول إلى هذه الصفحة' + ], + '500' => [ + 'page-title' => 'خطأ الخادم الداخلي 500', + 'name' => '500', + 'title' => 'خطأ الخادم الداخلي', + 'message' => 'واجه الخادم خطأ داخلي.' + ], + '401' => [ + 'page-title' => '401 خطأ غير مصرح به', + 'name' => '401', + 'title' => 'خطأ غير مصرح به', + 'message' => 'ولم يطبق الطلب لأنه يفتقر إلى وثائق إثبات صحيحة للمورد المستهدف.' + ], + ], + + 'export' => [ + 'export' => 'صدر', + 'import' => 'استيراد', + 'format' => 'انتق تنسيق', + 'download' => 'نزل', + 'upload' => 'الارسال', + 'csv' => 'CSV', + 'xls' => 'XLS', + 'file' => 'ملف', + 'upload-error' => 'الملف يجب أن يكون ملف من نوع: xls, xlsx, csv.', + 'duplicate-error' => 'معرف يجب أن يكون فريد ، معرف مكرر :identifier at row :position.' + ], + + 'response' => [ + 'create-success' => ':name created successfully.', + 'update-success' => ':name updated successfully.', + 'delete-success' => ':name deleted successfully.', + 'last-delete-error' => 'واحد على الأقل :name is required.', + 'user-define-error' => 'لا يستطيع حذف نظام :name', + 'attribute-error' => ':name is used in configurable products.', + 'attribute-product-error' => ':name is used in products.', + 'customer-associate' => ':name can not be deleted because customer is associated with this group.', + 'currency-delete-error' => 'يتم تعيين هذه العملة كعملة أساسية القناة لذلك لا يمكن حذفها.', + 'upload-success' => ':name uploaded successfully.', + 'delete-category-root' => 'لا يستطيع حذف الجذر الفئة', + 'create-root-failure' => 'الفئة مع الاسم الجذر موجود', + 'cancel-success' => ':name canceled successfully.', + 'cancel-error' => ':name can not be canceled.', + 'already-taken' => 'The :name has already been taken.', + 'order-pending' => 'لا يمكن حذف الحساب لأن بعض الطلبات (الطلبات) معلقة أو قيد المعالجة.' + ], + + 'footer' => [ + 'copy-right' => ' مدعوم من Bagisto ، مشروع مجتمع بواسطة Webkul' + ], + + 'admin' => [ + 'system' => [ + 'catalog' => 'Catalog', + 'products' => 'Products', + 'review' => 'Review', + 'allow-guest-review' => 'Allow Guest Review', + 'inventory' => 'Inventory', + 'stock-options' => 'Stock Options', + 'allow-backorders' => 'Allow Backorders', + 'customer' => 'Customer', + 'settings' => 'Settings', + 'address' => 'Address', + 'street-lines' => 'Lines in a Street Address', + 'sales' => 'Sales', + 'shipping-methods' => 'Shipping Methods', + 'free-shipping' => 'Free Shipping', + 'flate-rate-shipping' => 'Flat Rate Shipping', + 'shipping' => 'Shipping', + 'origin' => 'Origin', + 'country' => 'Country', + 'state' => 'State', + 'zip' => 'Zip', + 'city' => 'City', + 'street-address' => 'Street Address', + 'title' => 'Title', + 'description' => 'Description', + 'rate' => 'Rate', + 'status' => 'Status', + 'type' => 'Type', + 'payment-methods' => 'Payment Methods', + 'cash-on-delivery' => 'Cash On Delivery', + 'money-transfer' => 'Money Transfer', + 'paypal-standard' => 'Paypal Standard', + 'business-account' => 'Business Account', + 'newsletter' => 'NewsLetter Subscription', + 'newsletter-subscription' => 'Allow NewsLetter Subscription', + 'email' => 'Email Verification', + 'email-verification' => 'Allow Email Verification', + 'sort_order' => 'Sort Order', + 'general' => 'General', + 'footer' => 'Footer', + 'content' => 'Content', + 'footer-content' => 'Footer Text', + 'locale-options' => 'Unit Options', + 'weight-unit' => 'Weight Unit', + 'admin-page-limit' => 'العناصر الافتراضية لكل صفحة (المشرف)', + 'design' => 'Design', + 'admin-logo' => 'Admin Logo', + 'logo-image' => 'Logo Image', + 'credit-max' => 'Customer Credit Max', + 'credit-max-value' => 'Credit Max Value', + 'use-credit-max' => 'Use Credit Max', + 'order-settings' => 'Order Settings', + 'orderNumber' => 'Order Number Settings', + 'order-number-prefix' => 'Order Number Prefix', + 'order-number-length' => 'Order Number Length', + 'order-number-suffix' => 'Order Number Suffix', + 'default' => 'Default', + 'sandbox' => 'Sandbox' + ] + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php new file mode 100755 index 000000000..71aa08dac --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -0,0 +1,1263 @@ + 'Save', + 'create' => 'Create', + 'update' => 'Update', + 'delete' => 'Delete', + 'failed' => 'Failed', + 'store' => 'Store', + 'image' => 'Image', + 'no result' => 'No result', + 'product' => 'Product', + 'attribute' => 'Attribute', + 'actions' => 'Actions', + 'id' => 'ID', + 'action' => 'action', + 'yes' => 'Yes', + 'no' => 'No', + 'true' => 'True', + 'false' => 'False', + 'apply' => 'Apply', + 'action' => 'Action', + 'label' => 'Label', + 'name' => 'Name', + 'title' => 'Title', + 'code' => 'Code', + 'type' => 'Type', + 'required' => 'Required', + 'unique' => 'Unique', + 'locale-based' => 'Locale based', + 'channel-based' => 'Channel based', + 'status' => 'Status', + 'select-option' => 'Select option', + 'category' => 'Category', + + 'common' => [ + 'no-result-found' => 'We could not find any records.', + 'country' => 'Country', + 'state' => 'State', + 'true' => 'True', + 'false' => 'False' + ], + + 'layouts' => [ + 'my-account' => 'My Account', + 'logout' => 'Logout', + 'visit-shop' => 'Visit Shop', + 'dashboard' => 'Dashboard', + 'sales' => 'Sales', + 'orders' => 'Orders', + 'shipments' => 'Shipments', + 'invoices' => 'Invoices', + 'refunds' => 'Refunds', + 'catalog' => 'Catalog', + 'products' => 'Products', + 'categories' => 'Categories', + 'attributes' => 'Attributes', + 'attribute-families' => 'Attribute Families', + 'customers' => 'Customers', + 'groups' => 'Groups', + 'reviews' => 'Reviews', + 'newsletter-subscriptions' => 'Newsletter Subscriptions', + 'configure' => 'Configure', + 'settings' => 'Settings', + 'locales' => 'Locales', + 'currencies' => 'Currencies', + 'exchange-rates' => 'Exchange Rates', + 'inventory-sources' => 'Inventory Sources', + 'channels' => 'Channels', + 'users' => 'Users', + 'roles' => 'Roles', + 'sliders' => 'Sliders', + 'taxes' => 'Taxes', + 'tax-categories' => 'Tax Categories', + 'tax-rates' => 'Tax Rates', + 'promotions' => 'Promotions', + 'discount' => 'Discount', + 'cms' => 'CMS' + ], + + 'acl' => [ + 'dashboard' => 'Dashboard', + 'sales' => 'Sales', + 'orders' => 'Orders', + 'shipments' => 'Shipments', + 'invoices' => 'Invoices', + 'catalog' => 'Catalog', + 'products' => 'Products', + 'categories' => 'Categories', + 'attributes' => 'Attributes', + 'attribute-families' => 'Attribute Families', + 'customers' => 'Customers', + 'groups' => 'Groups', + 'reviews' => 'Reviews', + 'newsletter-subscriptions' => 'Newsletter Subscriptions', + 'configure' => 'Configure', + 'settings' => 'Settings', + 'locales' => 'Locales', + 'currencies' => 'Currencies', + 'exchange-rates' => 'Exchange Rates', + 'inventory-sources' => 'Inventory Sources', + 'channels' => 'Channels', + 'users' => 'Users', + 'roles' => 'Roles', + 'sliders' => 'Sliders', + 'taxes' => 'Taxes', + 'tax-categories' => 'Tax Categories', + 'tax-rates' => 'Tax Rates', + 'edit' => 'Edit', + 'create' => 'Add', + 'delete' => 'Delete', + 'promotions' => 'Promotions', + 'cart-rules' => 'Cart Rules', + 'catalog-rules' => 'Catalog Rules', + ], + + 'dashboard' => [ + 'title' => 'Dashboard', + 'from' => 'From', + 'to' => 'To', + 'total-customers' => 'Total Customers', + 'total-orders' => 'Total Orders', + 'total-sale' => 'Total Sale', + 'average-sale' => 'Average Order Sale', + 'increased' => ':progress%', + 'decreased' => ':progress%', + 'sales' => 'Sales', + 'top-performing-categories' => 'Top Performing Categories', + 'product-count' => ':count Products', + 'top-selling-products' => 'Top Selling Products', + 'sale-count' => ':count Sales', + 'customer-with-most-sales' => 'Customer With Most Sales', + 'order-count' => ':count Orders', + 'revenue' => 'Revenue :total', + 'stock-threshold' => 'Stock Threshold', + 'qty-left' => ':qty Left' + ], + + 'datagrid' => [ + 'mass-ops' => [ + 'method-error' => 'Error! Wrong method detected, please check mass action configuration', + 'delete-success' => 'Selected index of :resource were successfully deleted', + 'partial-action' => 'Some actions were not performed due restricted system constraints on :resource', + 'update-success' => 'Selected index of :resource were successfully updated', + 'no-resource' => 'The resource provided for insufficient for the action' + ], + + 'id' => 'ID', + 'status' => 'Status', + 'code' => 'Code', + 'admin-name' => 'Name', + 'name' => 'Name', + 'direction' => 'Direction', + 'fullname' => 'Full Name', + 'type' => 'Type', + 'required' => 'Required', + 'unique' => 'Unique', + 'per-locale' => 'Locale Based', + 'per-channel' => 'Channel Based', + 'position' => 'Position', + 'locale' => 'Locale', + 'hostname' => 'Hostname', + 'email' => 'Email', + 'group' => 'Group', + 'phone' => 'Phone', + 'gender' => 'Gender', + 'title' => 'Title', + 'layout' => 'Layout', + 'url-key' => 'URL Key', + 'comment' => 'Comment', + 'product-name' => 'Product', + 'currency-name' => 'Currency Name', + 'exch-rate' => 'Exchange Rate', + 'priority' => 'Priority', + 'subscribed' => 'Subscribed', + 'base-total' => 'Base Total', + 'grand-total' => 'Grand Total', + 'order-date' => 'Order Date', + 'channel-name' => 'Channel Name', + 'billed-to' => 'Billed To', + 'shipped-to' => 'Shipped To', + 'order-id' => 'Order Id', + 'invoice-date' => 'Invoice Date', + 'total-qty' => 'Total Qty', + 'inventory-source' => 'Inventory Source', + 'shipment-date' => 'Shipment Date', + 'shipment-to' => 'Shipping To', + 'sku' => 'SKU', + 'price' => 'Price', + 'qty' => 'Quantity', + 'permission-type' => 'Permission Type', + 'identifier' => 'Identifier', + 'state' => 'State', + 'country' => 'Country', + 'tax-rate' => 'Rate', + 'role' => 'Role', + 'sub-total' => 'Sub Total', + 'no-of-products' => 'Number of Products', + 'attribute-family' => 'Attribute Family', + 'starts-from' => 'Starts From', + 'ends-till' => 'Ends Till', + 'per-cust' => 'Per Customer', + 'usage-throttle' => 'Usage Times', + 'for-guest' => 'For Guest', + 'order_number' => 'Order Number', + 'refund-date' => 'Refund Date', + 'refunded' => 'Refunded', + 'start' => 'Start', + 'end' => 'End', + 'active' => 'Active', + 'inactive' => 'Inactive', + 'coupon-code' => 'Coupon Code', + 'times-used' => 'Times Used', + 'created-date' => 'Created Date', + 'expiration-date' => 'Expiration Date', + 'delete' => 'Delete' + ], + + 'account' => [ + 'title' => 'My Account', + 'save-btn-title' => 'Save', + 'general' => 'General', + 'name' => 'Name', + 'email' => 'Email', + 'password' => 'Password', + 'confirm-password' => 'Confirm Password', + 'change-password' => 'Change Account Password', + 'current-password' => 'Current Password' + ], + + 'users' => [ + 'forget-password' => [ + 'title' => 'Forget Password', + 'header-title' => 'Recover Password', + 'email' => 'Registered Email', + 'password' => 'Password', + 'confirm-password' => 'Confirm Password', + 'back-link-title' => 'Back to Sign In', + 'submit-btn-title' => 'Send Password Reset Email' + ], + + 'reset-password' => [ + 'title' => 'Reset Password', + 'email' => 'Registered Email', + 'password' => 'Password', + 'confirm-password' => 'Confirm Password', + 'back-link-title' => 'Back to Sign In', + 'submit-btn-title' => 'Reset Password' + ], + + 'roles' => [ + 'title' => 'Roles', + 'add-role-title' => 'Add Role', + 'edit-role-title' => 'Edit Role', + 'save-btn-title' => 'Save Role', + 'general' => 'General', + 'name' => 'Name', + 'description' => 'Description', + 'access-control' => 'Access Control', + 'permissions' => 'Permissions', + 'custom' => 'Custom', + 'all' => 'All' + ], + + 'users' => [ + 'title' => 'User', + 'add-user-title' => 'Add User', + 'edit-user-title' => 'Edit User', + 'save-btn-title' => 'Save User', + 'general' => 'General', + 'email' => 'Email', + 'name' => 'Name', + 'password' => 'Password', + 'confirm-password' => 'Confirm Password', + 'status-and-role' => 'Status and Role', + 'role' => 'Role', + 'status' => 'Status', + 'account-is-active' => 'Account is Active', + 'current-password' => 'Enter Current Password', + 'confirm-delete' => 'Confirm Delete This Account', + 'confirm-delete-title' => 'Confirm password before delete', + 'delete-last' => 'At least one admin is required.', + 'delete-success' => 'Success! User deleted', + 'incorrect-password' => 'The password you entered is incorrect', + 'password-match' => 'Current password does not match.', + 'account-save' => 'Account changes saved successfully.', + 'login-error' => 'Please check your credentials and try again.', + 'activate-warning' => 'Your account is yet to be activated, please contact administrator.' + ], + + 'sessions' => [ + 'title' => 'Sign In', + 'email' => 'Email', + 'password' => 'Password', + 'forget-password-link-title' => 'Forget Password ?', + 'remember-me' => 'Remember Me', + 'submit-btn-title' => 'Sign In' + ] + ], + + 'sales' => [ + 'orders' => [ + 'title' => 'Orders', + 'view-title' => 'Order #:order_id', + 'cancel-btn-title' => 'Cancel', + 'shipment-btn-title' => 'Ship', + 'invoice-btn-title' => 'Invoice', + 'info' => 'Information', + 'invoices' => 'Invoices', + 'shipments' => 'Shipments', + 'order-and-account' => 'Order and Account', + 'order-info' => 'Order Information', + 'order-date' => 'Order Date', + 'order-status' => 'Order Status', + 'channel' => 'Channel', + 'customer-name' => 'Customer Name', + 'email' => 'Email', + 'contact-number' => 'Contact Number', + 'account-info' => 'Account Information', + 'address' => 'Address', + 'shipping-address' => 'Shipping Address', + 'billing-address' => 'Billing Address', + 'payment-and-shipping' => 'Payment and Shipping', + 'payment-info' => 'Payment Information', + 'payment-method' => 'Payment Method', + 'currency' => 'Currency', + 'shipping-info' => 'Shipping Information', + 'shipping-method' => 'Shipping Method', + 'shipping-price' => 'Shipping Price', + 'products-ordered' => 'Products Ordered', + 'SKU' => 'SKU', + 'product-name' => 'Product Name', + 'qty' => 'Qty', + 'item-status' => 'Item Status', + 'item-ordered' => 'Ordered (:qty_ordered)', + 'item-invoice' => 'Invoiced (:qty_invoiced)', + 'item-shipped' => 'shipped (:qty_shipped)', + 'item-canceled' => 'Canceled (:qty_canceled)', + 'item-refunded' => 'Refunded (:qty_refunded)', + 'price' => 'Price', + 'total' => 'Total', + 'subtotal' => 'Subtotal', + 'shipping-handling' => 'Shipping & Handling', + 'discount' => 'Discount', + 'tax' => 'Tax', + 'tax-percent' => 'Tax Percent', + 'tax-amount' => 'Tax Amount', + 'discount-amount' => 'Discount Amount', + 'discount-amount' => 'Discount Amount', + 'grand-total' => 'Grand Total', + 'total-paid' => 'Total Paid', + 'total-refunded' => 'Total Refunded', + 'total-due' => 'Total Due', + 'cancel-confirm-msg' => 'Are you sure you want to cancel this order ?', + 'refund-btn-title' => 'Refund', + 'refunds' => 'Refunds' + ], + + 'invoices' => [ + 'title' => 'Invoices', + 'id' => 'Id', + 'invoice-id' => 'Invoice Id', + 'date' => 'Invoice Date', + 'order-id' => 'Order Id', + 'customer-name' => 'Customer Name', + 'status' => 'Status', + 'amount' => 'Amount', + 'action' => 'Action', + 'add-title' => 'Create Invoice', + 'save-btn-title' => 'Save Invoice', + 'qty' => 'Qty', + 'qty-ordered' => 'Qty Ordered', + 'qty-to-invoice' => 'Qty to Invoice', + 'view-title' => 'Invoice #:invoice_id', + 'bill-to' => 'Bill to', + 'ship-to' => 'Ship to', + 'print' => 'Print', + 'order-date' => 'Order Date', + 'creation-error' => 'Order invoice creation is not allowed.', + 'product-error' => 'Invoice can not be created without products.' + ], + + 'shipments' => [ + 'title' => 'Shipments', + 'id' => 'Id', + 'date' => 'Shipment Date', + 'order-id' => 'Order Id', + 'order-date' => 'Order date', + 'customer-name' => 'Customer Name', + 'total-qty' => 'Total Qty', + 'action' => 'Action', + 'add-title' => 'Create Shipment', + 'save-btn-title' => 'Save Shipment', + 'qty-ordered' => 'Qty Ordered', + 'qty-to-ship' => 'Qty to Ship', + 'available-sources' => 'Available Sources', + 'source' => 'Source', + 'select-source' => 'Please Select Source', + 'qty-available' => 'Qty Available', + 'inventory-source' => 'Inventory Source', + 'carrier-title' => 'Carrier Title', + 'tracking-number' => 'Tracking Number', + 'view-title' => 'Shipment #:shipment_id', + 'creation-error' => 'Shipment can not be created for this order.', + 'order-error' => 'Order shipment creation is not allowed.', + 'quantity-invalid' => 'Requested quantity is invalid or not available.', + ], + + 'refunds' => [ + 'title' => 'Refunds', + 'id' => 'Id', + 'add-title' => 'Create Refund', + 'save-btn-title' => 'Refund', + 'order-id' => 'Order Id', + 'qty-ordered' => 'Qty Ordered', + 'qty-to-refund' => 'Qty To Refund', + 'refund-shipping' => 'Refund Shipping', + 'adjustment-refund' => 'Adjustment Refund', + 'adjustment-fee' => 'Adjustment Fee', + 'update-qty' => 'Update Quantities', + 'invalid-qty' => 'Found invalid quantity for return items.', + 'refund-limit-error' => 'The most money available to refund is :amount.', + 'refunded' => 'Refunded', + 'date' => 'Refund Date', + 'customer-name' => 'Customer Name', + 'status' => 'Status', + 'action' => 'Action', + 'view-title' => 'Refund #:refund_id', + 'invalid-refund-amount-error' => 'Refund amount should be non zero.' + + ] + ], + + 'catalog' => [ + 'products' => [ + 'title' => 'Products', + 'add-product-btn-title' => 'Add Product', + 'add-title' => 'Add Product', + 'edit-title' => 'Edit Product', + 'save-btn-title' => 'Save Product', + 'general' => 'General', + 'product-type' => 'Product Type', + 'simple' => 'Simple', + 'configurable' => 'Configurable', + 'familiy' => 'Attribute Family', + 'sku' => 'SKU', + 'configurable-attributes' => 'Configurable Attributes', + 'attribute-header' => 'Attribute(s)', + 'attribute-option-header' => 'Attribute Option(s)', + 'no' => 'No', + 'yes' => 'Yes', + 'disabled' => 'Disabled', + 'enabled' => 'Enabled', + 'add-variant-btn-title' => 'Add Variant', + 'name' => 'Name', + 'qty' => 'Qty', + 'price' => 'Price', + 'weight' => 'Weight', + 'status' => 'Status', + 'enabled' => 'Enabled', + 'disabled' => 'Disabled', + 'add-variant-title' => 'Add Variant', + 'variant-already-exist-message' => 'Variant with same attribute options already exists.', + 'add-image-btn-title' => 'Add Image', + 'mass-delete-success' => 'All the selected index of products have been deleted successfully', + 'mass-update-success' => 'All the selected index of products have been updated successfully', + 'configurable-error' => 'Please select atleast one configurable attribute.', + 'categories' => 'Categories', + 'images' => 'Images', + 'inventories' => 'Inventories', + 'variations' => 'Variations', + 'downloadable' => 'Downloadable Information', + 'links' => 'Links', + 'add-link-btn-title' => 'Add Link', + 'samples' => 'Samples', + 'add-sample-btn-title' => 'Add Sample', + 'downloads' => 'Download Allowed', + 'file' => 'File', + 'sample' => 'Sample', + 'upload-file' => 'Upload File', + 'url' => 'Url', + 'sort-order' => 'Sort Order', + 'browse-file' => 'Browse File', + 'product-link' => 'Linked Products', + 'cross-selling' => 'Cross Selling', + 'up-selling' => 'Up Selling', + 'related-products' => 'Related Products', + 'product-search-hint' => 'Start typing product name', + 'no-result-found' => 'Products not found with same name.', + 'searching' => 'Searching ...', + 'grouped-products' => 'Grouped Products', + 'search-products' => 'Search Products', + 'no-result-found' => 'Products not found with same name.', + 'channel' => 'Channels', + 'bundle-items' => 'Bundle Items', + 'add-option-btn-title' => 'Add Option', + 'option-title' => 'Option Title', + 'input-type' => 'Input Type', + 'is-required' => 'Is Required', + 'select' => 'Select', + 'radio' => 'Radio', + 'checkbox' => 'Checkbox', + 'multiselect' => 'Multiselect', + 'new-option' => 'New Option', + 'is-default' => 'Is Default' + ], + + 'attributes' => [ + 'title' => 'Attributes', + 'add-title' => 'Add Attribute', + 'edit-title' => 'Edit Attribute', + 'save-btn-title' => 'Save Attribute', + 'general' => 'General', + 'code' => 'Attribute Code', + 'type' => 'Attribute Type', + 'text' => 'Text', + 'textarea' => 'Textarea', + 'price' => 'Price', + 'boolean' => 'Boolean', + 'select' => 'Select', + 'multiselect' => 'Multiselect', + 'datetime' => 'Datetime', + 'date' => 'Date', + 'label' => 'Label', + 'admin' => 'Admin', + 'options' => 'Options', + 'position' => 'Position', + 'add-option-btn-title' => 'Add Option', + 'validations' => 'Validations', + 'input_validation' => 'Input Validation', + 'is_required' => 'Is Required', + 'is_unique' => 'Is Unique', + 'number' => 'Number', + 'decimal' => 'Decimal', + 'email' => 'Email', + 'url' => 'URL', + 'configuration' => 'Configuration', + 'status' => 'Status', + 'yes' => 'Yes', + 'no' => 'No', + 'value_per_locale' => 'Value Per Locale', + 'value_per_channel' => 'Value Per Channel', + 'value_per_channel' => 'Value Per Channel', + 'is_filterable' => 'Use in Layered Navigation', + 'is_configurable' => 'Use To Create Configurable Product', + 'admin_name' => 'Admin Name', + 'is_visible_on_front' => 'Visible on Product View Page on Front-end', + 'swatch_type' => 'Swatch Type', + 'dropdown' => 'Dropdown', + 'color-swatch' => 'Color Swatch', + 'image-swatch' => 'Image Swatch', + 'text-swatch' => 'Text Swatch', + 'swatch' => 'Swatch', + 'image' => 'Image', + 'file' => 'File', + 'checkbox' => 'Checkbox', + 'use_in_flat' => "Create in Product Flat Table", + 'default_null_option' => 'Create default empty option', + ], + 'families' => [ + 'title' => 'Families', + 'add-family-btn-title' => 'Add Family', + 'add-title' => 'Add Family', + 'edit-title' => 'Edit Family', + 'save-btn-title' => 'Save Family', + 'general' => 'General', + 'code' => 'Family Code', + 'name' => 'Name', + 'groups' => 'Groups', + 'add-group-title' => 'Add Group', + 'position' => 'Position', + 'attribute-code' => 'Code', + 'type' => 'Type', + 'add-attribute-title' => 'Add Attributes', + 'search' => 'Search', + 'group-exist-error' => 'Group with same name already exists.' + ], + 'categories' => [ + 'title' => 'Categories', + 'add-title' => 'Add Category', + 'edit-title' => 'Edit Category', + 'save-btn-title' => 'Save Category', + 'general' => 'General', + 'name' => 'Name', + 'visible-in-menu' => 'Visible In Menu', + 'yes' => 'Yes', + 'no' => 'No', + 'position' => 'Position', + 'display-mode' => 'Display Mode', + 'products-and-description' => 'Products and Description', + 'products-only' => 'Products Only', + 'description-only' => 'Description Only', + 'description-and-images' => 'Description and Images', + 'description' => 'Description', + 'parent-category' => 'Parent Category', + 'seo' => 'Search Engine Optimization', + 'slug' => 'Slug', + 'meta_title' => 'Meta Title', + 'meta_description' => 'Meta Description', + 'meta_keywords' => 'Meta Keywords', + 'image' => 'Image', + 'filterable-attributes' => 'Filterable Attributes', + 'attributes' => 'Attributes', + ] + ], + + 'configuration' => [ + 'title' => 'Configuration', + 'save-btn-title' => 'Save', + 'save-message' => 'Configuration saved successfully', + 'yes' => 'Yes', + 'no' => 'No', + 'delete' => 'Delete', + + 'tax-categories' => [ + 'title' => 'Tax Categories', + 'add-title' => 'Add Tax Category', + 'edit-title' => 'Edit Tax Category', + 'save-btn-title' => 'Save Tax Category', + 'general' => 'Tax Category', + 'select-channel' => 'Select Channel', + 'name' => 'Name', + 'code' => 'Code', + 'description' => 'Description', + 'select-taxrates' => 'Select Tax Rates', + 'edit' => [ + 'title' => 'Edit Tax Category', + 'edit-button-title' => 'Edit Tax Category' + ] + ], + + 'tax-rates' => [ + 'title' => 'Tax Rates', + 'add-title' => 'Add Tax Rate', + 'edit-title' => 'Edit Tax Rate', + 'save-btn-title' => 'Save Tax Rate', + 'general' => 'Tax Rate', + 'identifier' => 'Identifier', + 'is_zip' => 'Enable Zip Range', + 'zip_from' => 'Zip From', + 'zip_to' => 'Zip To', + 'state' => 'State', + 'select-state' => 'Select a region, state or province.', + 'country' => 'Country', + 'tax_rate' => 'Rate', + 'edit' => [ + 'title' => 'Edit Tax Rate', + 'edit-button-title' => 'Edit Rate' + ], + 'zip_code' => 'Zip Code', + 'is_zip' => 'Enable Zip Range', + ], + + 'sales' => [ + 'shipping-method' => [ + 'title' => 'Shipping Methods', + 'save-btn-title' => 'Save', + 'description' => 'Description', + 'active' => 'Active', + 'status' => 'Status' + ] + ] + ], + + 'settings' => [ + 'locales' => [ + 'title' => 'Locales', + 'add-title' => 'Add Locale', + 'edit-title' => 'Edit Locale', + 'add-title' => 'Add Locale', + 'save-btn-title' => 'Save Locale', + 'general' => 'General', + 'code' => 'Code', + 'name' => 'Name', + 'direction' => 'Direction', + 'create-success' => 'Locale created successfully.', + 'update-success' => 'Locale updated successfully.', + 'delete-success' => 'Locale deleted successfully.', + 'last-delete-error' => 'At least one Locale is required.', + ], + 'countries' => [ + 'title' => 'Countries', + 'add-title' => 'Add Country', + 'save-btn-title' => 'Save Country', + 'general' => 'General', + 'code' => 'Code', + 'name' => 'Name' + ], + 'currencies' => [ + 'title' => 'Currencies', + 'add-title' => 'Add Currency', + 'edit-title' => 'Edit Currency', + 'save-btn-title' => 'Save Currency', + 'general' => 'General', + 'code' => 'Code', + 'name' => 'Name', + 'symbol' => 'Symbol', + 'create-success' => 'Currency created successfully.', + 'update-success' => 'Currency updated successfully.', + 'delete-success' => 'Currency deleted successfully.', + 'last-delete-error' => 'At least one Currency is required.', + ], + 'exchange_rates' => [ + 'title' => 'Exchange Rates', + 'add-title' => 'Add Exchange Rate', + 'edit-title' => 'Edit Exchange Rate', + 'save-btn-title' => 'Save Exchange Rate', + 'general' => 'General', + 'source_currency' => 'Source Currency', + 'target_currency' => 'Target Currency', + 'rate' => 'Rate', + 'exchange-class-not-found' => ':service exchange rate class not found', + 'update-rates' => 'Update rates using :service', + 'create-success' => 'Exchange Rate created successfully.', + 'update-success' => 'Exchange Rate updated successfully.', + 'delete-success' => 'Exchange Rate deleted successfully.', + 'last-delete-error' => 'At least one Exchange Rate is required.', + ], + 'inventory_sources' => [ + 'title' => 'Inventory Sources', + 'add-title' => 'Add Inventory Source', + 'edit-title' => 'Edit Inventory Source', + 'save-btn-title' => 'Save Inventory Source', + 'general' => 'General', + 'code' => 'Code', + 'name' => 'Name', + 'description' => 'Description', + 'source-is-active' => 'Source is Active', + 'contact-info' => 'Contact Information', + 'contact_name' => 'Name', + 'contact_email' => 'Email', + 'contact_number' => 'Contact Number', + 'contact_fax' => 'Fax', + 'address' => 'Source Address', + 'country' => 'Country', + 'state' => 'State', + 'city' => 'City', + 'street' => 'Street', + 'postcode' => 'Postcode', + 'priority' => 'Priority', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'status' => 'Status', + 'create-success' => 'Inventory source created successfully.', + 'update-success' => 'Inventory source updated successfully.', + 'delete-success' => 'Inventory source deleted successfully.', + 'last-delete-error' => 'At least one Inventory source is required.', + ], + 'channels' => [ + 'title' => 'Channels', + 'add-title' => 'Add Channel', + 'edit-title' => 'Edit Channel', + 'save-btn-title' => 'Save Channel', + 'general' => 'General', + 'code' => 'Code', + 'name' => 'Name', + 'description' => 'Description', + 'hostname' => 'Hostname', + 'currencies-and-locales' => 'Currencies and Locales', + 'locales' => 'Locales', + 'default-locale' => 'Default Locale', + 'currencies' => 'Currencies', + 'base-currency' => 'Default Currency', + 'root-category' => 'Root Category', + 'inventory_sources' => 'Inventory Sources', + 'design' => 'Design', + 'theme' => 'Theme', + 'home_page_content' => 'Home Page Content', + 'footer_content' => 'Footer Content', + 'logo' => 'Logo', + 'favicon' => 'Favicon', + 'create-success' => 'Channel created successfully.', + 'update-success' => 'Channel updated successfully.', + 'delete-success' => 'Channel deleted successfully.', + 'last-delete-error' => 'At least one Channel is required.', + 'seo' => 'Home page SEO', + 'seo-title' => 'Meta title', + 'seo-description' => 'Meta description', + 'seo-keywords' => 'Meta keywords' + ], + + 'sliders' => [ + 'title' => 'Sliders', + 'name' => 'Name', + 'add-title' => 'Create Slider', + 'edit-title' => 'Edit Slider', + 'save-btn-title' => 'Save Slider', + 'general' => 'General', + 'image' => 'Image', + 'content' => 'Content', + 'channels' => 'Channel', + 'created-success' => 'Slider item created successfully', + 'created-fault' => 'Error in creating slider item', + 'update-success' => 'Slider item successfully updated', + 'update-fail' => 'Slider cannot be updated', + 'delete-success' => 'Cannot delete last llider item', + 'delete-fail' => 'Slider item successfully deleted' + ], + + 'tax-categories' => [ + 'title' => 'Tax Categories', + 'add-title' => 'Create Tax Category', + 'edit-title' => 'Edit Tax Category', + 'save-btn-title' => 'Save Tax Category', + 'general' => 'Tax Category', + 'select-channel' => 'Select Channel', + 'name' => 'Name', + 'code' => 'Code', + 'description' => 'Description', + 'select-taxrates' => 'Select Tax Rates', + 'edit' => [ + 'title' => 'Edit Tax Category', + 'edit-button-title' => 'Edit Tax Category' + ], + 'create-success' => 'New Tax Category Created', + 'create-error' => 'Error, While Creating Tax Category', + 'update-success' => 'Successfully Updated Tax Category', + 'update-error' => 'Error While Updating Tax Category', + 'atleast-one' => 'Cannot Delete The Last Tax Category', + 'delete' => 'Tax Category Successfully Deleted' + ], + + 'tax-rates' => [ + 'title' => 'Tax Rates', + 'add-title' => 'Create Tax Rate', + 'edit-title' => 'Edit Tax Rate', + 'save-btn-title' => 'Save Tax Rate', + 'general' => 'Tax Rate', + 'identifier' => 'Identifier', + 'is_zip' => 'Enable Zip Range', + 'zip_from' => 'Zip From', + 'zip_to' => 'Zip To', + 'state' => 'State', + 'select-state' => 'Select a region, state or province.', + 'country' => 'Country', + 'tax_rate' => 'Rate', + 'edit' => [ + 'title' => 'Edit Tax Rate', + 'edit-button-title' => 'Edit Rate' + ], + 'zip_code' => 'Zip Code', + 'is_zip' => 'Enable Zip Range', + 'create-success' => 'Tax Rate Created Successfully', + 'create-error' => 'Cannot Create Tax Rate', + 'update-success' => 'Tax Rate Updated Successfully', + 'update-error' => 'Error! Tax Rate Cannot Be Updated', + 'delete' => 'Tax Rate Deleted Successfully', + 'atleast-one' => 'Cannot Delete Last Tax Rate' + ], + 'development' => [ + 'title' => 'Development', + ] + ], + + 'customers' => [ + 'groups' =>[ + 'add-title' => 'Add Group', + 'edit-title' => 'Edit Group', + 'save-btn-title' => 'Save Group', + 'title' => 'Groups', + 'save-btn-title' => 'Save Group', + 'code' => 'Code', + 'name' => 'Name', + 'is_user_defined' => 'User Defined', + 'yes' => 'Yes' + ], + + 'addresses' => [ + 'title' => ':customer_name\'s Addresses List', + 'create-title' => 'Create Customer\'s Address', + 'edit-title' => 'Update Customer\'s Address', + 'title-orders' => ':customer_name\'s Orders List', + 'address-list' => 'Address\'s List', + 'order-list' => 'Order\'s List', + 'address-id' => 'Address ID', + 'address-1' => 'Address 1', + 'city' => 'City', + 'state-name' => 'State', + 'country-name' => 'Country', + 'postcode' => 'Post Code', + 'default-address' => 'Default Address', + 'yes' => 'Yes', + 'not-approved' => 'Not Approved', + 'no' => 'No', + 'dash' => '-', + 'delete' => 'Delete', + 'create-btn-title' => 'Add Address', + 'save-btn-title' => 'Save Address', + 'general' => 'General', + 'success-create' => 'Success: Customer address created successfully.', + 'success-update' => 'Success: Customer address updated successfully.', + 'success-delete' => 'Success: Customer address deleted successfully.', + 'success-mass-delete' => 'Success: selected addresses deleted successfully.', + 'error-create' => 'Error: Customer address not created.', + ], + + 'note' => [ + 'title' => 'Add Note', + 'save-note' => 'Save Note', + 'enter-note' => 'Enter Note', + 'help-title' => 'Add Note On This Customer' + ], + + 'customers' => [ + 'add-title' => 'Add Customer', + 'edit-title' => 'Edit Customer', + 'title' => 'Customers', + 'first_name' => 'First Name', + 'last_name' => 'Last Name', + 'gender' => 'Gender', + 'email' => 'Email', + 'date_of_birth' => 'Date of Birth', + 'phone' => 'Phone', + 'customer_group' => 'Customer Group', + 'save-btn-title' => 'Save Customer', + 'channel_name' => 'Channel Name', + 'state' => 'State', + 'select-state' => 'Select a region, state or province.', + 'country' => 'Country', + 'male' => 'Male', + 'female' => 'Female', + 'phone' => 'Phone', + 'group-default' => 'Cannot delete the default group.', + 'edit-help-title' => 'Edit Customer', + 'delete-help-title' => 'Delete Customer', + 'mass-destroy-success' => 'Customers deleted successfully', + 'mass-update-success' => 'Customers updated successfully', + 'status' => 'Status', + 'active' => 'Active', + 'in-active' => 'Inactive' + ], + + 'reviews' => [ + 'title' => 'Reviews', + 'edit-title' => 'Edit Review', + 'rating' => 'Rating', + 'status' => 'Status', + 'comment' => 'Comment', + 'pending' => 'Pending', + 'approved' => 'Approve', + 'disapproved' => 'Disapprove' + ], + + 'subscribers' => [ + 'title' => 'News Letter Subscribers', + 'title-edit' => 'Edit News Letter Subscriber', + 'email' => 'Email', + 'is_subscribed' => 'Subscribed', + 'edit-btn-title' => 'Update Subscriber', + 'update-success' => 'Subscriber was successfully updated', + 'update-failed' => 'Error! You cannot unsubscribe the subscriber', + 'delete' => 'Subscriber was successfully deleted', + 'delete-failed' => 'Error! Subscriber cannot be deleted' + ] + ], + + 'promotions' => [ + 'cart-rules' => [ + 'title' => 'Cart Rules', + 'add-title' => 'Add Cart Rule', + 'edit-title' => 'Edit Cart Rule', + 'save-btn-title' => 'Save Cart Rule', + 'rule-information' => 'Rule Information', + 'name' => 'Name', + 'description' => 'Description', + 'status' => 'Status', + 'is-active' => 'Cart Rule is Active', + 'channels' => 'Channels', + 'customer-groups' => 'Customer Groups', + 'coupon-type' => 'Coupon Type', + 'no-coupon' => 'No Coupon', + 'specific-coupon' => 'Specific Coupon', + 'auto-generate-coupon' => 'Auto Generate Coupon', + 'no' => 'No', + 'yes' => 'Yes', + 'coupon-code' => 'Coupon Code', + 'uses-per-coupon' => 'Uses Per Coupon', + 'uses-per-customer' => 'Uses Per Customer', + 'uses-per-customer-control-info' => 'Will be used for logged in customers only.', + 'from' => 'From', + 'to' => 'To', + 'priority' => 'Priority', + 'conditions' => 'Conditions', + 'condition-type' => 'Condition Type', + 'all-conditions-true' => 'All Conditions are True', + 'any-condition-true' => 'Any Condition is True', + 'add-condition' => 'Add Condition', + 'choose-condition-to-add' => 'Choose a condition to add', + 'cart-attribute' => 'Cart Attribute', + 'subtotal' => 'Subtotal', + 'total-items-qty' => 'Total Items Qty', + 'total-weight' => 'Total Weight', + 'payment-method' => 'Payment Method', + 'shipping-method' => 'Shipping Method', + 'shipping-postcode' => 'Shipping Zip/Postcode', + 'shipping-state' => 'Shipping State', + 'shipping-country' => 'Shipping Country', + 'cart-item-attribute' => 'Cart Item Attribute', + 'price-in-cart' => 'Price in Cart', + 'qty-in-cart' => 'Qty in Cart', + 'product-attribute' => 'Product Attribute', + 'attribute-name-children-only' => ':attribute_name (Children Only)', + 'attribute-name-parent-only' => ':attribute_name (Parent Only)', + 'is-equal-to' => 'Is equal to', + 'is-not-equal-to' => 'Is not equal to', + 'equals-or-greater-than' => 'Equals or greater than', + 'equals-or-less-than' => 'Equals or less than', + 'greater-than' => 'Greater than', + 'less-than' => 'Less than', + 'contain' => 'Contain', + 'contains' => 'Contains', + 'does-not-contain' => 'Does not contain', + 'actions' => 'Actions', + 'action-type' => 'Action Type', + 'percentage-product-price' => 'Percentage of Product Price', + 'fixed-amount' => 'Fixed Amount', + 'fixed-amount-whole-cart' => 'Fixed Amount to Whole Cart', + 'buy-x-get-y-free' => 'Buy X Get Y Free', + 'discount-amount' => 'Discount Amount', + 'discount-quantity' => 'Maximum Quantity Allowed to be Discounted', + 'discount-step' => 'Buy X Quantity', + 'free-shipping' => 'Free Shipping', + 'apply-to-shipping' => 'Apply to Shipping', + 'coupon-codes' => 'Coupon Codes', + 'coupon-qty' => 'Coupon Qty', + 'code-length' => 'Code Length', + 'code-format' => 'Code Format', + 'alphanumeric' => 'Alphanumeric', + 'alphabetical' => 'Alphabetical', + 'numeric' => 'Numeric', + 'code-prefix' => 'Code Prefix', + 'code-suffix' => 'Code Suffix', + 'generate' => 'Generate', + 'cart-rule-not-defind-error' => 'Cart rule is not defined', + 'mass-delete-success' => 'All the selected index of coupons have been deleted successfully.', + 'end-other-rules' => 'End Other Rules', + 'children-categories' => 'Categories (Children Only)', + 'parent-categories' => 'Categories (Parent Only)', + 'categories' => 'Categories', + 'attribute_family' => 'Attribute Family' + ], + + 'catalog-rules' => [ + 'title' => 'Catalog Rules', + 'add-title' => 'Add Catalog Rule', + 'edit-title' => 'Edit Catalog Rule', + 'save-btn-title' => 'Save Catalog Rule', + 'rule-information' => 'Rule Information', + 'name' => 'Name', + 'description' => 'Description', + 'status' => 'Status', + 'is-active' => 'Catalog Rule is Active', + 'channels' => 'Channels', + 'customer-groups' => 'Customer Groups', + 'no' => 'No', + 'yes' => 'Yes', + 'from' => 'From', + 'to' => 'To', + 'priority' => 'Priority', + 'conditions' => 'Conditions', + 'condition-type' => 'Condition Type', + 'all-conditions-true' => 'All Conditions are True', + 'any-condition-true' => 'Any Condition is True', + 'add-condition' => 'Add Condition', + 'choose-condition-to-add' => 'Choose a condition to add', + 'product-attribute' => 'Product Attribute', + 'attribute-name-children-only' => ':attribute_name (Children Only)', + 'attribute-name-parent-only' => ':attribute_name (Parent Only)', + 'is-equal-to' => 'Is equal to', + 'is-not-equal-to' => 'Is not equal to', + 'equals-or-greater-than' => 'Equals or greater than', + 'equals-or-less-than' => 'Equals or less than', + 'greater-than' => 'Greater than', + 'less-than' => 'Less than', + 'contain' => 'Contain', + 'contains' => 'Contains', + 'does-not-contain' => 'Does not contain', + 'actions' => 'Actions', + 'action-type' => 'Action Type', + 'percentage-product-price' => 'Percentage of Product Price', + 'fixed-amount' => 'Fixed Amount', + 'fixed-amount-whole-cart' => 'Fixed Amount to Whole Catalog', + 'buy-x-get-y-free' => 'Buy X Get Y Free', + 'discount-amount' => 'Discount Amount', + 'mass-delete-success' => 'All the selected index of coupons have been deleted successfully.', + 'end-other-rules' => 'End Other Rules', + 'categories' => 'Categories', + 'attribute_family' => 'Attribute Family' + ] + ], + + 'error' => [ + 'go-to-home' => 'GO TO HOME', + 'in-maitainace' => 'In Maintenance', + 'right-back' => 'Be Right Back', + + '404' => [ + 'page-title' => '404 Page not found', + 'name' => '404', + 'title' => 'Page Not found', + 'message' => 'The Page you are looking for does not exist or have been moved. Navigate using sidemenu.' + ], + '403' => [ + 'page-title' => '403 forbidden Error', + 'name' => '403', + 'title' => 'Forbidden error', + 'message' => 'You do not have permission to access this page' + ], + '500' => [ + 'page-title' => '500 Internal Server Error', + 'name' => '500', + 'title' => 'Internal Server Error', + 'message' => 'The Server Encountered an internal error.' + ], + '401' => [ + 'page-title' => '401 Unauthorized Error', + 'name' => '401', + 'title' => 'Unauthorized Error', + 'message' => 'The request has not been applied because it lacks valid authentication credentials for the target resource.' + ], + ], + + 'export' => [ + 'export' => 'Export', + 'import' => 'Import', + 'format' => 'Select Format', + 'download' => 'Download', + 'upload' => 'Upload', + 'csv' => 'CSV', + 'xls' => 'XLS', + 'file' => 'File', + 'upload-error' => 'The file must be a file of type: xls, xlsx, csv.', + 'duplicate-error' => 'Identifier must be unique, duplicate identifier :identifier at row :position.', + 'enough-row-error' => 'file has not enough rows', + 'allowed-type' => 'Allowed Type :', + 'file-type' => 'csv, xls, xlsx.', + 'no-records' => 'Nothing to export', + 'illegal-format' => 'Error! This type of format is either not supported or its illegal format' + ], + + 'cms' => [ + 'pages' => [ + 'general' => 'General', + 'seo' => 'SEO', + 'pages' => 'Pages', + 'title' => 'Pages', + 'add-title' => 'Add Page', + 'content' => 'Content', + 'url-key' => 'URL Key', + 'channel' => 'Channels', + 'locale' => 'Locales', + 'create-btn-title' => 'Save Page', + 'edit-title' => 'Edit Page', + 'edit-btn-title' => 'Save Page', + 'create-success' => 'Page created successfully', + 'create-partial' => 'Some of the pages requested already exists', + 'create-failure' => 'All pages requested already exists', + 'update-success' => 'Page updated successfully', + 'update-failure' => 'Page cannot be updated', + 'page-title' => 'Page Title', + 'layout' => 'Layout', + 'meta_keywords' => 'Meta Keywords', + 'meta_description' => 'Meta Description', + 'meta_title' => 'Meta Title', + 'delete-success' => 'CMS page deleted successfully', + 'delete-failure' => 'CMS page cannot be deleted', + 'preview' => 'Preview', + 'one-col' => '
Use class: "static-container one-column" for one column layout.
', + 'two-col' => '
Use class: "static-container two-column" for two column layout.
', + 'three-col' => '
Use class: "static-container three-column" for three column layout.
', + 'helper-classes' => 'Helper Classes' + ] + ], + + 'response' => [ + 'being-used' => 'This resource :name is getting used in :source', + 'cannot-delete-default' => 'Cannot delete the default channel', + 'create-success' => ':name created successfully.', + 'update-success' => ':name updated successfully.', + 'delete-success' => ':name deleted successfully.', + 'delete-failed' => 'Error encountered while deleting :name.', + 'last-delete-error' => 'At least one :name is required.', + 'user-define-error' => 'Can not delete system :name', + 'attribute-error' => ':name is used in configurable products.', + 'attribute-product-error' => ':name is used in products.', + 'customer-associate' => ':name can not be deleted because customer is associated with this group.', + 'currency-delete-error' => 'This currency is set as channel base currency so it can not be deleted.', + 'upload-success' => ':name uploaded successfully.', + 'delete-category-root' => 'Cannot delete the root category', + 'create-root-failure' => 'Category with name root already exists', + 'cancel-success' => ':name canceled successfully.', + 'cancel-error' => ':name can not be canceled.', + 'already-taken' => 'The :name has already been taken.', + 'order-pending' => 'Cannot delete account because some Order(s) are pending or processing state.' + ], + + 'footer' => [ + 'copy-right' => 'Powered by Bagisto, A Community Project by Webkul', + ], + + 'admin' => [ + 'system' => [ + 'catalog' => 'Catalog', + 'products' => 'Products', + 'review' => 'Review', + 'allow-guest-review' => 'Allow Guest Review', + 'inventory' => 'Inventory', + 'stock-options' => 'Stock Options', + 'allow-backorders' => 'Allow Backorders', + 'customer' => 'Customer', + 'settings' => 'Settings', + 'address' => 'Address', + 'street-lines' => 'Lines in a Street Address', + 'sales' => 'Sales', + 'shipping-methods' => 'Shipping Methods', + 'free-shipping' => 'Free Shipping', + 'flate-rate-shipping' => 'Flat Rate Shipping', + 'shipping' => 'Shipping', + 'origin' => 'Origin', + 'country' => 'Country', + 'state' => 'State', + 'zip' => 'Zip', + 'city' => 'City', + 'street-address' => 'Street Address', + 'title' => 'Title', + 'description' => 'Description', + 'rate' => 'Rate', + 'status' => 'Status', + 'type' => 'Type', + 'payment-methods' => 'Payment Methods', + 'cash-on-delivery' => 'Cash On Delivery', + 'money-transfer' => 'Money Transfer', + 'paypal-standard' => 'Paypal Standard', + 'business-account' => 'Business Account', + 'newsletter' => 'NewsLetter Subscription', + 'newsletter-subscription' => 'Allow NewsLetter Subscription', + 'email' => 'Email Verification', + 'email-verification' => 'Allow Email Verification', + 'sort_order' => 'Sort Order', + 'general' => 'General', + 'footer' => 'Footer', + 'content' => 'Content', + 'footer-content' => 'Footer Text', + 'footer-toggle' => 'Toggle footer', + 'locale-options' => 'Unit Options', + 'weight-unit' => 'Weight Unit', + 'admin-page-limit' => 'Default Items Per Page (Admin)', + 'design' => 'Design', + 'admin-logo' => 'Admin Logo', + 'logo-image' => 'Logo Image', + 'credit-max' => 'Customer Credit Max', + 'credit-max-value' => 'Credit Max Value', + 'use-credit-max' => 'Use Credit Max', + 'order-settings' => 'Order Settings', + 'orderNumber' => 'Order Number Settings', + 'order-number-prefix' => 'Order Number Prefix', + 'order-number-length' => 'Order Number Length', + 'order-number-suffix' => 'Order Number Suffix', + 'default' => 'Default', + 'sandbox' => 'Sandbox' + ] + ] +]; diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php new file mode 100644 index 000000000..7c8d247f6 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -0,0 +1,1058 @@ + [ + 'no-result-found' => 'We could not find any records.', + 'country' => 'کشور', + 'state' => 'استان', + 'true' => 'صحیح', + 'false' => 'غلط' + ], + + 'layouts' => [ + 'account' => 'حساب', + 'my-account' => 'پروفایل من', + 'logout' => 'خروج', + 'visit-shop' => 'مشاهده فروشگاه', + 'dashboard' => 'داشبورد', + 'sales' => 'فروش', + 'orders' => 'سفارشات', + 'shipments' => 'حمل و نقل', + 'invoices' => 'صورت حساب', + 'catalog' => 'کاتالوگ', + 'products' => 'محصولات', + 'categories' => 'دسته بندی ها', + 'attributes' => 'ویژگی ها', + 'attribute-families' => 'ویژگی خانواده', + 'customers' => 'مشتریان', + 'groups' => 'گروه ها', + 'reviews' => 'بررسی ها', + 'newsletter-subscriptions' => 'اشتراک های خبرنامه', + 'configure' => 'پیکربندی', + 'settings' => 'تنظیمات', + 'locales' => 'محل ها', + 'currencies' => 'ارزها', + 'exchange-rates' => 'نرخ تبدیل', + 'inventory-sources' => 'منابع موجودی', + 'channels' => 'کانال ها', + 'users' => 'کاربران', + 'roles' => 'نقش ها', + 'sliders' => 'اسلاید ها', + 'taxes' => 'مالیات', + 'tax-categories' => 'دسته بندی مالیات', + 'tax-rates' => 'نرخ مالیات', + 'promotion' => 'تبلیغات', + 'discount' => 'تخفیف' + ], + + 'acl' => [ + 'dashboard' => 'داشبورد', + 'sales' => 'فروش', + 'orders' => 'سفارشات', + 'shipments' => 'حمل و نقل', + 'invoices' => 'صورت حساب', + 'catalog' => 'کاتالوگ', + 'products' => 'محصولات', + 'categories' => 'دسته بندی ها', + 'attributes' => 'ویژگی ها', + 'attribute-families' => 'ویژگی خانواده', + 'customers' => 'مشتریان', + 'groups' => 'گروه ها', + 'reviews' => 'بررسی ها', + 'newsletter-subscriptions' => 'اشتراک های خبرنامه', + 'configure' => 'پیکربندی', + 'settings' => 'تنظیمات', + 'locales' => 'محل ها', + 'currencies' => 'ارزها', + 'exchange-rates' => 'نرخ تبدیل', + 'inventory-sources' => 'منابع موجودی', + 'channels' => 'کانال ها', + 'users' => 'کاربران', + 'roles' => 'نقش ها', + 'sliders' => 'اسلاید ها', + 'taxes' => 'مالیات', + 'tax-categories' => 'دسته بندی مالیات', + 'tax-rates' => 'نرخ مالیات', + 'edit' => 'ویاریش', + 'create' => 'افزودن', + 'delete' => 'حذف', + 'promotion' => 'تبلیغات', + 'cart-rules' => 'قوانین سبد خرید' + ], + + 'dashboard' => [ + 'title' => 'داشبورد', + 'from' => 'از', + 'to' => 'به', + 'total-customers' => 'همه مشتریان', + 'total-orders' => 'همه سفارشات', + 'total-sale' => 'مجموع فروش', + 'average-sale' => 'میانگین فروش', + 'increased' => ':progress%', + 'decreased' => ':progress%', + 'sales' => 'فروش ها', + 'top-performing-categories' => 'دسته بندی های برتر', + 'product-count' => ':count تا محصول', + 'top-selling-products' => 'محصولات فروش بالا', + 'sale-count' => ':count تا فروش', + 'customer-with-most-sales' => 'مشتری با بیش‌ترین فروش', + 'order-count' => ':count تا سفارش', + 'revenue' => 'درآمد :total', + 'stock-threshold' => 'تعداد کالای موجود', + 'qty-left' => ':qty موجود', + ], + + 'datagrid' => [ + 'mass-ops' => [ + 'method-error' => 'خطا! روش اشتباه تشخیص داده شد، لطفاً پیکربندی کنش جمعی را بررسی کنید', + 'delete-success' => 'مورد انتخاب شده :resource با موفقیت حذف شد', + 'partial-action' => 'برخی از اقدامات به دلیل محدودیت های سیستم انجام نشد :resource', + 'update-success' => 'مورد انتخاب شده :با موفقیت به روزرسانی شد updated', + ], + + 'id' => 'شناسه', + 'status' => 'وضعیت', + 'code' => 'کد', + 'admin-name' => 'نام', + 'name' => 'نام', + 'fullname' => 'نام کامل', + 'type' => 'نوع', + 'required' => 'ضروری', + 'unique' => 'یکتا', + 'per-locale' => 'مبتنی بر محل', + 'per-channel' => 'مبتنی بر کانال', + 'position' => 'موقعیت', + 'locale' => 'محل', + 'hostname' => 'نام میزبان', + 'email' => 'پست الکترونیک', + 'group' => 'گروه', + 'title' => 'عنوان', + 'comment' => 'نظر', + 'product-name' => 'محصول', + 'currency-name' => 'نام ارز', + 'exch-rate' => 'نرخ ارز', + 'priority' => 'اولویت', + 'subscribed' => 'مشترکید', + 'base-total' => 'پایه کل', + 'grand-total' => 'مجموع کل', + 'order-date' => 'تاریخ سفارش', + 'channel-name' => 'نام کانال', + 'billed-to' => 'صورت حساب داده شده برای', + 'shipped-to' => 'فرستاده شده به', + 'order-id' => 'سفارش Id', + 'invoice-date' => 'تاریخ فاکتور', + 'total-qty' => 'کل مقدار', + 'inventory-source' => 'منابع موجودی', + 'shipment-date' => 'تاریخ ارسال', + 'shipment-to' => 'حمل و نقل به', + 'sku' => 'واحد نگهداری موجودی', + 'price' => 'قیمت', + 'qty' => 'مقدار', + 'permission-type' => 'نوع مجوز', + 'identifier' => 'شناسه', + 'state' => 'استان', + 'country' => 'کشور', + 'tax-rate' => 'نرخ', + 'role' => 'نقش', + 'sub-total' => 'زیر مجموع', + 'no-of-products' => 'تعداد محصولات', + 'attribute-family' => 'ویژگی خانواده', + 'starts-from' => 'شروع می شود از', + 'ends-till' => 'پایان می یابد', + 'per-cust' => 'به ازای هر مشتری', + 'usage-throttle' => 'بار استفاده', + 'for-guest' => 'برای مهمان', + 'end_other_rules' => 'پایان قوانین دیگر', + 'action_type' => 'نوع عملیات', + 'disc_quantity' => 'مقدار استفاده نشده', + 'disc_threshold' => 'آستانه استفاده نشده', + 'use_coupon' => 'استافده از کوپن', + 'refunded' => 'Refunded' + ], + + 'account' => [ + 'title' => 'حساب من', + 'save-btn-title' => 'ذخیره', + 'general' => 'عمومی', + 'name' => 'نام', + 'email' => 'پست الکترونیک', + 'password' => 'رمز عبور', + 'confirm-password' => 'تاید رمز عبور', + 'change-password' => 'تغیر رمز عبور', + 'current-password' => 'گذرواژه فعلی' + ], + + 'users' => [ + 'forget-password' => [ + 'title' => 'فراموشی رمز عبور', + 'header-title' => 'بازیابی رمز عبور', + 'email' => 'ایمیل ثبت شده', + 'password' => 'رمز عبور', + 'confirm-password' => 'تایید رمز عبور', + 'back-link-title' => 'برگشت به صفحه ورود', + 'submit-btn-title' => 'بازنشانی لینک گذرواژه ایمیل' + ], + + 'reset-password' => [ + 'title' => 'بازنشانی گذرواژه', + 'email' => 'پست الکترونیک', + 'password' => 'رمز عبور', + 'confirm-password' => 'تایید رمز عبور', + 'back-link-title' => 'برگشت به صفحه ورود', + 'submit-btn-title' => 'بازنشانی لینک گذرواژه ایمیل' + ], + + 'roles' => [ + 'title' => 'نقش ها', + 'add-role-title' => 'افزودن نقش', + 'edit-role-title' => 'ویرایش نقش', + 'save-btn-title' => 'ذخیره نقش', + 'general' => 'عمومی', + 'name' => 'نام', + 'description' => 'توضیحات', + 'access-control' => 'کنترل دسترسی', + 'permissions' => 'مجوز ها', + 'custom' => 'سفارشی', + 'all' => 'همه' + ], + + 'users' => [ + 'title' => 'کاربر', + 'add-user-title' => 'افزودن کاربر', + 'edit-user-title' => 'ویرایش کاربر', + 'save-btn-title' => 'ذخیره کاربر', + 'general' => 'عمومی', + 'email' => 'پست الکترونیک', + 'name' => 'نام', + 'password' => 'رمز عبور', + 'confirm-password' => 'تایید رمزعبور', + 'status-and-role' => 'وضعیت و نقش', + 'role' => 'نقش', + 'status' => 'وضعیت', + 'account-is-active' => 'حساب فعال است', + 'current-password' => 'گذرواژه فعلی را وارد کنید', + 'confirm-delete' => 'حذف این حساب را تأیید کنید', + 'confirm-delete-title' => 'رمز عبور را قبل از حذف تأیید کنید', + 'delete-last' => 'حداقل یک مدیر لازم است.', + 'delete-success' => 'موفقیت! کاربر حذف شد', + 'incorrect-password' => 'گذرواژه ای که وارد کردید نادرست است', + 'password-match' => 'گذرواژه فعلی مطابقت ندارد.', + 'account-save' => 'تغییرات حساب با موفقیت ذخیره شد.', + 'login-error' => 'لطفا مدارک خود را بررسی کنید و دوباره امتحان کنید.', + 'activate-warning' => 'حساب شما فعال نشده است ، لطفاً با مدیر تماس بگیرید.' + ], + + 'sessions' => [ + 'title' => 'ورود', + 'email' => 'پست الکترونیک', + 'password' => 'رمز عبور', + 'forget-password-link-title' => 'فراموشی رمز عبور ?', + 'remember-me' => 'مرا بخاطر بسپار', + 'submit-btn-title' => 'ورود' + ] + ], + + 'sales' => [ + 'orders' => [ + 'title' => 'سفارشات', + 'view-title' => 'سفارش #:order_id', + 'cancel-btn-title' => 'لغو', + 'shipment-btn-title' => 'کشتی', + 'invoice-btn-title' => 'صورت حساب', + 'info' => 'اطلاعات', + 'invoices' => 'صورت حساب ها', + 'shipments' => 'حمل و نقل ها', + 'order-and-account' => 'سفارش و حساب', + 'order-info' => 'اطلاعات سفارش', + 'order-date' => 'تاریخ سفارش', + 'order-status' => 'وضعیت سفارش', + 'channel' => 'کانال', + 'customer-name' => 'نام مشتری', + 'email' => 'پست الکترونیگ', + 'contact-number' => 'شماره تماس', + 'account-info' => 'اطلاعات حساب', + 'address' => 'آدرس', + 'shipping-address' => 'آدرس حمل و نقل', + 'billing-address' => 'آدرس صورت حساب', + 'payment-and-shipping' => 'پرداخت و ارسال', + 'payment-info' => 'اطلاعات پرداخت', + 'payment-method' => 'روش پرداخت', + 'currency' => 'واحد پول', + 'shipping-info' => 'اطلاعات حمل و نقل', + 'shipping-method' => 'روش حمل و نقل', + 'shipping-price' => 'هزینه حمل و نقل', + 'products-ordered' => 'محصولات سفارش داده شده', + 'SKU' => 'واحد نگهداری موجودی', + 'product-name' => 'نام محصول', + 'qty' => 'مقدار', + 'item-status' => 'وضعیت مورد', + 'item-ordered' => 'سفارش (:qty_ordered)', + 'item-invoice' => 'صورت حساب (:qty_invoiced)', + 'item-shipped' => 'حمل شده (:qty_shipped)', + 'item-canceled' => 'لغو شده (:qty_canceled)', + 'item-refunded' => 'Refunded (:qty_refunded)', + 'price' => 'قیمت', + 'total' => 'کل', + 'subtotal' => 'فرعی', + 'shipping-handling' => 'حمل و نقل و جابجایی', + 'discount' => 'تخفیف', + 'tax' => 'مالیات', + 'tax-percent' => 'درصد مالیات', + 'tax-amount' => 'مبلغ مالیات', + 'discount-amount' => 'مقدار تخفیف', + 'grand-total' => 'Grand کل', + 'total-paid' => 'کل پرداخت شده', + 'total-refunded' => 'بازپرداخت کل', + 'total-due' => 'بدهی کل', + 'cancel-confirm-msg' => 'مطمئن هستید که می خواهید این سفارش را لغو کنید ؟', + 'refunds' => 'Refunds', + 'refunded' => 'Refunded' + ], + + 'invoices' => [ + 'title' => 'صورت حساب', + 'id' => 'شناسه', + 'invoice-id' => 'شناسه صورت حساب', + 'date' => 'تاریخ صورت حساب', + 'order-id' => 'شناسه سفارش', + 'customer-name' => 'نام مشتیر', + 'status' => 'وضعیت', + 'amount' => 'میزان', + 'action' => 'عملیات', + 'add-title' => 'ایجاد فاکتور', + 'save-btn-title' => 'ذخیره فاکتور', + 'qty' => 'مقدار', + 'qty-ordered' => 'سفارش داده شده', + 'qty-to-invoice' => 'مقدار به فاکتور', + 'view-title' => 'صورت حساب #:invoice_id', + 'bill-to' => 'صورت حساب به', + 'ship-to' => 'حمل به', + 'print' => 'چاپ', + 'order-date' => 'تاریخ سفارش', + 'creation-error' => 'ایجاد فاکتور سفارش مجاز نیست.', + 'product-error' => 'بدون محصولات نمی توان فاکتور ایجاد کرد.' + ], + + 'shipments' => [ + 'title' => 'حمل و نقل', + 'id' => 'شناسه', + 'date' => 'تاریخ حمل و نقل', + 'order-id' => 'شناسه سفارش', + 'order-date' => 'تاریخ سفارش', + 'customer-name' => 'نام مشتری', + 'total-qty' => 'کل مقدار', + 'action' => 'عملیات', + 'add-title' => 'ایجاد حمل و نقل', + 'save-btn-title' => 'ذخیره حمل و نقل', + 'qty-ordered' => 'سفارش داده شده', + 'qty-to-ship' => 'مقدار به کشتی', + 'available-sources' => 'منابع موجود', + 'source' => 'منابع', + 'select-source' => 'لطفا منبع را انتخاب کنید', + 'qty-available' => 'مقدار در دسترس است', + 'inventory-source' => 'منبع موجودی', + 'carrier-title' => 'عنوان حامل', + 'tracking-number' => 'شماره پیگیری', + 'view-title' => 'حمل و نقل #:shipment_id', + 'creation-error' => 'حمل و نقل برای این سفارش ایجاد نمی شود.', + 'order-error' => 'ایجاد محموله سفارش مجاز نیست.', + 'quantity-invalid' => 'مقدار درخواستی نامعتبر است یا در دسترس نیست.', + ], + + 'refunds' => [ + 'title' => 'Refunds', + 'id' => 'Id', + 'add-title' => 'Create Refund', + 'save-btn-title' => 'Refund', + 'order-id' => 'Order Id', + 'qty-ordered' => 'Qty Ordered', + 'qty-to-refund' => 'Qty To Refund', + 'refund-shipping' => 'Refund Shipping', + 'adjustment-refund' => 'Adjustment Refund', + 'adjustment-fee' => 'Adjustment Fee', + 'update-qty' => 'Update Quantities', + 'invalid-qty' => 'Found invalid quantity for return items.', + 'refund-limit-error' => 'The most money available to refund is :amount.', + 'refunded' => 'Refunded', + 'date' => 'Refund Date', + 'customer-name' => 'Customer Name', + 'status' => 'Status', + 'action' => 'Action', + 'view-title' => 'Refund #:refund_id', + 'invalid-refund-amount-error' => 'Refund amount should be non zero.' + ] + ], + + 'catalog' => [ + 'products' => [ + 'title' => 'محصولات', + 'add-product-btn-title' => 'افزودن محصول', + 'add-title' => 'افزودن محصول', + 'edit-title' => 'ویرایش محصول', + 'save-btn-title' => 'ذخیره محصول', + 'general' => 'عمومی', + 'product-type' => 'نوع محصول', + 'simple' => 'ساده', + 'configurable' => 'قابل پیکربندی', + 'familiy' => 'ویژگی خانواده', + 'sku' => 'واحد نگهداری موجودی', + 'configurable-attributes' => 'ویژگی های قابل پیکربندی', + 'attribute-header' => 'ویژگی(ها)', + 'attribute-option-header' => 'گزینه ویژگی(ها)', + 'no' => 'خیر', + 'yes' => 'بله', + 'disabled' => 'غیرفعال شد', + 'enabled' => 'قعال شد', + 'add-variant-btn-title' => 'افزودن نوع', + 'name' => 'نام', + 'qty' => 'مقدار', + 'price' => 'قیمت', + 'weight' => 'وزن', + 'status' => 'وضعیت', + 'add-variant-title' => 'افزودن نوع', + 'variant-already-exist-message' => 'گزینه های مختلف با همان ویژگی های موجود در حال حاضر وجود دارد.', + 'add-image-btn-title' => 'افزودن تصویثر', + 'mass-delete-success' => 'همه فهرست انتخاب شده محصولات با موفقیت حذف شدند', + 'mass-update-success' => 'همه فهرست انتخاب شده محصولات با موفقیت به روز شده اند', + 'configurable-error' => 'لطفا حداقل یک ویژگی قابل تنظیم را انتخاب کنید.', + 'categories' => 'دسته بندی ها', + 'images' => 'تصاویر', + 'inventories' => 'موجودی ها', + 'variations' => 'تغییرات', + 'product-link' => 'محصولات مرتبط', + 'cross-selling' => 'فروش متقابل', + 'up-selling' => 'فروش بالا', + 'related-products' => 'محصولات مرتبط', + 'product-search-hint' => 'شروع به تایپ نام محصول کنید', + 'no-result-found' => 'محصولاتی با همین نام یافت نشد', + 'searching' => 'جست و جو ...', + 'bundle-items' => 'Bundle Items', + 'add-option-btn-title' => 'Add Option', + 'option-title' => 'Option Title', + 'input-type' => 'Input Type', + 'is-required' => 'Is Required', + 'select' => 'Select', + 'radio' => 'Radio', + 'checkbox' => 'Checkbox', + 'multiselect' => 'Multiselect', + 'new-option' => 'New Option', + 'is-default' => 'Is Default' + ], + + 'attributes' => [ + 'title' => 'ویژگی ها', + 'add-title' => 'افزودن ویژگی', + 'edit-title' => 'ویرایش ویژگی', + 'save-btn-title' => 'ذخیره ویژگی', + 'general' => 'عمومی', + 'code' => 'کد ویژگی', + 'type' => 'نوع ویژگی', + 'text' => 'Text', + 'textarea' => 'Textarea', + 'price' => 'Price', + 'boolean' => 'Boolean', + 'select' => 'Select', + 'multiselect' => 'Multiselect', + 'datetime' => 'Datetime', + 'date' => 'Date', + 'label' => 'Label', + 'admin' => 'Admin', + 'options' => 'Options', + 'position' => 'موقعیت', + 'add-option-btn-title' => 'افزودن گزینه', + 'validations' => 'اعتبار سنجی ها', + 'input_validation' => 'اعتبار سنجی ورودی', + 'is_required' => 'Is Required', + 'is_unique' => 'Is Unique', + 'number' => 'Number', + 'decimal' => 'Decimal', + 'email' => 'Email', + 'url' => 'URL', + 'configuration' => 'Configuration', + 'status' => 'Status', + 'yes' => 'بله', + 'no' => 'خیر', + 'value_per_locale' => 'مقدار در هر ممحل', + 'value_per_channel' => 'مقدار در هر کانال', + 'is_filterable' => 'استفاده در Navigation Layered', + 'is_configurable' => 'برای ایجاد یک محصول قابل تنظیم استفاده کنید', + 'admin_name' => 'نام مدیر', + 'is_visible_on_front' => 'در صفحه نمایش محصول در Front-end قابل مشاهده است', + 'swatch_type' => 'نوع Swatch', + 'dropdown' => 'Dropdown', + 'color-swatch' => 'رنگ Swatch', + 'image-swatch' => 'تصویر Swatch', + 'text-swatch' => 'متن Swatch', + 'swatch' => 'Swatch', + 'image' => 'تصویر', + 'file' => 'فایل' + ], + 'families' => [ + 'title' => 'خانواده ها', + 'add-family-btn-title' => 'افزودن خانواده', + 'add-title' => 'افزودن خانواده', + 'edit-title' => 'ویرایش خانواده', + 'save-btn-title' => 'ذخیره خانواده', + 'general' => 'عمومی', + 'code' => 'کد خانواده', + 'name' => 'نام', + 'groups' => 'گروه ها', + 'add-group-title' => 'افزودن گروه', + 'position' => 'موقعیت', + 'attribute-code' => 'کد', + 'type' => 'نوع', + 'add-attribute-title' => 'افزودن ویژگی', + 'search' => 'جست جو', + 'group-exist-error' => 'گروهی با همین نام در حال حاضر وجود دارد.' + ], + 'categories' => [ + 'title' => 'دسته بندی ها', + 'add-title' => 'افزودن دسته بندی', + 'edit-title' => 'ویرایش دسته بندی', + 'save-btn-title' => 'ذخیره دسته بندی', + 'general' => 'عمومی', + 'name' => 'نام', + 'visible-in-menu' => 'قابل مشاهده در منو', + 'yes' => 'بله', + 'no' => 'خیر', + 'position' => 'موقعیت', + 'display-mode' => 'حالت نمایش', + 'products-and-description' => 'محصولات و توضیحات', + 'products-only' => 'فقط محصولات', + 'description-only' => 'فقط توضیحات', + 'description-and-images' => 'توضیحات و تصاویر', + 'description' => 'توضیحات', + 'parent-category' => 'دسته بندی پدر', + 'seo' => 'بهینه سازی موتور جستجو', + 'slug' => 'نامک', + 'meta_title' => 'عنوان متا', + 'meta_description' => 'توضیحات متا', + 'meta_keywords' => 'کلیدواژه ها متا', + 'image' => 'تصویر', + ] + ], + + 'configuration' => [ + 'title' => 'پیکربندی', + 'save-btn-title' => 'ذخیره', + 'save-message' => 'پیکربندی با موفقیت ذخیره شد', + 'yes' => 'بله', + 'no' => 'خیر', + 'delete' => 'حذف', + + 'tax-categories' => [ + 'title' => 'دسته بندی های مالیات', + 'add-title' => 'افزودن دسته بندی مالیات', + 'edit-title' => 'ویرایش دسته بندی مالیات', + 'save-btn-title' => 'ذخیره دسته بندی مالیات', + 'general' => 'دسته مالیات', + 'select-channel' => 'انتخاب کانال', + 'name' => 'نام', + 'code' => 'کد', + 'description' => 'توضیح', + 'select-taxrates' => 'نرخ مالیات را انتخاب کنید', + 'edit' => [ + 'title' => 'ویرایش دسته بندی مالیات', + 'edit-button-title' => 'ویرایش دسته بندی مالیات' + ] + ], + + 'tax-rates' => [ + 'title' => 'نرخ مالیات', + 'add-title' => 'افزودن نرخ مالیات', + 'edit-title' => 'ویرایش نرخ مالیات', + 'save-btn-title' => 'ذخیره نرخ مالیات', + 'general' => 'نرخ مالیات', + 'identifier' => 'مشخص کننده', + 'is_zip' => 'فعال کردن محدوده کد پستی', + 'zip_from' => 'کد پستی از', + 'zip_to' => 'کد پستی به', + 'state' => 'استان', + 'select-state' => 'یک منطقه ، ایالت یا استان را انتخاب کنید.', + 'country' => 'کشور', + 'tax_rate' => 'نرخ', + 'edit' => [ + 'title' => 'ویرایش نرخ مالیات', + 'edit-button-title' => 'ویرایش نرخ' + ], + 'zip_code' => 'کد پستی', + ], + + 'sales' => [ + 'shipping-method' => [ + 'title' => 'روش های حمل و نقل', + 'save-btn-title' => 'ذخیره', + 'description' => 'توضیحات', + 'active' => 'فعال', + 'status' => 'وضعیت' + ] + ] + ], + + 'settings' => [ + 'locales' => [ + 'title' => 'محل ها', + 'add-title' => 'افزودن محل', + 'edit-title' => 'ویرایش محل', + 'save-btn-title' => 'ذخیره محل', + 'general' => 'عمومی', + 'code' => 'کد', + 'name' => 'نام', + 'create-success' => 'محل با موفقیت ایجاد شد', + 'update-success' => 'محل با موفقیت به روز شد.', + 'delete-success' => 'محل با موفقیت حذف شد.', + 'last-delete-error' => 'حداقل یک محل نیاز است.', + ], + 'countries' => [ + 'title' => 'کشور ها', + 'add-title' => 'افزودن کشور', + 'save-btn-title' => 'ذخیره کشور', + 'general' => 'عمومی', + 'code' => 'کد', + 'name' => 'نام' + ], + 'currencies' => [ + 'title' => 'ارز ها', + 'add-title' => 'افزودن ارز', + 'edit-title' => 'ویرایش ارز', + 'save-btn-title' => 'ذخیره ارز', + 'general' => 'عمومی', + 'code' => 'کد', + 'name' => 'نام', + 'symbol' => 'نماد', + 'create-success' => 'ارز باموففقیت ایجاد شد.', + 'update-success' => 'ارز باموففقیت به روز شد.', + 'delete-success' => 'ارز باموففقیت حذف شد.', + 'last-delete-error' => 'حداقل یک ارز لازم است.', + ], + 'exchange_rates' => [ + 'title' => 'نرخ تبدیل', + 'add-title' => 'افزودن نرخ تبدیل', + 'edit-title' => 'ویرایش نرخ تبدیل', + 'save-btn-title' => 'ذخیره نرخ تبدیل', + 'general' => 'عمومی', + 'source_currency' => 'منبع ارز', + 'target_currency' => 'هدف ارز', + 'rate' => 'نرخ', + 'create-success' => 'نرخ ارز با موفقیت ایجاد شد.', + 'update-success' => 'نرخ ارز با موفقیت به روز شد.', + 'delete-success' => 'نرخ ارز با موفقیت حذف شد.', + 'last-delete-error' => 'حداقل یک نرخ ارز لازم است.', + ], + 'inventory_sources' => [ + 'title' => 'منابع موجودی', + 'add-title' => 'افزودن منبع موجودی', + 'edit-title' => 'ویرایش منبع موجودی', + 'save-btn-title' => 'ذخیره منبع موجودی', + 'general' => 'عمومی', + 'code' => 'کد', + 'name' => 'نام', + 'description' => 'توضیحات', + 'source-is-active' => 'منبع فعال است', + 'contact-info' => 'اطلاعات تکاس', + 'contact_name' => 'نام', + 'contact_email' => 'پست الکترونیک', + 'contact_number' => 'شماره تماس', + 'contact_fax' => 'فکس', + 'address' => 'آدرس منبع', + 'country' => 'کشور', + 'state' => 'استان', + 'city' => 'شهر', + 'street' => 'خیابان', + 'postcode' => 'کد پستی', + 'priority' => 'اولویت', + 'latitude' => 'عرض جغرافیایی', + 'longitude' => 'عرض جغرافیایی', + 'status' => 'وضعیت', + 'create-success' => 'منبع موجودی با موفقیت ایجاد شد.', + 'update-success' => 'منبع موجودی با موفقیت به روز شد.', + 'delete-success' => 'منبع موجودی با موفقیت حذف شد.', + 'last-delete-error' => 'حداقل یک منبع موجودی لازم است.', + ], + 'channels' => [ + 'title' => 'کانال ها', + 'add-title' => 'افوزدن کانال', + 'edit-title' => 'ویرایش کانال', + 'save-btn-title' => 'ذخیره کانال', + 'general' => 'عمومی', + 'code' => 'کد', + 'name' => 'نام', + 'description' => 'توضیحات', + 'hostname' => 'نام میزبان', + 'currencies-and-locales' => 'ارز و محل ها', + 'locales' => 'محل ها', + 'default-locale' => 'محل پیش فرض', + 'currencies' => 'ارز ها', + 'base-currency' => 'ارز پایه', + 'root-category' => 'ارز ریشه', + 'inventory_sources' => 'منابع موجودی', + 'design' => 'طراحی', + 'theme' => 'پوسته', + 'home_page_content' => 'محتوای صفحه اصلی', + 'footer_content' => 'محتوای فوتر', + 'logo' => 'لوگو', + 'favicon' => 'Favicon', + 'create-success' => 'کانال با موفقیت ایجاد شد', + 'update-success' => 'کانال با موفقیت به روز شد.', + 'delete-success' => 'کانال با موفقیت حذف شد.', + 'last-delete-error' => 'حداقل یک کانال مورد نیاز است.', + ], + 'sliders' => [ + 'title' => 'عنوان', + 'name' => 'Name', + 'add-title' => 'افزودن اسلاید', + 'edit-title' => 'ویرایش اسلایدر', + 'save-btn-title' => 'ذخیره اسلایدر', + 'general' => 'عمومی', + 'image' => 'تصویر', + 'content' => 'محتوا', + 'channels' => 'کانال', + 'created-success' => 'اسلایدر با موفقیت ایجاد شد', + 'created-fault' => 'خطا در هنگام ایجاد اسلایدر', + 'update-success' => 'اسلایدر با موفقیت به روز شد', + 'update-fail' => 'امکان بروزرسانی اسلایدر وجود ندارد', + 'delete-success' => 'آخرین اسلایدر حذف نمی شود', + 'delete-fail' => 'اسلایدر با موفقیت حذف شد' + ], + 'tax-categories' => [ + 'title' => 'دسته بندی های مالیات', + 'add-title' => 'افزودن دسته بندی مالیات', + 'edit-title' => 'ویرایش دسته بندی مالیات', + 'save-btn-title' => 'ذخیره دسته بندی مالیات', + 'general' => 'دسته مالیات', + 'select-channel' => 'انتخاب کانال', + 'name' => 'نام', + 'code' => 'کد', + 'description' => 'توضیحات', + 'select-taxrates' => 'انتخاب نرخ مالیات', + 'edit' => [ + 'title' => 'ویرایش دسته بندی مالیات', + 'edit-button-title' => 'ویرایش دسته بندی مالیات' + ], + 'create-success' => 'دسته بندی جدید مالیات ایجاد شده است', + 'create-error' => 'خطا ، هنگام ایجاد دسته بندی مالیاتی', + 'update-success' => 'دسته بندی مالیاتی با موفقیت به روز شد', + 'update-error' => 'هنگام بروزرسانی دسته بندی مالیاتی خطایی رخ داد', + 'atleast-one' => 'آخرین دسته مالیاتی را نمی توان حذف کرد', + 'delete' => 'دسته بندی مالیات با موفقیت حذف شد' + ], + 'tax-rates' => [ + 'title' => 'نرخ مالیات', + 'add-title' => 'افزودن نرخ مالیات', + 'edit-title' => 'ویرایش نرخ مالیات', + 'save-btn-title' => 'ذخیره نرخ مالیات', + 'general' => 'نرخ مالیات', + 'identifier' => 'مشخص کننده', + 'is_zip' => 'فعال کردن محدوده کد پستی', + 'zip_from' => 'کد پستی از', + 'zip_to' => 'کد پستی به', + 'state' => 'استان', + 'select-state' => 'یک منطقه ، ایالت یا استان را انتخاب کنید.', + 'country' => 'کشور', + 'tax_rate' => 'نرخ', + 'edit' => [ + 'title' => 'ویرایش نرخ مالیات', + 'edit-button-title' => 'ویرایش نرخ' + ], + 'zip_code' => 'کد پستی', + 'create-success' => 'نرخ مالیات با موفقیت ایجاد شد', + 'create-error' => 'نمی توان نرخ مالیات ایجاد کرد', + 'update-success' => 'نرخ مالیات با موفقیت به روز شد', + 'update-error' => 'خطا! نرخ مالیات نمی تواند به روز شود', + 'delete' => 'نرخ مالیات با موفقیت حذف شد', + 'atleast-one' => 'آخرین نرخ مالیات نمی تواند حذف شود' + ], + 'development' => [ + 'title' => 'توسعه', + ] + ], + + 'customers' => [ + 'groups' =>[ + 'add-title' => 'افزودن گروه', + 'edit-title' => 'ویرایش گروه', + 'save-btn-title' => 'ذخیره گروه', + 'title' => 'گروه ها', + 'code' => 'کد', + 'name' => 'نام', + 'is_user_defined' => 'تعریف شده توسط کاربر', + 'yes' => 'بله' + ], + + 'note' => [ + 'title' => 'افزودن یادداشت', + 'save-note' => 'ذخیره یادداشت', + 'enter-note' => 'یادداشت را وارد کنید', + 'help-title' => 'توجه را به این مشتری اضافه کنید' + ], + + 'customers' => [ + 'add-title' => 'افزودن مشتری', + 'edit-title' => 'ویرایش مشتری', + 'title' => 'مشتریان', + 'first_name' => 'نام', + 'last_name' => 'نام خانوادگی', + 'gender' => 'جنسیت', + 'email' => 'پست الکترونیک', + 'date_of_birth' => 'تاریخ تولد', + 'phone' => 'موبایل', + 'customer_group' => 'گروه مشتری', + 'save-btn-title' => 'ذخیره مشتری', + 'channel_name' => 'نام کانال', + 'state' => 'استان', + 'select-state' => 'یک منطقه ، ایالت یا استان را انتخاب کنید.', + 'country' => 'کشور', + 'male' => 'مرد', + 'female' => 'زن', + 'group-default' => 'نمی توان گروه پیش فرض را حذف کرد.', + 'edit-help-title' => 'ویرایش مشتری', + 'delete-help-title' => 'حذف مشتری', + 'mass-destroy-success' => 'مشتریان با موفقیت حذف شدند', + 'mass-update-success' => 'مشتریان با موفقیت به روز شدند', + 'status' => 'وضعیت', + 'active' => 'فعال', + 'in-active' => 'غیرفعال' + ], + + 'reviews' => [ + 'title' => 'بررسی ها', + 'edit-title' => 'ویرایش بررسی', + 'rating' => 'رتبه بندی', + 'status' => 'وضعیت', + 'comment' => 'نظر', + 'pending' => 'در انتظار', + 'approved' => 'تایید', + 'disapproved' => 'رد' + ], + + 'subscribers' => [ + 'title' => 'مشترکین خبر نامه', + 'title-edit' => 'ویرایش مشترک خبر نامه', + 'email' => 'پست الکترونیک', + 'is_subscribed' => 'مشترک شد', + 'edit-btn-title' => 'به روز رسانی مشترک', + 'update-success' => 'مشترک با موفقیت به روز شد', + 'update-failed' => 'خطا! شما نمی توانید مشترک مشترک شوید', + 'delete' => 'مشترک با موفقیت حذف شد', + 'delete-failed' => 'خطا! مشترک نمی تواند حذف شود' + ] + ], + + 'promotion' => [ + 'catalog-rule' => 'قوانین کاتالوگ', + 'cart-rule' => 'قوانین سبد خرید', + 'add-catalog-rule' => 'افزودن قانون کاتالوگ', + 'add-cart-rule' => 'افزودن قانون سبد خرید', + 'edit-cart-rule' => 'ویرایش قانون کاتالوگ', + 'edit-catalog-rule' => 'ویرایش قانون سبد خرید', + 'create-catalog-rule' => 'ایجاد قانون کاتالوگ', + 'create-cart-rule' => 'ایجاد قانون سبد خرید', + 'save-btn-title' => 'ایجاد', + 'edit-btn-title' => 'ویرایش', + 'save' => 'ذخیره', + 'select-attr' => 'انتخاب ویژگی', + 'select-attr-fam' => 'انتخاب خانواده ویژگی', + 'select-cart-attr' => 'انتخاب ویژگی سبد خرید', + 'add_condition' => 'افزودن شرط', + 'global_labels' => 'برچسب های جهانی', + 'general-info' => [ + 'name' => 'نام نقش', + 'description' => 'توضیحات', + 'starts-from' => 'شروع', + 'ends-till' => 'پایان', + 'channels' => 'کانال ها', + 'channels-req' => 'کانال ها', + 'cust-groups' => 'گروه های مشتری', + 'priority' => 'اولویت', + 'add-condition' => 'افزودن شرایط', + 'disc_amt' => 'مقدار تخفیف', + 'disc_percent' => 'درصد تخفیف', + 'is-coupon' => 'از کوپن استفاده کنید', + 'is-coupon-yes' => 'بله', + 'is-coupon-no' => 'خیر', + 'uses-per-cust' => 'استفاده می شود برای هر مشتری', + 'all' => 'همه', + 'any' => 'هیچ', + 'end-other-rules' => 'پایان قوانین دیگر', + 'status' => 'فعال است', + 'all-conditions-true' => 'به فرض همه شرایط صحیح است', + 'assuming' => 'با فرض اینکه', + 'conditions' => 'شرایط', + 'apply' => 'درخواست دادن', + 'are' => 'هستند', + 'true' => 'صحیح', + 'false' => 'غلط', + 'limit' => 'محدودیت استفاده', + 'specific-coupon' => 'کوپن خاص (چک) / خودکار تولید شده (بررسی نشده)', + 'free-shipping' => 'ارسال رایگان', + 'is-guest' => 'برای مهمانان', + 'disc_qty' => 'حداکثر. مقدار مجاز برای تخفیف', + 'test-mode' => 'انتخاب کنید چگونه شرایط را آزمایش کنیم', + 'labels' => 'برچسب', + 'information' => 'اطلاعات', + 'actions' => 'عملیات', + 'coupons' => 'کوپن ها' + ], + + 'status' => [ + 'success' => 'موفقیت! قانون ایجاد شده است', + 'success-coupon' => 'موفقیت! قانون به همراه کوپن ایجاد شده است', + 'failed' => 'خطا! نتوانست قانون را ایجاد کند', + 'update-success' => 'موفقیت! قانون به روز شد', + 'update-coupon-success' => 'موفقیت! قانون به همراه کوپن به روز شد', + 'update-failed' => 'خطا! نمی توان بروزرسانی کرد', + 'delete-success' => 'موفق! قانون حذف شد', + 'delete-failed' => 'خطا! حذف نمی شود', + 'coupon-applied' => 'کوپن مورد استفاده', + 'coupon-failed' => 'کوپن نتوانست اعمال شود', + 'no-coupon' => '* کوپن قابل استفاده نیست', + 'coupon-removed' => 'کوپن با موفقیت حذف شد', + 'coupon-remove-failed' => 'حذف کوپن انجام نشد', + 'duplicate-coupon' => 'کوپن قبلاً وجود دارد ، لطفاً با یک کوپن دیگر دوباره امتحان کنید' + ], + + 'catalog' => [ + 'name' => 'نام', + 'description' => 'توضیحات', + 'apply-percent' => 'به عنوان درصد اعمال شود', + 'apply-fixed' => 'به عنوان مقدار ثابت اعمال شود', + 'adjust-to-percent' => 'تنظیم به درصد', + 'adjust-to-value' => 'مقدار تخفیف را تنظیم کنید', + 'condition-missing' => 'لطفا شرایط را بررسی کنید ، برخی از مقادیر ممکن است وجود نداشته باشد' + ], + + 'cart' => [ + 'buy-atleast' => 'حداقل بخرید', + 'apply-to-shipping' => 'درخواست حمل و نقل' + ] + ], + + 'error' => [ + 'go-to-home' => 'رفتن به خانه', + 'in-maitainace' => 'در حال تعمیر و نگهداری', + 'right-back' => 'الآن برمیگردم', + + '404' => [ + 'page-title' => '404 صفحه مورد نظر یافت نشد', + 'name' => '404', + 'title' => 'صفحه یافت نشد', + 'message' => 'صفحه مورد نظر شما وجود ندارد یا منتقل شده است. با استفاده از منوی کناری حرکت کنید.' + ], + '403' => [ + 'page-title' => '403 شما اجازه دسترسی به این صفحه را ندارید', + 'name' => '403', + 'title' => 'دسترسی شما محدود شده است', + 'message' => 'شما اجازه دسترسی به این صفحه را ندارید' + ], + '500' => [ + 'page-title' => '500 اشکال در سیستم', + 'name' => '500', + 'title' => 'اشکال در سیستم', + 'message' => 'سرور با خطای داخلی روبرو شد.' + ], + '401' => [ + 'page-title' => '401 خطای غیرمجاز', + 'name' => '401', + 'title' => 'خطای غیرمجاز', + 'message' => 'درخواست اعمال نشده است زیرا فاقد اعتبار تأیید معتبر برای منبع مورد نظر است.' + ], + ], + + 'export' => [ + 'export' => 'صادر کردن', + 'import' => 'وارد کردن', + 'format' => 'قالب را انتخاب کنید', + 'download' => 'بارگیری', + 'upload' => 'بارگزاری', + 'csv' => 'CSV', + 'xls' => 'XLS', + 'file' => 'File', + 'upload-error' => 'پرونده باید یک نوع از نوع ها باشد: xls, xlsx, csv.', + 'duplicate-error' => 'شناسه باید شناسه منحصر به فرد ، شناسه تکراری :identifier در سطر :position.', + 'enough-row-error' => 'ردیف پرونده کافی نیست', + 'allowed-type' => 'نوع مجاز :', + 'file-type' => 'csv, xls, xlsx.', + 'no-records' => 'هیچ چیز برای صادرات نیست', + 'illegal-format' => 'خطا! این نوع قالب یا پشتیبانی نمی شود یا فرمت غیرقانونی آن است' + ], + + 'response' => [ + 'being-used' => 'این منبع :name استفاده می شود در منبع :source', + 'cannot-delete-default' => 'کانال پیش فرض حذف نمی شود', + 'create-success' => ':name با موفقیت ایجاد شد', + 'update-success' => ':name با موفقیت به روز شد.', + 'delete-success' => ':name با موفقیت حذف شد', + 'delete-failed' => 'هنگام حذف :name خطایی روی داد.', + 'last-delete-error' => 'حداقل یک :name لازم است.', + 'user-define-error' => 'نمی توان :name سیستم را حذف کرد.', + 'attribute-error' => ':name در محصولات قابل تنظیم استفاده می شود.', + 'attribute-product-error' => ':name در محصولات استفاده می شود.', + 'customer-associate' => ':name نمی توان حذف کرد زیرا مشتری با این گروه در ارتباط است.', + 'currency-delete-error' => 'این ارز به عنوان ارز پایه کانال تنظیم شده است بنابراین نمی توان آن را حذف کرد.', + 'upload-success' => ':name با موفقیت بارگذاری شد.', + 'delete-category-root' => 'نمی توان دسته اصلی را حذف کرد', + 'create-root-failure' => 'طبقه بندی با ریشه نام در حال حاضر وجود دارد', + 'cancel-success' => ':name با موفقیت لغو شد.', + 'cancel-error' => ':name قابل لغو نیست.', + 'already-taken' => ':name قبلا گرفته شده.' + ], + + 'footer' => [ + 'copy-right' => 'طراحی شده توسط Bagisto ، یک پروژه عمومی توسط Webkul' + ], + + 'admin' => [ + 'system' => [ + 'catalog' => 'کاتالوگ', + 'products' => 'محصولات', + 'review' => 'بررسی', + 'allow-guest-review' => 'اجازه دادن به کاربر مهمان برای بررسی', + 'inventory' => 'موجودی', + 'stock-options' => 'گزینه های موجودی', + 'allow-backorders' => 'اجازه به دره های پستی', + 'customer' => 'مشتری', + 'settings' => 'تنظیمات', + 'address' => 'آدرس', + 'street-lines' => 'تعداد خطوط در خیابان', + 'sales' => 'فروش ها', + 'shipping-methods' => 'روش های حمل و نقل', + 'free-shipping' => 'ارسال رایگان', + 'flate-rate-shipping' => 'نرخ ثابت حمل و نقل', + 'shipping' => 'حمل و نقل دریایی', + 'origin' => 'مبدا', + 'country' => 'کشور', + 'state' => 'استان', + 'zip' => 'کد پستی', + 'city' => 'شهر', + 'street-address' => 'آدرس خیابان', + 'title' => 'عنوان', + 'description' => 'توضیحات', + 'rate' => 'نرخ', + 'status' => 'وضعیت', + 'type' => 'نوع', + 'payment-methods' => 'روش های پرداخت', + 'cash-on-delivery' => 'پرداخت در محل', + 'money-transfer' => 'انتقال وجه', + 'paypal-standard' => 'استاندارد پی پال', + 'business-account' => 'حساب کاربری تجاری', + 'newsletter' => 'اشتراک خبرنامه', + 'newsletter-subscription' => 'اشتراک خبرنامه را مجاز کنید', + 'email' => 'تاییدیه پست الکترونیک', + 'email-verification' => 'تایید پست الکترونیک را مجاز کنید', + 'sort_order' => 'ترتیب مرتب سازی', + 'general' => 'عمومی', + 'footer' => 'فوتر', + 'content' => 'محتوا', + 'footer-content' => 'متن فوتر', + 'locale-options' => 'گزینه های واحد', + 'weight-unit' => 'واحد وزن', + 'design' => 'طراحی', + 'admin-logo' => 'لوگو مدیر', + 'logo-image' => 'تصویر لوگو', + 'credit-max' => 'اعتبار مشتری حداکثر', + 'credit-max-value' => 'حداکثر میزان اعتبار', + 'use-credit-max' => 'استفاده از حداکثر اعتبار', + 'sandbox' => 'Sandbox' + ] + ] +]; diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php new file mode 100755 index 000000000..1c8a5d7d2 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -0,0 +1,1041 @@ + [ + 'no-result-found' => 'Não conseguimos encontrar nenhum registro.', + 'country' => 'Pais', + 'state' => 'Estado/Província', + 'true' => 'Verdadeiro', + 'false' => 'Falso' + ], + 'layouts' => [ + 'my-account' => 'Minha Conta', + 'logout' => 'Sair', + 'visit-shop' => 'Visitar Loja', + 'dashboard' => 'Dashboard', + 'sales' => 'Vendas', + 'orders' => 'Pedido', + 'shipments' => 'Envíos', + 'invoices' => 'Faturas', + 'catalog' => 'Catálogo', + 'products' => 'Produtos', + 'categories' => 'Categorias', + 'attributes' => 'Atributos', + 'attribute-families' => 'Grupos de Atributos', + 'customers' => 'Clientes', + 'groups' => 'Grupos', + 'reviews' => 'Avaliações', + 'newsletter-subscriptions' => 'Inscrições de Newsletter', + 'configure' => 'Configurar', + 'settings' => 'Opções', + 'locales' => 'Idiomas', + 'currencies' => 'Moedas', + 'exchange-rates' => 'Impostos de Câmbios', + 'inventory-sources' => 'Fontes de Inventários', + 'channels' => 'Canais (Lojas)', + 'users' => 'Usuários', + 'roles' => 'Funções', + 'sliders' => 'Sliders', + 'taxes' => 'Impostos', + 'tax-categories' => 'Categorias de Impostos', + 'tax-rates' => 'Impostos de Impostos', + 'promotion' => 'Promoções', + 'discount' => 'Desconto' + ], + 'acl' => [ + 'dashboard' => 'Dashboard', + 'sales' => 'Vendas', + 'orders' => 'Pedidos', + 'shipments' => 'Envios', + 'invoices' => 'Faturas', + 'catalog' => 'Catálogos', + 'products' => 'Produtos', + 'categories' => 'Categorias', + 'attributes' => 'Atributos', + 'attribute-families' => 'Famílias de Atributos', + 'customers' => 'Clientes', + 'groups' => 'Grupos', + 'reviews' => 'Avaliações', + 'newsletter-subscriptions' => 'Inscrições de Newsletter', + 'configure' => 'Configure', + 'settings' => 'Configurações', + 'locales' => 'Idiomas', + 'currencies' => 'Moedas', + 'exchange-rates' => 'Impostos de Câmbios', + 'inventory-sources' => 'Fontes de Inventários', + 'channels' => 'Canais (Lojas)', + 'users' => 'Usuários', + 'roles' => 'Funções', + 'sliders' => 'Sliders', + 'taxes' => 'Impostos', + 'tax-categories' => 'Categorias de Impostos', + 'tax-rates' => 'Impostos de Impostos', + 'edit' => 'Edit', + 'create' => 'Add', + 'delete' => 'Delete', + 'promotions' => 'Promoções', + 'cart-rules' => 'Regras do Carrinho' + ], + 'dashboard' => [ + 'title' => 'Dashboard', + 'from' => 'De', + 'to' => 'Para', + 'total-customers' => 'Total de Clientes', + 'total-orders' => 'Total de Pedidos', + 'total-sale' => 'Total de Vendas', + 'average-sale' => 'Média por Pedido', + 'increased' => ':progress% Aumento', + 'decreased' => ':progress% Diminuido', + 'sales' => 'Vendas', + 'top-performing-categories' => 'Categorias Mais Performáticas', + 'product-count' => ':count Produtos', + 'top-selling-products' => 'Produtos Mais Vendidos', + 'sale-count' => ':count Vendas', + 'customer-with-most-sales' => 'Clientes Com Mais Vendas', + 'order-count' => ':count Pedidos', + 'revenue' => 'Receita :total', + 'stock-threshold' => 'Limite de Estoque', + 'qty-left' => ':qty Restante', + ], + 'datagrid' => [ + 'mass-ops' => [ + 'method-error' => 'Erro! Método errado detectado, por favor, verifique a configuração de ação em massa', + 'delete-success' => 'O índice selecionado de :resource foi excluído com sucesso', + 'partial-action' => 'Algumas ações não foram executadas devido a restrições restritas do sistema em :resource', + 'update-success' => 'O índice selecionado :resource foram atualizados com sucesso', + ], + 'id' => 'ID', + 'status' => 'Status', + 'code' => 'Código', + 'admin-name' => 'Nome', + 'name' => 'Nome', + 'fullname' => 'Nome Completo', + 'type' => 'Tipo', + 'required' => 'Obrigatório', + 'unique' => 'Único', + 'per-locale' => 'Por Idioma', + 'per-channel' => 'Por Canal (Loja)', + 'position' => 'Posição', + 'locale' => 'Idioma', + 'hostname' => 'Hostname', + 'email' => 'Email', + 'group' => 'Grupo', + 'title' => 'Título', + 'comment' => 'Comentário', + 'product-name' => 'Produto', + 'currency-name' => 'Nome da Moéda', + 'exch-rate' => 'Imposto de Câmbio', + 'priority' => 'Prioridade', + 'subscribed' => 'Inscrito', + 'base-total' => 'Total Base', + 'grand-total' => 'Total Final', + 'order-date' => 'Data do Pedido', + 'channel-name' => 'Nome do Canal (Loja)', + 'billed-to' => 'Cobrado de', + 'shipped-to' => 'Enviado para', + 'order-id' => 'Pedido Id', + 'invoice-date' => 'Data da Fatura', + 'total-qty' => 'Total Qtd', + 'inventory-source' => 'Fonte do Estoque', + 'shipment-date' => 'Data de Envio', + 'shipment-to' => 'Enviado para', + 'sku' => 'SKU', + 'price' => 'Preço', + 'qty' => 'Quantidade', + 'permission-type' => 'Tipo de Permissão', + 'identifier' => 'Identificador', + 'state' => 'Estado', + 'country' => 'Pais', + 'tax-rate' => 'Imposto', + 'role' => 'Função', + 'sub-total' => 'Sub Total', + 'no-of-products' => 'Número de Produtos', + 'attribute-family' => 'Família de Atributos', + 'starts-from' => 'Começa de', + 'ends-till' => 'Termina Até', + 'per-cust' => 'Por cliente', + 'usage-throttle' => 'Tempos de uso', + 'for-guest' => 'Para convidados', + 'refunded' => 'Refunded' + ], + 'account' => [ + 'title' => 'Minha Conta', + 'save-btn-title' => 'Salvar', + 'general' => 'Geral', + 'name' => 'Nome', + 'email' => 'Email', + 'password' => 'Senha', + 'confirm-password' => 'Confirmar Senha', + 'change-password' => 'Mudar Senha da Conta', + 'current-password' => 'Senha Atual' + ], + 'users' => [ + 'forget-password' => [ + 'title' => 'Esqueci Minha Senha', + 'header-title' => 'Recuperar Senha', + 'email' => 'E-mail Registrado', + 'password' => 'Senha', + 'confirm-password' => 'Confirmar Senha', + 'back-link-title' => 'Voltar para Login', + 'submit-btn-title' => 'Link do E-mail para Recuperar Senha' + ], + 'reset-password' => [ + 'title' => 'Resetar Senha', + 'email' => 'E-mail Registrado', + 'password' => 'Senha', + 'confirm-password' => 'Confirmar Senha', + 'back-link-title' => 'Voltar para Login', + 'submit-btn-title' => 'Resetar Senha' + ], + 'roles' => [ + 'title' => 'Funções', + 'add-role-title' => 'Add Função', + 'edit-role-title' => 'Editar Função', + 'save-btn-title' => 'Salvar Função', + 'general' => 'Geral', + 'name' => 'Nome', + 'description' => 'Descrição', + 'access-control' => 'Controle de Acesso', + 'permissions' => 'Permissões', + 'custom' => 'Personalizado', + 'all' => 'Tudo' + ], + 'users' => [ + 'title' => 'Usuário', + 'add-user-title' => 'Add Usuário', + 'edit-user-title' => 'Editar Usuário', + 'save-btn-title' => 'Salvar Usuário', + 'general' => 'Geral', + 'email' => 'Email', + 'name' => 'Nome', + 'password' => 'Senha', + 'confirm-password' => 'Confirmar Senha', + 'status-and-role' => 'Status e Função', + 'role' => 'Função', + 'status' => 'Status', + 'account-is-active' => 'Conta está Ativa', + 'current-password' => 'Informe a Senha Atual', + 'confirm-delete' => 'Confirma a Exclusão dessa Conta', + 'confirm-delete-title' => 'Confirme a senha antes de deletar', + 'delete-last' => 'Ao menos um admin é obrigatório.', + 'delete-success' => 'Sucesso! Usuário Deletado', + 'incorrect-password' => 'A Senha informada é incorreta!', + 'password-match' => 'A senha atual não corresponde.', + 'account-save' => 'Alterações na conta salvas com sucesso.', + 'login-error' => 'Por favor, verifique suas credenciais e tente novamente.', + 'activate-warning' => 'Sua conta ainda está para ser ativada, entre em contato com o administrador.' + ], + 'sessions' => [ + 'title' => 'Entrar', + 'email' => 'Email', + 'password' => 'Senha', + 'forget-password-link-title' => 'Esqueceu a Senha?', + 'remember-me' => 'Lembrar de mim', + 'submit-btn-title' => 'Entrar' + ] + ], + 'sales' => [ + 'orders' => [ + 'title' => 'Pedidos', + 'view-title' => 'Pedido #:order_id', + 'cancel-btn-title' => 'Cancelas', + 'shipment-btn-title' => 'Enviar', + 'invoice-btn-title' => 'Faturar', + 'info' => 'Informação', + 'invoices' => 'Faturas', + 'shipments' => 'Envios', + 'order-and-account' => 'Pedido e Conta', + 'order-info' => 'Informação do Pedido', + 'order-date' => 'Data do Pedido', + 'order-status' => 'Status do Pedido', + 'channel' => 'Canal (Loja)', + 'customer-name' => 'Nome do Cliente', + 'email' => 'Email', + 'contact-number' => 'Número de Contato', + 'account-info' => 'Informação da Conta', + 'address' => 'Endereço', + 'shipping-address' => 'Endereço de Envio', + 'billing-address' => 'Endereço de Cobrança', + 'payment-and-shipping' => 'Pagamento e Entrega', + 'payment-info' => 'Informação de Pagamento', + 'payment-method' => 'Método de Pagamento', + 'currency' => 'Moeda', + 'shipping-info' => 'Informação de Entrgea', + 'shipping-method' => 'Método de Entrega', + 'shipping-price' => 'Preço de Entrega', + 'products-ordered' => 'Produtos Pedidos', + 'SKU' => 'SKU', + 'product-name' => 'Nome do Produto', + 'qty' => 'Qtd', + 'item-status' => 'Item Status', + 'item-ordered' => 'Pedido(s) (:qty_ordered)', + 'item-invoice' => 'Faturado(s) (:qty_invoiced)', + 'item-shipped' => 'Enviado(s) (:qty_shipped)', + 'item-canceled' => 'Cancelado(s) (:qty_canceled)', + 'item-refunded' => 'Refunded (:qty_refunded)', + 'price' => 'Preço', + 'total' => 'Total', + 'subtotal' => 'Subtotal', + 'shipping-handling' => 'Entrega & Manuseio', + 'discount' => 'Discount', + 'tax' => 'Imposto', + 'tax-percent' => 'Percentual Imposto', + 'tax-amount' => 'Valor de Imposto', + 'discount-amount' => 'Discount Amount', + 'discount-amount' => 'Valor de Desconto', + 'grand-total' => 'Total', + 'total-paid' => 'Total Pago', + 'total-refunded' => 'Total Estornado', + 'total-due' => 'Total Devido', + 'cancel-confirm-msg' => 'Tem certeza que deseja cancelar esse pedido ?', + 'refunds' => 'Refunds', + 'refunded' => 'Refunded' + ], + 'invoices' => [ + 'title' => 'Faturas', + 'id' => 'Id', + 'invoice-id' => 'Fatura Id', + 'date' => 'Data da Fatura', + 'order-id' => 'Pedido Id', + 'customer-name' => 'Nome do Cliente', + 'status' => 'Status', + 'amount' => 'Valor', + 'action' => 'Ação', + 'add-title' => 'Criar Fatura', + 'save-btn-title' => 'Salvar Fatura', + 'qty' => 'Qtd', + 'qty-ordered' => 'Qtd Pedido', + 'qty-to-invoice' => 'Qtd Faturado', + 'view-title' => 'Fatura #:invoice_id', + 'bill-to' => 'Cobrar de', + 'ship-to' => 'Enviar para', + 'print' => 'Imprimir', + 'order-date' => 'Data do Pedido', + 'creation-error' => 'A criação de fatura de pedido não é permitida.', + 'product-error' => 'A fatura não pode ser criada sem produtos.' + ], + + 'shipments' => [ + 'title' => 'Entregas', + 'id' => 'Id', + 'date' => 'Data de Envio', + 'order-id' => 'Pedido Id', + 'order-date' => 'Data do Pedido', + 'customer-name' => 'Nome do Cliente', + 'total-qty' => 'Total Qtd', + 'action' => 'Ação', + 'add-title' => 'Criar Entrega', + 'save-btn-title' => 'Salvar Entrega', + 'qty-ordered' => 'Qtd pedido', + 'qty-to-ship' => 'Qty para enviar', + 'available-sources' => 'Fontes Disponíveis', + 'source' => 'Fonte', + 'select-source' => 'Por favor Selecione a Fonte', + 'qty-available' => 'Qtd Disponível', + 'inventory-source' => 'Fonte do Estoque', + 'carrier-title' => 'Título da Transportadora', + 'tracking-number' => 'Código de Rastreio', + 'view-title' => 'Entrega #:shipment_id', + 'creation-error' => 'A expedição não pode ser criada para este pedido.', + 'order-error' => 'A criação de remessa de pedidos não é permitida.', + 'quantity-invalid' => 'A quantidade solicitada é inválida ou não está disponível.' + ], + + 'refunds' => [ + 'title' => 'Refunds', + 'id' => 'Id', + 'add-title' => 'Create Refund', + 'save-btn-title' => 'Refund', + 'order-id' => 'Order Id', + 'qty-ordered' => 'Qty Ordered', + 'qty-to-refund' => 'Qty To Refund', + 'refund-shipping' => 'Refund Shipping', + 'adjustment-refund' => 'Adjustment Refund', + 'adjustment-fee' => 'Adjustment Fee', + 'update-qty' => 'Update Quantities', + 'invalid-qty' => 'Found invalid quantity for return items.', + 'refund-limit-error' => 'The most money available to refund is :amount.', + 'refunded' => 'Refunded', + 'date' => 'Refund Date', + 'customer-name' => 'Customer Name', + 'status' => 'Status', + 'action' => 'Action', + 'view-title' => 'Refund #:refund_id', + 'invalid-refund-amount-error' => 'Refund amount should be non zero.' + ] + ], + 'catalog' => [ + 'products' => [ + 'title' => 'Produtos', + 'add-product-btn-title' => 'Add Produto', + 'add-title' => 'Add Produto', + 'edit-title' => 'Editar Produto', + 'save-btn-title' => 'Salvar Produto', + 'general' => 'Geral', + 'product-type' => 'Tipo de Produto', + 'simple' => 'Simples', + 'configurable' => 'Configurável', + 'familiy' => 'Grupo de Atributos', + 'sku' => 'SKU', + 'configurable-attributes' => 'Atributos Configuráveis', + 'attribute-header' => 'Atributos(s)', + 'attribute-option-header' => 'Opções do Atributo', + 'no' => 'Não', + 'yes' => 'Sim', + 'disabled' => 'Desativado', + 'enabled' => 'Ativado', + 'add-variant-btn-title' => 'Add Variação', + 'name' => 'Nome', + 'qty' => 'Qtd', + 'price' => 'Preço', + 'weight' => 'Peso', + 'status' => 'Status', + 'add-variant-title' => 'Add Variação', + 'variant-already-exist-message' => 'Variante com as mesmas opções de atributo já existe.', + 'add-image-btn-title' => 'Add Imagem', + 'mass-delete-success' => 'Todos os índices de produtos selecionados foram excluídos com sucesso', + 'mass-update-success' => 'Todo o índice selecionado de produtos foi atualizado com sucesso', + 'downloadable' => 'Downloadable Information', + 'links' => 'Links', + 'add-link-btn-title' => 'Add Link', + 'samples' => 'Samples', + 'add-sample-btn-title' => 'Add Sample', + 'downloads' => 'Download Allowed', + 'file' => 'File', + 'sample' => 'Sample', + 'upload-file' => 'Upload File', + 'url' => 'Url', + 'sort-order' => 'Sort Order', + 'browse-file' => 'Browse File', + 'configurable-error' => 'Por favor, selecione pelo menos um atributo configurável.', + 'categories' => 'Categorias', + 'images' => 'Imagens', + 'inventories' => 'Os inventários', + 'variations' => 'Variações', + 'product-link' => 'Produtos Vinculados', + 'cross-selling' => 'Venda cruzada', + 'up-selling' => 'Acima de vender', + 'related-products' => 'Produtos relacionados', + 'product-search-hint' => 'Comece a digitar o nome do produto', + 'no-result-found' => 'Produtos não encontrados com o mesmo nome.', + 'searching' => 'Procurando ...', + 'grouped-products' => 'Grouped Products', + 'search-products' => 'Search Products', + 'no-result-found' => 'Products not found with same name.', + 'bundle-items' => 'Bundle Items', + 'add-option-btn-title' => 'Add Option', + 'option-title' => 'Option Title', + 'input-type' => 'Input Type', + 'is-required' => 'Is Required', + 'select' => 'Select', + 'radio' => 'Radio', + 'checkbox' => 'Checkbox', + 'multiselect' => 'Multiselect', + 'new-option' => 'New Option', + 'is-default' => 'Is Default' + ], + 'attributes' => [ + 'title' => 'Atributos', + 'add-title' => 'Add Atributo', + 'edit-title' => 'Editar Atributo', + 'save-btn-title' => 'Salvar Atributo', + 'general' => 'Geral', + 'code' => 'Código do Atributo', + 'type' => 'Tipo do Atributo', + 'text' => 'Texto', + 'textarea' => 'Área de Texto', + 'price' => 'Preço', + 'boolean' => 'Boleano', + 'select' => 'Caixa de Seleção', + 'multiselect' => 'Caixa de Seleção Múltipla', + 'datetime' => 'Data e Hora', + 'date' => 'Data', + 'label' => 'Etiqueta', + 'admin' => 'Admin', + 'options' => 'Opções', + 'position' => 'Posição', + 'add-option-btn-title' => 'Add Opção', + 'validations' => 'Validações', + 'input_validation' => 'Validação de Campo', + 'is_required' => 'É Obrigratório', + 'is_unique' => 'É Único', + 'number' => 'Número', + 'decimal' => 'Decimal', + 'email' => 'Email', + 'url' => 'URL', + 'configuration' => 'Configuração', + 'status' => 'Status', + 'yes' => 'Sim', + 'no' => 'Não', + 'value_per_locale' => 'Valor Por Idioma', + 'value_per_channel' => 'Valor Por Canal (Loja)', + 'is_filterable' => 'Usar na navegação em camadas', + 'is_configurable' => 'Usar para Criar Produtos Configuráveis', + 'admin_name' => 'Admin Nome', + 'is_visible_on_front' => 'Visível na página de exibição do produto no front-end', + 'swatch_type' => 'Tipo de amostra', + 'dropdown' => 'Suspenso (a)', + 'color-swatch' => 'Amostra de cor', + 'image-swatch' => 'Amostra de imagem', + 'text-swatch' => 'Amostra de texto', + 'swatch' => 'Swatch', + 'image' => 'Imagem', + 'file' => 'Arquivo' + ], + 'families' => [ + 'title' => 'Famílias', + 'add-family-btn-title' => 'Add Família', + 'add-title' => 'Add Família', + 'edit-title' => 'Editar Família', + 'save-btn-title' => 'Salvar Família', + 'general' => 'Geral', + 'code' => 'Código da Família', + 'name' => 'Nome', + 'groups' => 'Grupos', + 'add-group-title' => 'Add Grupo', + 'position' => 'Posição', + 'attribute-code' => 'Código', + 'type' => 'Tipo', + 'add-attribute-title' => 'Add Atributos', + 'search' => 'Buscar', + 'group-exist-error' => 'Grupo com o mesmo nome já existe.' + ], + 'categories' => [ + 'title' => 'Categorias', + 'add-title' => 'Add Categoria', + 'edit-title' => 'Editar Categoria', + 'save-btn-title' => 'Salvar Categoria', + 'general' => 'Geral', + 'name' => 'Nome', + 'visible-in-menu' => 'Visível no Menu', + 'yes' => 'Sim', + 'no' => 'Não', + 'position' => 'Posição', + 'display-mode' => 'Display Mode', + 'products-and-description' => 'Products and Description', + 'products-only' => 'Products Only', + 'description-only' => 'Description Only', + 'description-and-images' => 'Descrição e Imagens', + 'description' => 'Descrição', + 'parent-category' => 'Categoria Pai', + 'seo' => 'Search Engine Optimization', + 'slug' => 'Slug', + 'meta_title' => 'Meta Título', + 'meta_description' => 'Meta Descrição', + 'meta_keywords' => 'Meta Keywords', + 'image' => 'Imagem', + ] + ], + 'configuration' => [ + 'title' => 'Configuração', + 'save-btn-title' => 'Salvar', + 'save-message' => 'Configuração salvada com sucesso!', + 'yes' => 'Sim', + 'no' => 'Não', + 'delete' => 'Deletar', + 'tax-categories' => [ + 'title' => 'Categorias de Imposto', + 'add-title' => 'Add Categorias de Imposto', + 'edit-title' => 'Editar Categorias de Imposto', + 'save-btn-title' => 'Salvar Categorias de Imposto', + 'general' => 'Categorias de Imposto', + 'select-channel' => 'Selecione o Canal (Loja)', + 'name' => 'Nome', + 'code' => 'Código', + 'description' => 'Descrição', + 'select-taxrates' => 'Selecionar Taxas de Imposto', + 'edit' => [ + 'title' => 'Editar Categorias de Imposto', + 'edit-button-title' => 'Editar Categorias de Imposto' + ] + ], + 'tax-rates' => [ + 'title' => 'Taxas de Impostos', + 'add-title' => 'Add Taxas de Imposto', + 'edit-title' => 'Editar Taxas de Imposto', + 'save-btn-title' => 'Salvar Taxas de Imposto', + 'general' => 'Taxas de Imposto', + 'identifier' => 'Identificador', + 'is_zip' => 'Ativar Range de CEP', + 'zip_from' => 'CEP de', + 'zip_to' => 'CEP para', + 'state' => 'Estado', + 'select-state' => 'Selecione uma região, estado ou província.', + 'country' => 'País', + 'tax_rate' => 'Taxa', + 'edit' => [ + 'title' => 'Editae Taxas de Impostos', + 'edit-button-title' => 'Editar Taxa' + ], + 'zip_code' => 'CEP', + 'is_zip' => 'Ativar intervalo de CEP' + ], + 'sales' => [ + 'shipping-method' => [ + 'title' => 'Método de Entregas', + 'save-btn-title' => 'Salvar', + 'description' => 'Descrição', + 'active' => 'Ativo', + 'status' => 'Status' + ] + ] + ], + 'settings' => [ + 'locales' => [ + 'title' => 'Idiomas', + 'add-title' => 'Add Idioma', + 'edit-title' => 'Editar Idioma', + 'save-btn-title' => 'Salvar Idioma', + 'general' => 'Geral', + 'code' => 'Código', + 'name' => 'Nome', + 'create-success' => 'Local criado com sucesso.', + 'update-success' => 'Localidade atualizada com sucesso.', + 'delete-success' => 'Locale excluído com sucesso.', + 'last-delete-error' => 'Pelo menos um local é obrigatório.' + ], + 'countries' => [ + 'title' => 'Países', + 'add-title' => 'Add País', + 'save-btn-title' => 'Salvar País', + 'general' => 'Geral', + 'code' => 'Código', + 'name' => 'Nome' + ], + 'currencies' => [ + 'title' => 'Moedas', + 'add-title' => 'Add Moeda', + 'edit-title' => 'Editar Moeda', + 'save-btn-title' => 'Salvar Moeda', + 'general' => 'Geral', + 'code' => 'Código', + 'name' => 'Nome', + 'symbol' => 'Símbolo', + 'create-success' => 'Moeda criada com sucesso.', + 'update-success' => 'Moeda atualizada com sucesso.', + 'delete-success' => 'Moeda excluída com sucesso.', + 'last-delete-error' => 'Pelo menos uma moeda é necessária.' + ], + 'exchange_rates' => [ + 'title' => 'Taxas de Câmbio', + 'add-title' => 'Add Taxa de Câmbio', + 'edit-title' => 'Editar Taxa de Câmbio', + 'save-btn-title' => 'Salvar Taxa de Câmbio', + 'general' => 'Geral', + 'source_currency' => 'Moeda de Origem', + 'target_currency' => 'Moeda Alvo', + 'rate' => 'Taxa', + 'create-success' => 'Taxa de Câmbio criada com sucesso.', + 'update-success' => 'Taxa de Câmbio atualizada com sucesso.', + 'delete-success' => 'Taxa de Câmbio excluída com sucesso.', + 'last-delete-error' => 'Pelo menos uma taxa de câmbio é necessária.' + ], + 'inventory_sources' => [ + 'title' => 'Origens do Estoque', + 'add-title' => 'Add Origem de Estoque', + 'edit-title' => 'Editar Origem de Estoque', + 'save-btn-title' => 'Salvar Origem de Estoque', + 'general' => 'Geral', + 'code' => 'Código', + 'name' => 'Nome', + 'description' => 'Descrição', + 'source-is-active' => 'Origem é ativo', + 'contact-info' => 'Informação de Contato', + 'contact_name' => 'Nome', + 'contact_email' => 'Email', + 'contact_number' => 'Número de Contato', + 'contact_fax' => 'Fax', + 'address' => 'Endereço de Origem', + 'country' => 'País', + 'state' => 'Estado', + 'city' => 'Cidade', + 'street' => 'Logradouro', + 'postcode' => 'CEP', + 'priority' => 'Prioridade', + 'latitude' => 'Latitude', + 'longitude' => 'Longitude', + 'status' => 'Status', + 'create-success' => 'Fonte de inventário criada com sucesso.', + 'update-success' => 'Fonte de inventário atualizada com sucesso.', + 'delete-success' => 'Fonte de inventário excluída com sucesso.', + 'last-delete-error' => 'Pelo menos uma fonte de inventário é necessária.' + ], + 'channels' => [ + 'title' => 'Canais (Lojas)', + 'add-title' => 'Add Canal (Loja)', + 'edit-title' => 'Edit Canal(Loja)', + 'save-btn-title' => 'Salvar Canal(Loja)', + 'general' => 'Geral', + 'code' => 'Código', + 'name' => 'Nome', + 'description' => 'Descrição', + 'hostname' => 'Hostname', + 'currencies-and-locales' => 'Moedas e Idiomas', + 'locales' => 'Idiomas', + 'default-locale' => 'Idioma Padrão', + 'currencies' => 'Moedas', + 'base-currency' => 'Moeda Base', + 'root-category' => 'Categoria Raíz', + 'inventory_sources' => 'Origem do Estoque', + 'design' => 'Design', + 'theme' => 'Tema', + 'home_page_content' => 'Conteúdo da Página Inicial', + 'footer_content' => 'Conteúdo do Rodapé', + 'logo' => 'Logo', + 'favicon' => 'Favicon', + 'create-success' => 'Canal criado com sucesso.', + 'update-success' => 'Canal atualizado com sucesso.', + 'delete-success' => 'Canal excluído com sucesso.', + 'last-delete-error' => 'Pelo menos um canal é necessário.' + ], + 'sliders' => [ + 'title' => 'Sliders', + 'name' => 'Name', + 'add-title' => 'Criar Slider', + 'edit-title' => 'Editar Slider', + 'save-btn-title' => 'Salvar Slider', + 'general' => 'Geral', + 'image' => 'Imagem', + 'content' => 'Conteúdo', + 'channels' => 'Canal(Loja)', + 'created-success' => 'Slider criado com sucesso', + 'created-fault' => 'Erro ao criar Slider', + 'update-success' => 'Slider atualizado com sucesso', + 'update-fail' => 'Slider não pôde ser atualizado', + 'delete-success' => 'Não foi possível excluir o slider', + 'delete-fail' => 'Slider excluído com sucesso' + ], + 'tax-categories' => [ + 'title' => 'Categorias de Imposto', + 'add-title' => 'Criar Categoria de Imposto', + 'edit-title' => 'Edita Categoria de Imposto', + 'save-btn-title' => 'Salvar Categoria de Imposto', + 'general' => 'Categoria de Imposto', + 'select-channel' => 'Selecione o Canal(Loja)', + 'name' => 'Nome', + 'code' => 'Código', + 'description' => 'Descrição', + 'select-taxrates' => 'Selecione as Taxas de Impostoss', + 'edit' => [ + 'title' => 'Editar Categoria de Imposto', + 'edit-button-title' => 'Editar Categoria de Imposto' + ], + 'create-success' => 'Nova Categoria de Imposto Criada', + 'create-error' => 'Erro, durante a Criação da Categoria de Imposto', + 'update-success' => 'Categoria de Imposto atualizada com sucesso', + 'update-error' => 'Erro, durante a atualização da Categoria de Imposto', + 'atleast-one' => 'Não é possível excluir a última Categoria de Imposto', + 'delete' => 'Categoria de Imposto excluída com sucesso' + ], + 'tax-rates' => [ + 'title' => 'Taxas de Impostos', + 'add-title' => 'Criar Taxas de Impostos', + 'edit-title' => 'Editar Taxas de Impostos', + 'save-btn-title' => 'Salvar Taxas de Impostos', + 'general' => 'Taxas de Impostos', + 'identifier' => 'Identificador', + 'is_zip' => 'Ativar Range de CEP', + 'zip_from' => 'CEP de', + 'zip_to' => 'CEP para', + 'state' => 'Estado', + 'select-state' => 'Selecione uma região, estado ou província.', + 'country' => 'País', + 'tax_rate' => 'Taxa', + 'edit' => [ + 'title' => 'Editar Taxas de Impostos', + 'edit-button-title' => 'Editar Taxa' + ], + 'zip_code' => 'CEP', + 'is_zip' => 'Ativar Range de CEP', + 'create-success' => 'Taxas de Impostos Criada com Sucesso', + 'create-error' => 'Não foi Possível Criar a Taxa de Impostos', + 'update-success' => 'Taxas de Impostos Atualizadas com Sucesso', + 'update-error' => 'Erro! Taxas de Impostos Não Poderam ser Atualizadas', + 'delete' => 'Taxas de Impostos Excluídas com Sucesso', + 'atleast-one' => 'Não é Possível Excluir a Última Taxa de Impostos' + ], + 'development' => [ + 'title' => 'Desenvolvimento', + ] + ], + 'customers' => [ + 'groups' =>[ + 'add-title' => 'Add Grupo', + 'edit-title' => 'Editar Grupo', + 'save-btn-title' => 'Salvar Grupo', + 'title' => 'Grupos', + 'save-btn-title' => 'Salvar Grupo', + 'code' => 'Code', + 'name' => 'Nome', + 'is_user_defined' => 'Usuário Definido', + 'yes' => 'Sim' + ], + 'note' => [ + 'title' => 'Add Note', + 'save-note' => 'Save Note', + 'enter-note' => 'Enter Note', + 'help-title' => 'Add Note On This Customer' + ], + 'customers' => [ + 'add-title' => 'Add Cliente', + 'edit-title' => 'Editar Cliente', + 'title' => 'Clientes', + 'first_name' => 'Nome', + 'last_name' => 'Sobrenome', + 'gender' => 'Gênero', + 'email' => 'Email', + 'date_of_birth' => 'Data de Nascimento', + 'phone' => 'Telefone', + 'customer_group' => 'Grupo de Cliente', + 'save-btn-title' => 'Salvar Cliente', + 'channel_name' => 'Nome do Canal(Loja)', + 'state' => 'Estado', + 'select-state' => 'Selecione uma região, estado ou província.', + 'country' => 'País', + 'male' => 'Masculino', + 'female' => 'Feminino', + 'phone' => 'Telefone', + 'group-default' => 'Não possível excluir o grupo de cliente.', + 'edit-help-title' => 'Editar cliente', + 'delete-help-title' => 'Excluir cliente', + 'mass-destroy-success' => 'Clientes excluídos com sucesso', + 'mass-update-success' => 'Clientes atualizados com sucesso', + 'status' => 'Status', + 'active' => 'Ativo (a)', + 'in-active' => 'Inativo (a)' + ], + 'reviews' => [ + 'title' => 'Avaliações', + 'edit-title' => 'Editar Avaliação', + 'rating' => 'Classificação', + 'status' => 'Status', + 'comment' => 'Comentar', + 'pending' => 'Pendente', + 'approved' => 'Aprovado', + 'disapproved' => 'Desaprovar' + ], + 'subscribers' => [ + 'title' => 'Assinantes de Newletter', + 'title-edit' => 'Editar Assinante', + 'email' => 'Email', + 'is_subscribed' => 'Inscrito', + 'edit-btn-title' => 'Atualizar inscrito', + 'update-success' => 'Inscrito foi atualizado com sucesso', + 'update-failed' => 'Erro! Você não pode atualizar a inscrição desse usuário', + 'delete' => 'Inscrito foi excluído com sucesso', + 'delete-failed' => 'Erro! Você não pode excluir a inscrição desse usuário', + ] + ], + 'promotion' => [ + 'catalog-rule' => 'Regras de Catálogo', + 'cart-rule' => 'Regras do Carrinho', + 'add-catalog-rule' => 'Adicionar regra de catálogo', + 'add-cart-rule' => 'Adicionar Regra do Carrinho', + 'edit-cart-rule' => 'Editar regra do carrinho', + 'edit-catalog-rule' => 'Editar regra do catálogo', + 'create-catalog-rule' => 'Criar regra de catálogo', + 'create-cart-rule' => 'Criar regra de carrinho', + 'save-btn-title' => 'Criar', + 'edit-btn-title' => 'Editar', + 'save' => 'Salve', + 'select-attr' => 'Selecione o atributo', + 'select-attr-fam' => 'Selecione a Família de Atributos', + 'select-cart-attr' => 'Selecione o atributo Carrinho', + 'general-info' => [ + 'name' => 'Nome da regra', + 'description' => 'Descrição', + 'starts-from' => 'Começar', + 'ends-till' => 'Fim', + 'channels' => 'Canais', + 'channels-req' => 'Canais', + 'cust-groups' => 'Grupos de clientes', + 'priority' => 'Prioridade', + 'add-condition' => 'Adicionar condições', + 'disc_amt' => 'Valor de desconto', + 'disc_percent' => 'Porcentagem de desconto', + 'is-coupon' => 'Use cupom', + 'is-coupon-yes' => 'Sim', + 'is-coupon-no' => 'Não', + 'uses-per-cust' => 'Usos por cliente', + 'all' => 'Todos (a)', + 'any' => 'Qualquer', + 'end-other-rules' => 'Acabar com outras regras', + 'status' => 'Está ativo', + 'all-conditions-true' => 'Assumindo que todas as condições sejam verdadeiras', + 'assuming' => 'Assumindo', + 'any' => 'Qualquer', + 'all' => 'Todos (a)', + 'conditions' => 'Condições', + 'apply' => 'Aplique', + 'are' => 'está', + 'true' => 'verdade', + 'false' => 'falso (a)', + 'limit' => 'Limite de uso', + 'specific-coupon' => 'Cupom Específico (Cheque) / Gerado Automaticamente (Desmarque)', + 'free-shipping' => 'Frete grátis', + 'is-guest' => 'Para os hóspedes', + 'disc_qty' => 'Max. Quantidade permitida para ser descontado', + 'test-mode' => 'Escolha como testar as condições', + 'labels' => 'Rótulos' + ], + 'status' => [ + 'success' => 'Sucesso! regra criada', + 'success-coupon' => 'Sucesso! regra criada junto com o cupom', + 'failed' => 'Erro! não conseguiu criar regra', + 'update-success' => 'Sucesso! regra atualizada', + 'update-coupon-success' => 'Sucesso! regra atualizada junto com cupom', + 'update-failed' => 'Erro! não pode atualizar', + 'delete-success' => 'Sucesso! regra excluída', + 'delete-failed' => 'Erro! não pode apagar', + 'coupon-applied' => 'Cupom Usado', + 'coupon-failed' => 'O cupom não foi aplicado', + 'no-coupon' => '* Cupom não aplicável', + 'coupon-removed' => 'Cupom removido com sucesso', + 'coupon-remove-failed' => 'Remoção de cupons falhou', + 'duplicate-coupon' => 'O cupom já existe, por favor tente novamente com um cupom diferente' + ], + 'catalog' => [ + 'name' => 'Nome', + 'description' => 'Descrição', + 'apply-percent' => 'Aplique como porcentagem', + 'apply-fixed' => 'Aplicar como quantia fixa', + 'adjust-to-percent' => 'Ajuste para porcentagem', + 'adjust-to-value' => 'Ajustar ao valor de desconto', + 'condition-missing' => 'Por favor, verifique condições, alguns valores podem estar faltando' + ], + 'cart' => [ + 'buy-atleast' => 'Compre Atleast', + 'apply-to-shipping' => 'Aplicar ao envio' + ] + ], + + 'error' => [ + 'go-to-home' => 'IR PARA PÁGINA INICIAL', + 'in-maitainace' => 'In Maintenance', + 'right-back' => 'Be Right Back', + '404' => [ + 'page-title' => '404 Página não Encontrada', + 'name' => '404', + 'title' => 'Página não Encontrad', + 'message' => 'A página que você está procurando não existe ou foi movida. Navegue usando o menu lateral.' + ], + '403' => [ + 'page-title' => '403 Acesso Negado', + 'name' => '403', + 'title' => 'Acesso Negado', + 'message' => 'Você não tem permissão para acessar esta página' + ], + '500' => [ + 'page-title' => '500 Erro Interno do Servidor', + 'name' => '500', + 'title' => 'Erro Interno do Servidor', + 'message' => 'O servidor encontrou um erro interno.' + ], + '401' => [ + 'page-title' => '401 Erro não Autorizado', + 'name' => '401', + 'title' => 'Erro não Autorizado', + 'message' => 'A solicitação não foi aplicada porque não possui credenciais de autenticação válidas para o recurso de destino.' + ], + ], + + 'export' => [ + 'export' => 'Exportar', + 'import' => 'Importar', + 'format' => 'Selecione o Formato', + 'download' => 'Download', + 'upload' => 'Upload', + 'csv' => 'CSV', + 'xls' => 'XLS', + 'file' => 'Arquivo', + 'upload-error' => 'O arquivo deve ser um arquivo do tipo: xls, xlsx, csv.', + 'duplicate-error' => 'Identificador deve ser único, identificador duplicado :identifier na linha :position.', + 'enough-row-error' => 'arquivo não tem linhas suficientes', + 'allowed-type' => 'Tipo permitido :', + 'file-type' => 'csv, xls, xlsx.', + 'no-records' => 'Nada para exportar', + 'illegal-format' => 'Erro! Este tipo de formato não é suportado ou seu formato ilegal' + ], + 'response' => [ + 'being-used' => 'Este recurso :name está sendo usado em :source', + 'cannot-delete-default' => 'Não é possível excluir o canal padrão', + 'create-success' => ':name criado com sucesso.', + 'update-success' => ':name atualizaco com sucesso.', + 'delete-success' => ':name excluído com sucesso.', + 'last-delete-error' => 'Ao menos um :name é obrigatório.', + 'user-define-error' => 'Não pode excluir o sistema :name', + 'attribute-error' => ':name é usado em produtos configuráveis.', + 'attribute-product-error' => ':name é usado em produtos.', + 'customer-associate' => ':name não pode ser excluído porque o cliente está associado a esse grupo.', + 'currency-delete-error' => 'Esta moeda é definida como moeda base do canal, então não pode ser excluída.', + 'upload-success' => ':name carregado com sucesso.', + 'delete-category-root' => 'Não é possível excluir a categoria raiz', + 'create-root-failure' => 'A categoria com nome root já existe', + 'cancel-success' => ':name cancelado com sucesso.', + 'cancel-error' => ':name não pode ser cancelado.', + 'already-taken' => 'O :name já foi tomada.' + ], + + 'footer' => [ + 'copy-right' => 'Desenvolvido por Bagisto, um projeto comunitário da Webkul' + ], + + 'admin' => [ + 'system' => [ + 'catalog' => 'Catálogo', + 'products' => 'Produtos', + 'review' => 'Reveja', + 'allow-guest-review' => 'Permitir comentário de convidado', + 'inventory' => 'Inventário', + 'stock-options' => 'Opções de ações', + 'allow-backorders' => 'Permitir atrasos', + 'customer' => 'Cliente', + 'settings' => 'Definições', + 'address' => 'Endereço', + 'street-lines' => 'Linhas em um endereço de rua', + 'sales' => 'Vendas', + 'shipping-methods' => 'Métodos de Envio', + 'free-shipping' => 'Frete grátis', + 'flate-rate-shipping' => 'Envio de taxa fixa', + 'shipping' => 'Remessa', + 'origin' => 'Origem', + 'country' => 'País', + 'state' => 'Estado', + 'zip' => 'CEP', + 'city' => 'Cidade', + 'street-address' => 'Endereço', + 'title' => 'Titulo', + 'description' => 'Descrição', + 'rate' => 'Taxa', + 'status' => 'Status', + 'type' => 'Tipo', + 'payment-methods' => 'Métodos de Pagamento', + 'cash-on-delivery' => 'Dinheiro na entrega', + 'money-transfer' => 'Transferência de dinheiro', + 'paypal-standard' => 'Padrão Paypal', + 'business-account' => 'Conta de negócios', + 'newsletter' => 'Assinatura de Newsletter', + 'newsletter-subscription' => 'Permitir assinatura do NewsLetter', + 'email' => 'Verificação de e-mail', + 'email-verification' => 'Permitir verificação de e-mail', + 'sort_order' => 'Ordem de classificação', + 'general' => 'Geral', + 'footer' => 'Rodapé', + 'content' => 'Conteúdo', + 'footer-content' => 'Texto de rodapé', + 'locale-options' => 'Opções de unidade', + 'weight-unit' => 'Unidade de peso', + 'design' => 'Design', + 'admin-logo' => 'Admin Logo', + 'logo-image' => 'Logo Imagem', + 'credit-max' => 'Máximo de crédito do cliente', + 'credit-max-value' => 'Valor Máximo de Crédito', + 'use-credit-max' => 'Use o máximo de crédito', + 'order-settings' => 'Order Settings', + 'orderNumber' => 'Order Number Settings', + 'order-number-prefix' => 'Order Number Prefix', + 'order-number-length' => 'Order Number Length', + 'order-number-suffix' => 'Order Number Suffix', + 'sandbox' => 'Sandbox' + ] + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/.gitkeep b/packages/Webkul/Admin/src/Resources/views/.gitkeep new file mode 100755 index 000000000..e69de29bb diff --git a/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php new file mode 100755 index 000000000..517c6a005 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php @@ -0,0 +1,76 @@ +@extends('admin::layouts.master') + +@section('page_title') + {{ __('admin::app.account.title') }} +@stop + +@section('content-wrapper') +
+
+ + +
+ +
+ @csrf() + + + + +
+
+ + + @{{ errors.first('name') }} +
+ +
+ + + @{{ errors.first('email') }} +
+
+
+ + +
+
+ + + @{{ errors.first('password') }} +
+ +
+ + + @{{ errors.first('password_confirmation') }} +
+
+
+ + +
+
+ + + @{{ errors.first('current_password') }} +
+
+
+
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php new file mode 100755 index 000000000..94477e2ca --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php @@ -0,0 +1,440 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.attributes.add-title') }} +@stop + +@section('content') +
+
+ + + +
+
+ @csrf() + + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.general.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.general.controls.before') !!} + +
+ + + @{{ errors.first('code') }} +
+ +
+ + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.general.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.general.after') !!} + + + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.label.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.label.controls.before') !!} + +
+ + + @{{ errors.first('admin_name') }} +
+ + @foreach (app('Webkul\Core\Repositories\LocaleRepository')->all() as $locale) + +
+ + +
+ + @endforeach + + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.label.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.label.after') !!} + + + +
+ {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.options.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.options.controls.before') !!} + + + + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.options.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.options.after') !!} +
+ + + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.validations.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.options.controls.before') !!} + +
+ + +
+ +
+ + +
+ +
+ + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.options.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.validations.after') !!} + + + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.configuration.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.configuration.controls.before') !!} + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.configuration.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.configuration.after') !!} + +
+
+ +
+
+@stop + +@push('scripts') + + + +@endpush diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/attributes/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/edit.blade.php new file mode 100755 index 000000000..7ed785d42 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/edit.blade.php @@ -0,0 +1,517 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.attributes.edit-title') }} +@stop + +@section('content') +
+
+ + + +
+
+ @csrf() + + + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.general.before', ['attribute' => $attribute]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.general.controls.before', ['attribute' => $attribute]) !!} + +
+ + + + @{{ errors.first('code') }} +
+ +
+ type ?> + + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.general.controls.after', ['attribute' => $attribute]) !!} +
+
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.general.after', ['attribute' => $attribute]) !!} + + + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.attributes.before', ['attribute' => $attribute]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.attributes.controls.before', ['attribute' => $attribute]) !!} + +
+ + + @{{ errors.first('admin_name') }} +
+ + @foreach (app('Webkul\Core\Repositories\LocaleRepository')->all() as $locale) + +
+ + +
+ + @endforeach + + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.attributes.controls.after', ['attribute' => $attribute]) !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.attributes.after', ['attribute' => $attribute]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.options.before', ['attribute' => $attribute]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.options.controls.before', ['attribute' => $attribute]) !!} + + + + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.options.controls.after', ['attribute' => $attribute]) !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.options.after', ['attribute' => $attribute]) !!} + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.validations.before', ['attribute' => $attribute]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.validations.controls.before', ['attribute' => $attribute]) !!} + +
+ + +
+ +
+ + + +
+ +
+ validation ?> + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.validations.controls.after', ['attribute' => $attribute]) !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.validations.after', ['attribute' => $attribute]) !!} + + + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.configuration.before', ['attribute' => $attribute]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.configuration.controls.before', ['attribute' => $attribute]) !!} + +
+ + + +
+ +
+ + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.configuration.controls.after', ['attribute' => $attribute]) !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.configuration.after', ['attribute' => $attribute]) !!} +
+
+ +
+
+@stop + +@push('scripts') + + + +@endpush diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/attributes/index.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/index.blade.php new file mode 100755 index 000000000..46cd37681 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/index.blade.php @@ -0,0 +1,31 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.attributes.title') }} +@stop + +@section('content') +
+ + + {!! view_render_event('bagisto.admin.catalog.attributes.list.before') !!} + +
+ + {!! app('Webkul\Admin\DataGrids\AttributeDataGrid')->render() !!} + +
+ + {!! view_render_event('bagisto.admin.catalog.attributes.list.after') !!} +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php new file mode 100755 index 000000000..39c5df661 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/categories/create.blade.php @@ -0,0 +1,256 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.categories.add-title') }} +@stop + +@section('content') +
+ +
+ + + +
+
+ @csrf() + + + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.general.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.general.controls.before') !!} + +
+ + + @{{ errors.first('name') }} +
+ +
+ + + @{{ errors.first('status') }} +
+ +
+ + + @{{ errors.first('position') }} +
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.general.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.general.after') !!} + + + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.description_images.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.description_images.controls.before') !!} + +
+ + + @{{ errors.first('display_mode') }} +
+ + + +
+
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.description_images.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.description_images.after') !!} + + + @if ($categories->count()) + + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.parent_category.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.parent_category.controls.before') !!} + + + + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.parent_category.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.parent_category.after') !!} + + @endif + + +
+ + + +
+ + + + @{{ errors.first('attributes[]') }} + +
+
+
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.seo.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.seo.controls.before') !!} + +
+ + +
+ +
+ + + @{{ errors.first('slug') }} +
+ +
+ + +
+ +
+ + +
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.seo.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.category.create_form_accordian.seo.after') !!} + +
+
+ +
+
+@stop + +@push('scripts') + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php new file mode 100755 index 000000000..d0d3b9e4c --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/categories/edit.blade.php @@ -0,0 +1,274 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.categories.edit-title') }} +@stop + +@section('content') +
+ get('locale') ?: app()->getLocale(); ?> + +
+ + + +
+
+ @csrf() + + + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.general.before', ['category' => $category]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.general.controls.before', ['category' => $category]) !!} + +
+ + + @{{ errors.first('{!!$locale!!}[name]') }} +
+ +
+ + + @{{ errors.first('status') }} +
+ +
+ + + @{{ errors.first('position') }} +
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.general.controls.after', ['category' => $category]) !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.general.after', ['category' => $category]) !!} + + + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.description_images.before', ['category' => $category]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.description_images.controls.before', ['category' => $category]) !!} + +
+ + + @{{ errors.first('display_mode') }} +
+ + + +
+
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.description_images.controls.after', ['category' => $category]) !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.description_images.after', ['category' => $category]) !!} + + @if ($categories->count()) + + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.parent_category.before', ['category' => $category]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.parent_category.controls.before', ['category' => $category]) !!} + + + + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.parent_category.controls.before', ['category' => $category]) !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.parent_category.after', ['category' => $category]) !!} + + @endif + + +
+ + filterableAttributes->pluck('id')->toArray() ?> + +
+ + + + @{{ errors.first('attributes[]') }} + +
+
+
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.seo.before', ['category' => $category]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.seo.controls.before', ['category' => $category]) !!} + +
+ + +
+ +
+ + + @{{ errors.first('{!!$locale!!}[slug]') }} +
+ +
+ + +
+ +
+ + +
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.seo.controls.after', ['category' => $category]) !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.seo.after', ['category' => $category]) !!} + +
+
+ +
+
+@stop + +@push('scripts') + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/categories/index.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/categories/index.blade.php new file mode 100755 index 000000000..fdd5002b9 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/categories/index.blade.php @@ -0,0 +1,32 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.categories.title') }} +@stop + +@section('content') +
+ + + {!! view_render_event('bagisto.admin.catalog.categories.list.before') !!} + +
+ + {!! app('Webkul\Admin\DataGrids\CategoryDataGrid')->render() !!} + +
+ + {!! view_render_event('bagisto.admin.catalog.categories.list.after') !!} + +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/families/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/families/create.blade.php new file mode 100755 index 000000000..95cb97674 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/families/create.blade.php @@ -0,0 +1,373 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.families.add-title') }} +@stop + +@section('content') +
+
+ + + +
+ +
+ @csrf() + + {!! view_render_event('bagisto.admin.catalog.family.create_form_accordian.general.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.family.create_form_accordian.general.controls.before') !!} + +
+ + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ + {!! view_render_event('bagisto.admin.catalog.family.create_form_accordian.general.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.family.create_form_accordian.general.after') !!} + + + {!! view_render_event('bagisto.admin.catalog.family.create_form_accordian.groups.before') !!} + + +
+ + + + {!! view_render_event('bagisto.admin.catalog.family.create_form_accordian.groups.controls.before') !!} + + + + {!! view_render_event('bagisto.admin.catalog.family.create_form_accordian.groups.controls.after') !!} +
+
+ + {!! view_render_event('bagisto.admin.catalog.family.create_form_accordian.groups.after') !!} + +
+
+ +
+
+ + +

{{ __('admin::app.catalog.families.add-group-title') }}

+ +
+ +
+
+ +@stop + +@push('scripts') + + + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/families/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/families/edit.blade.php new file mode 100755 index 000000000..a88e30f44 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/families/edit.blade.php @@ -0,0 +1,382 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.families.edit-title') }} +@stop + +@section('content') +
+
+ + + +
+ +
+ @csrf() + + + {!! view_render_event('bagisto.admin.catalog.family.edit_form_accordian.general.before', ['attributeFamily' => $attributeFamily]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.family.edit_form_accordian.general.controls.before', ['attributeFamily' => $attributeFamily]) !!} + +
+ + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ + {!! view_render_event('bagisto.admin.catalog.family.edit_form_accordian.general.controls.after', ['attributeFamily' => $attributeFamily]) !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.family.edit_form_accordian.general.after', ['attributeFamily' => $attributeFamily]) !!} + + + {!! view_render_event('bagisto.admin.catalog.family.edit_form_accordian.groups.before', ['attributeFamily' => $attributeFamily]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.family.edit_form_accordian.groups.controls.before', ['attributeFamily' => $attributeFamily]) !!} + + + + + + {!! view_render_event('bagisto.admin.catalog.family.edit_form_accordian.groups.controls.before', ['attributeFamily' => $attributeFamily]) !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.family.edit_form_accordian.groups.after', ['attributeFamily' => $attributeFamily]) !!} +
+
+ +
+
+ + +

{{ __('admin::app.catalog.families.add-group-title') }}

+ +
+ +
+
+@stop + +@push('scripts') + + + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/families/index.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/families/index.blade.php new file mode 100755 index 000000000..a377e19db --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/families/index.blade.php @@ -0,0 +1,32 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.families.title') }} +@stop + +@section('content') +
+ + + {!! view_render_event('bagisto.admin.catalog.families.list.before') !!} + +
+ + {!! app('Webkul\Admin\DataGrids\AttributeFamilyDataGrid')->render() !!} + +
+ + {!! view_render_event('bagisto.admin.catalog.families.list.after') !!} + +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/bundle-items.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/bundle-items.blade.php new file mode 100644 index 000000000..6aa2e9b32 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/bundle-items.blade.php @@ -0,0 +1,390 @@ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.bundle.before', ['product' => $product]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.bundle.controls.before', ['product' => $product]) !!} + + + + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.bundle.controls.after', ['product' => $product]) !!} + +
+
+ +@push('scripts') + @parent + + + + + + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/categories.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/categories.blade.php new file mode 100755 index 000000000..4565d27b8 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/categories.blade.php @@ -0,0 +1,19 @@ +@if ($categories->count()) + +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.categories.before', ['product' => $product]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.categories.controls.before', ['product' => $product]) !!} + + + + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.categories.controls.after', ['product' => $product]) !!} + +
+
+ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.categories.after', ['product' => $product]) !!} + +@endif \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/channels.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/channels.blade.php new file mode 100644 index 000000000..860997bac --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/channels.blade.php @@ -0,0 +1,27 @@ +@inject ('productFlatRepository', 'Webkul\Product\Repositories\ProductFlatRepository') + +findWhere([ + 'product_id' => $product->id + ])->pluck('channel')->unique()->toArray(); +?> + + +
+
+ + + + + + @{{ errors.first('channels[]') }} + +
+
+
\ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/downloadable.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/downloadable.blade.php new file mode 100644 index 000000000..4864c0689 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/downloadable.blade.php @@ -0,0 +1,458 @@ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.downloadable.before', ['product' => $product]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.downloadable.links.controls.before', ['product' => $product]) !!} + +
+
+ {{ __('admin::app.catalog.products.links') }} +
+ +
+ +
+
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.downloadable.links.controls.after', ['product' => $product]) !!} + + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.downloadable.samples.controls.before', ['product' => $product]) !!} + +
+
+ {{ __('admin::app.catalog.products.samples') }} +
+ +
+ +
+
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.downloadable.samples.controls.after', ['product' => $product]) !!} + +
+
+ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.downloadable.after', ['product' => $product]) !!} + +@push('scripts') + @parent + + + + + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/grouped-products.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/grouped-products.blade.php new file mode 100644 index 000000000..8a3908f3b --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/grouped-products.blade.php @@ -0,0 +1,219 @@ +@section('css') + @parent + +@stop + +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.grouped_products.before', ['product' => $product]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.grouped_products.controls.before', ['product' => $product]) !!} + + + + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.grouped_products.controls.after', ['product' => $product]) !!} + +
+
+ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.grouped_products.after', ['product' => $product]) !!} + +@push('scripts') + @parent + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/images.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/images.blade.php new file mode 100755 index 000000000..7d149adbd --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/images.blade.php @@ -0,0 +1,26 @@ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.images.before', ['product' => $product]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.images.controls.before', ['product' => $product]) !!} + +
+ + + + + + @php $count=1 @endphp + @foreach ($errors->get('images.*') as $key => $message) + @php echo str_replace($key, 'Image'.$count, $message[0]); $count++ @endphp + @endforeach + +
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.images.controls.after', ['product' => $product]) !!} + +
+
+ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.images.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/inventories.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/inventories.blade.php new file mode 100755 index 000000000..57efc5bb4 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/inventories.blade.php @@ -0,0 +1,37 @@ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.inventories.before', ['product' => $product]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.inventories.controls.before', ['product' => $product]) !!} + + @foreach ($inventorySources as $inventorySource) + inventories as $inventory) { + if ($inventory->inventory_source_id == $inventorySource->id) { + $qty = $inventory->qty; + break; + } + } + + $qty = old('inventories[' . $inventorySource->id . ']') ?: $qty; + + ?> +
+ + + + + @{{ errors.first('inventories[{!! $inventorySource->id !!}]') }} +
+ + @endforeach + + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.inventories.controls.after', ['product' => $product]) !!} + +
+
+ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.inventories.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/product-links.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/product-links.blade.php new file mode 100755 index 000000000..7b88b3240 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/product-links.blade.php @@ -0,0 +1,186 @@ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.product_links.before', ['product' => $product]) !!} + + +
+ + + +
+
+ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.product_links.before', ['product' => $product]) !!} + +@push('scripts') + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/variations.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/variations.blade.php new file mode 100755 index 000000000..1ef6348d4 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/variations.blade.php @@ -0,0 +1,359 @@ +@section('css') + @parent + +@stop + +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.variations.before', ['product' => $product]) !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.variations.controls.before', ['product' => $product]) !!} + + + + + + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.variations.controls.after', ['product' => $product]) !!} + +
+
+ +{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.variations.after', ['product' => $product]) !!} + + +

{{ __('admin::app.catalog.products.add-variant-title') }}

+ +
+ +
+
+ +@push('scripts') + @parent + + + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php new file mode 100755 index 000000000..7308fd5c1 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php @@ -0,0 +1,171 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.products.add-title') }} +@stop + +@section('css') + +@stop + +@section('content') +
+
+ + + +
+ @csrf() + + input('family') ?> + + {!! view_render_event('bagisto.admin.catalog.product.create_form_accordian.general.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.product.create_form_accordian.general.controls.before') !!} + +
+ + + + @if ($familyId) + + @endif + @{{ errors.first('type') }} +
+ +
+ + + + @if ($familyId) + + @endif + @{{ errors.first('attribute_family_id') }} +
+ +
+ + + @{{ errors.first('sku') }} +
+ + {!! view_render_event('bagisto.admin.catalog.product.create_form_accordian.general.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.product.create_form_accordian.general.after') !!} + + @if ($familyId) + + {!! view_render_event('bagisto.admin.catalog.product.create_form_accordian.configurable_attributes.before') !!} + + +
+ + {!! view_render_event('bagisto.admin.catalog.product.create_form_accordian.configurable_attributes.controls.before') !!} + +
+ + + + + + + + + + + @foreach ($configurableFamily->configurable_attributes as $attribute) + + + + + + @endforeach + + +
{{ __('admin::app.catalog.products.attribute-header') }}{{ __('admin::app.catalog.products.attribute-option-header') }}
+ {{ $attribute->admin_name }} + + @foreach ($attribute->options as $option) + + + {{ $option->admin_name }} + + + + @endforeach + + +
+
+ + {!! view_render_event('bagisto.admin.catalog.product.create_form_accordian.configurable_attributes.controls.after') !!} + +
+
+ + {!! view_render_event('bagisto.admin.catalog.product.create_form_accordian.configurable_attributes.after') !!} + @endif + +
+ +
+
+@stop + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php new file mode 100755 index 000000000..e76ff2035 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php @@ -0,0 +1,197 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.products.edit-title') }} +@stop + +@section('content') +
+ get('locale') ?: app()->getLocale(); ?> + get('channel') ?: core()->getDefaultChannelCode(); ?> + + {!! view_render_event('bagisto.admin.catalog.product.edit.before', ['product' => $product]) !!} + +
+ + + +
+ @csrf() + + + + @foreach ($product->attribute_family->attribute_groups as $index => $attributeGroup) + getEditableAttributes($attributeGroup); ?> + + @if (count($customAttributes)) + + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.' . $attributeGroup->name . '.before', ['product' => $product]) !!} + + +
+ {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.' . $attributeGroup->name . '.controls.before', ['product' => $product]) !!} + + @foreach ($customAttributes as $attribute) + + is_required) { + array_push($validations, 'required'); + } + + if ($attribute->type == 'price') { + array_push($validations, 'decimal'); + } + + array_push($validations, $attribute->validation); + + $validations = implode('|', array_filter($validations)); + ?> + + @if (view()->exists($typeView = 'admin::catalog.products.field-types.' . $attribute->type)) + +
type == 'multiselect') :class="[errors.has('{{ $attribute->code }}[]') ? 'has-error' : '']" + @else :class="[errors.has('{{ $attribute->code }}') ? 'has-error' : '']" @endif> + + + + @include ($typeView) + + type == 'multiselect') v-if="errors.has('{{ $attribute->code }}[]')" + @else v-if="errors.has('{{ $attribute->code }}')" @endif> + @if ($attribute->type == 'multiselect') + @{{ errors.first('{!! $attribute->code !!}[]') }} + @else + @{{ errors.first('{!! $attribute->code !!}') }} + @endif + +
+ + @endif + + @endforeach + + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.' . $attributeGroup->name . '.controls.after', ['product' => $product]) !!} +
+
+ + {!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.' . $attributeGroup->name . '.after', ['product' => $product]) !!} + + @endif + + @endforeach + + {!! view_render_event( + 'bagisto.admin.catalog.product.edit_form_accordian.additional_views.before', + ['product' => $product]) + !!} + @foreach ($product->getTypeInstance()->getAdditionalViews() as $view) + + @include ($view) + + @endforeach + + {!! view_render_event( + 'bagisto.admin.catalog.product.edit_form_accordian.additional_views.after', + ['product' => $product]) + !!} +
+ +
+ + {!! view_render_event('bagisto.admin.catalog.product.edit.after', ['product' => $product]) !!} +
+@stop + +@push('scripts') + + + +@endpush diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/boolean.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/boolean.blade.php new file mode 100755 index 000000000..f8bee9cc3 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/boolean.blade.php @@ -0,0 +1,6 @@ +code) ?: $product[$attribute->code] ?> + + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/checkbox.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/checkbox.blade.php new file mode 100644 index 000000000..e1db5d2ed --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/checkbox.blade.php @@ -0,0 +1,13 @@ +
+ + @foreach ($attribute->options as $option) + + id, explode(',', $product[$attribute->code])) ? 'checked' : ''}}> + + + + {{ $option->admin_name }} + + @endforeach + +
\ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/date.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/date.blade.php new file mode 100755 index 000000000..abec746eb --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/date.blade.php @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/datetime.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/datetime.blade.php new file mode 100755 index 000000000..1b822d36c --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/datetime.blade.php @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/file.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/file.blade.php new file mode 100644 index 000000000..bb8b0223d --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/file.blade.php @@ -0,0 +1,18 @@ +@if ($product[$attribute->code]) + + + +@endif + + + +@if ($product[$attribute->code]) +
+ + + + + {{ __('admin::app.configuration.delete') }} + +
+@endif \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/image.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/image.blade.php new file mode 100644 index 000000000..dd1a912a4 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/image.blade.php @@ -0,0 +1,18 @@ +@if ($product[$attribute->code]) + + + +@endif + + + +@if ($product[$attribute->code]) +
+ + + + + {{ __('admin::app.configuration.delete') }} + +
+@endif \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/multiselect.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/multiselect.blade.php new file mode 100755 index 000000000..9df19e9e2 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/multiselect.blade.php @@ -0,0 +1,9 @@ + diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/price.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/price.blade.php new file mode 100755 index 000000000..44ec08735 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/price.blade.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/select.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/select.blade.php new file mode 100755 index 000000000..1ae3a82da --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/select.blade.php @@ -0,0 +1,25 @@ + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/text.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/text.blade.php new file mode 100755 index 000000000..c6c9520eb --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/text.blade.php @@ -0,0 +1 @@ +code, ['sku', 'url_key']) ? 'v-slugify' : '' }}/> \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/textarea.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/textarea.blade.php new file mode 100755 index 000000000..872f31628 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/textarea.blade.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/index.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/index.blade.php new file mode 100755 index 000000000..60c77b361 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/index.blade.php @@ -0,0 +1,49 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.catalog.products.title') }} +@stop + +@section('content') +
+ + + {!! view_render_event('bagisto.admin.catalog.products.list.before') !!} + +
+ @inject('products', 'Webkul\Admin\DataGrids\ProductDataGrid') + {!! $products->render() !!} +
+ + {!! view_render_event('bagisto.admin.catalog.products.list.after') !!} + +
+ + +

{{ __('admin::app.export.download') }}

+
+ +
+
+@stop + +@push('scripts') + @include('admin::export.export', ['gridName' => $products]) +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/cms/create.blade.php b/packages/Webkul/Admin/src/Resources/views/cms/create.blade.php new file mode 100644 index 000000000..cbe5f131c --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/cms/create.blade.php @@ -0,0 +1,126 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.cms.pages.add-title') }} +@stop + +@section('content') +
+
+ + + +
+ +
+ @csrf() + + {!! view_render_event('bagisto.admin.cms.pages.create_form_accordian.general.before') !!} + + +
+
+ + + + + @{{ errors.first('page_title') }} +
+ + @inject('channels', 'Webkul\Core\Repositories\ChannelRepository') + +
+ + + + + @{{ errors.first('channels[]') }} +
+ +
+ + + + + @{{ errors.first('html_content') }} +
+
+
+ + {!! view_render_event('bagisto.admin.cms.pages.create_form_accordian.general.after') !!} + + + {!! view_render_event('bagisto.admin.cms.pages.create_form_accordian.seo.before') !!} + + +
+
+ + + +
+ +
+ + + + + @{{ errors.first('url_key') }} +
+ +
+ + + +
+ +
+ + + +
+
+
+ + {!! view_render_event('bagisto.admin.cms.pages.create_form_accordian.seo.after') !!} +
+
+
+
+@stop + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/cms/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/cms/edit.blade.php new file mode 100644 index 000000000..bf35f6b7a --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/cms/edit.blade.php @@ -0,0 +1,138 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.cms.pages.edit-title') }} +@stop + +@section('content') +
+ get('locale') ?: app()->getLocale(); ?> + +
+ + + +
+ +
+ @csrf() + +
+
+ + + + + @{{ errors.first('{!!$locale!!}[page_title]') }} +
+ +
+ + + channels->pluck('id')->toArray() ?> + + + + @{{ errors.first('channels[]') }} +
+ +
+ + + + + @{{ errors.first('{!!$locale!!}[html_content]') }} +
+
+
+ + +
+
+ + + +
+ +
+ + + + + @{{ errors.first('{!!$locale!!}[url_key]') }} +
+ +
+ + + +
+ +
+ + + +
+
+
+
+
+
+
+@stop + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/cms/index.blade.php b/packages/Webkul/Admin/src/Resources/views/cms/index.blade.php new file mode 100644 index 000000000..9aefe943c --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/cms/index.blade.php @@ -0,0 +1,46 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.cms.pages.title') }} +@stop + +@section('content') + +
+ + +
+ @inject('cmsGrid', 'Webkul\Admin\DataGrids\CMSPageDataGrid') + + {!! $cmsGrid->render() !!} +
+
+ + +

{{ __('admin::app.export.download') }}

+
+ +
+
+@stop + +@push('scripts') + @include('admin::export.export', ['gridName' => $cmsGrid]) +@endpush + diff --git a/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php b/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php new file mode 100755 index 000000000..0888522b7 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php @@ -0,0 +1,491 @@ +$method(); + } + + $channel_locale = []; + + if (isset($field['channel_based']) && $field['channel_based']) + { + array_push($channel_locale, $channel); + } + + if (isset($field['locale_based']) && $field['locale_based']) { + array_push($channel_locale, $locale); + } +?> + + @if ($field['type'] == 'depends') + + $result) { + $data['title'] = $result; + $data['value'] = $key; + $options[$i] = $data; + $i++; + } + $field['options'] = $options; + } + + if (! isset($field['options'])) { + $field['options'] = ''; + } + + $selectedOption = core()->getConfigData($name) ?? ''; + ?> + + + + @else + +
+ + + + @if ($field['type'] == 'text') + + + + @elseif ($field['type'] == 'password') + + + + @elseif ($field['type'] == 'color') + + + + + @elseif ($field['type'] == 'textarea') + + + + @elseif ($field['type'] == 'select') + + + + @elseif ($field['type'] == 'multiselect') + + + + @elseif ($field['type'] == 'country') + + getConfigData($name) ?? ''; + ?> + + + + @elseif ($field['type'] == 'state') + + getConfigData($name) ?? ''; + ?> + + + + @elseif ($field['type'] == 'boolean') + + + + @elseif ($field['type'] == 'image') + + getConfigData($name)); + $result = core()->getConfigData($name); + ?> + + @if ($result) + + + + @endif + + + + @if ($result) +
+ + + + + {{ __('admin::app.configuration.delete') }} + +
+ @endif + + @elseif ($field['type'] == 'file') + + getConfigData($name); + $src = explode("/", $result); + $path = end($src); + ?> + + @if ($result) + + + + @endif + + + + @if ($result) +
+ + + + + {{ __('admin::app.configuration.delete') }} + +
+ @endif + + @endif + + @if (isset($field['info'])) + {{ trans($field['info']) }} + @endif + + + @if ($field['type'] == 'multiselect') + @{{ errors.first('{!! $firstField !!}[{!! $secondField !!}][{!! $thirdField !!}][{!! $field['name'] !!}][]') }} + @else + @{{ errors.first('{!! $firstField !!}[{!! $secondField !!}][{!! $thirdField !!}][{!! $field['name'] !!}]') }} + @endif + + +
+ + @endif + +@push('scripts') + + + + + + + + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/configuration/index.blade.php b/packages/Webkul/Admin/src/Resources/views/configuration/index.blade.php new file mode 100755 index 000000000..d31e62144 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/configuration/index.blade.php @@ -0,0 +1,95 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.configuration.title') }} +@stop + +@section('content') +
+ get('locale') ?: app()->getLocale(); ?> + get('channel') ?: core()->getDefaultChannelCode(); ?> + +
+ + + +
+
+ @csrf() + + @if ($groups = \Illuminate\Support\Arr::get($config->items, request()->route('slug') . '.children.' . request()->route('slug2') . '.children')) + + @foreach ($groups as $key => $item) + + +
+ + @foreach ($item['fields'] as $field) + + @include ('admin::configuration.field-type', ['field' => $field]) + + @endforeach + +
+
+ + @endforeach + + @endif + +
+
+ +
+
+@stop + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/addresses/create.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/addresses/create.blade.php new file mode 100644 index 000000000..f327a4e48 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/addresses/create.blade.php @@ -0,0 +1,91 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.addresses.create-title') }} +@stop + + +@section('content-wrapper') + +
+ {!! view_render_event('admin.customer.addresses.create.before') !!} + +
+ + +
+
+ @csrf() + + + + +
+ +
+ + + @{{ errors.first('address1[]') }} +
+ + @if (core()->getConfigData('customer.settings.address.street_lines') && core()->getConfigData('customer.settings.address.street_lines') > 1) +
+ @for ($i = 1; $i < core()->getConfigData('customer.settings.address.street_lines'); $i++) + + @endfor +
+ @endif + +
+ + + @{{ errors.first('city') }} +
+ + @include ('shop::customers.account.address.country-state', ['countryCode' => old('country') ?? '', 'stateCode' => old('state') ?? '']) + +
+ + + @{{ errors.first('postcode') }} +
+ +
+ + + @{{ errors.first('phone') }} +
+ +
+ + + + + {{ __('admin::app.customers.addresses.default-address') }} + +
+
+
+ + +
+
+ + + {!! view_render_event('admin.customer.addresses.create.after') !!} + +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/addresses/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/addresses/edit.blade.php new file mode 100644 index 000000000..4cc97b69f --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/addresses/edit.blade.php @@ -0,0 +1,88 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.addresses.edit-title') }} +@stop + + +@section('content-wrapper') + +
+ {!! view_render_event('admin.customer.addresses.edit.before', ['address' => $address]) !!} + +
+ + +
+ @csrf() + + + + + + +
+ + address1); ?> + +
+ + + @{{ errors.first('address1[]') }} +
+ + @if (core()->getConfigData('customer.settings.address.street_lines') && core()->getConfigData('customer.settings.address.street_lines') > 1) +
+ @for ($i = 1; $i < core()->getConfigData('customer.settings.address.street_lines'); $i++) + + @endfor +
+ @endif + +
+ + + @{{ errors.first('city') }} +
+ + @include ('shop::customers.account.address.country-state', ['countryCode' => old('country') ?? $address->country, 'stateCode' => old('state') ?? $address->state]) + +
+ + + @{{ errors.first('postcode') }} +
+ +
+ + + @{{ errors.first('phone') }} +
+ +
+ + default_address ? 'checked' : '' }} > + + + {{ __('admin::app.customers.addresses.default-address') }} + +
+
+
+ +
+ + + {!! view_render_event('admin.customer.addresses.edit.after', ['address' => $address]) !!} +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/addresses/index.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/addresses/index.blade.php new file mode 100644 index 000000000..45e677716 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/addresses/index.blade.php @@ -0,0 +1,31 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.addresses.title', ['customer_name' => $customer->first_name . ' ' . $customer->last_name]) }} +@stop + +@section('content') +
+ + + {!! view_render_event('bagisto.admin.customer.addresses.list.before') !!} + +
+ + {!! app('Webkul\Admin\DataGrids\AddressDataGrid')->render() !!} + +
+ + {!! view_render_event('bagisto.admin.customer.addresses.list.after') !!} +
+@stop diff --git a/packages/Webkul/Admin/src/Resources/views/customers/addresses/orders/index.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/addresses/orders/index.blade.php new file mode 100644 index 000000000..fae339a03 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/addresses/orders/index.blade.php @@ -0,0 +1,35 @@ +@extends('address::admin.layouts.content') + +@section('page_title') + {{ __('address::app.admin.addresses.title-orders', ['customer_name' => $customer->first_name . ' ' . $customer->last_name]) }} +@stop + +@section('content') + +
+ + +
+ + + + {!! app('Webkul\Address\DataGrids\Admin\OrderDataGrid')->render() !!} + +
+
+ +@stop diff --git a/packages/Webkul/Admin/src/Resources/views/customers/confirm-password.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/confirm-password.blade.php new file mode 100755 index 000000000..125112c81 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/confirm-password.blade.php @@ -0,0 +1,37 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.customers.title') }} +@stop + +@section('content') +
+ + +
+
+ @csrf +
+ + + + + + @{{ errors.first('password') }} + +
+ + +
+
+
+@endsection diff --git a/packages/Webkul/Admin/src/Resources/views/customers/country-state.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/country-state.blade.php new file mode 100755 index 000000000..8faa86e15 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/country-state.blade.php @@ -0,0 +1,78 @@ + + +@push('scripts') + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/create.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/create.blade.php new file mode 100755 index 000000000..30f976987 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/create.blade.php @@ -0,0 +1,85 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.customers.add-title') }} +@stop + +@section('content') +
+
+ + + +
+ +
+ @csrf() + +
+ + + @{{ errors.first('first_name') }} +
+ +
+ + + @{{ errors.first('last_name') }} +
+ +
+ + + @{{ errors.first('email') }} +
+ +
+ + + @{{ errors.first('gender') }} +
+ +
+ + + @{{ errors.first('date_of_birth') }} +
+ +
+ + + @{{ errors.first('phone') }} +
+ +
+ + +
+
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/edit.blade.php new file mode 100755 index 000000000..5d396d1d0 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/edit.blade.php @@ -0,0 +1,114 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.customers.edit-title') }} +@stop + +@section('content') +
+ {!! view_render_event('bagisto.admin.customer.edit.before', ['customer' => $customer]) !!} + +
+ + + +
+ +
+ @csrf() + + + + +
+ +
+ + + @{{ errors.first('first_name') }} +
+ +
+ + + @{{ errors.first('last_name') }} +
+ +
+ + + @{{ errors.first('email') }} +
+ +
+ + + @{{ errors.first('gender') }} +
+ +
+ + + @{{ errors.first('status') }} +
+ +
+ + + @{{ errors.first('date_of_birth') }} +
+ +
+ + + @{{ errors.first('phone') }} +
+ +
+ + + @if (! is_null($customer->customer_group_id)) + group->id ?> + @else + + @endif + + +
+
+
+ +
+
+
+ + {!! view_render_event('bagisto.admin.customer.edit.after', ['customer' => $customer]) !!} +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/groups/create.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/groups/create.blade.php new file mode 100755 index 000000000..3a6973457 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/groups/create.blade.php @@ -0,0 +1,51 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.groups.add-title') }} +@stop + +@section('content') +
+
+ + + +
+
+ @csrf() + + +
+ + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ +
+
+ +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/groups/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/groups/edit.blade.php new file mode 100755 index 000000000..313c98fa2 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/groups/edit.blade.php @@ -0,0 +1,52 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.groups.edit-title') }} +@stop + +@section('content') +
+
+ + + +
+ +
+ @csrf() + + + +
+ + + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/groups/index.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/groups/index.blade.php new file mode 100755 index 000000000..a383ff6cd --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/groups/index.blade.php @@ -0,0 +1,27 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.groups.title') }} +@stop + +@section('content') + +
+ + +
+ @inject('customerGroup','Webkul\Admin\DataGrids\CustomerGroupDataGrid') + {!! $customerGroup->render() !!} +
+
+ +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/index.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/index.blade.php new file mode 100755 index 000000000..675790a7a --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/index.blade.php @@ -0,0 +1,47 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.customers.title') }} +@stop + +@section('content') + +
+ + +
+ @inject('customerGrid','Webkul\Admin\DataGrids\CustomerDataGrid') + + {!! $customerGrid->render() !!} +
+
+ + +

{{ __('admin::app.export.download') }}

+
+ +
+
+ +@stop + +@push('scripts') + @include('admin::export.export', ['gridName' => $customerGrid]) +@endpush + diff --git a/packages/Webkul/Admin/src/Resources/views/customers/note.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/note.blade.php new file mode 100644 index 000000000..61b58b3f9 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/note.blade.php @@ -0,0 +1,45 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.note.title') }} +@stop + +@section('content') +
+
+ + +
+
+ @csrf() + + + + + +
+ + + + + @{{ errors.first('notes') }} +
+
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/reviews/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/reviews/edit.blade.php new file mode 100755 index 000000000..882e98368 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/reviews/edit.blade.php @@ -0,0 +1,80 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.reviews.edit-title') }} +@stop + +@section('content') +
+
+ + + +
+ +
+ @csrf() + + + + +
+ +
+ + +
+ +
+ +
+ @for ($i = 1; $i <= $review->rating; $i++) + + @endfor +
+
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/reviews/index.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/reviews/index.blade.php new file mode 100755 index 000000000..b05f5f819 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/reviews/index.blade.php @@ -0,0 +1,27 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.reviews.title') }} +@stop + +@section('content') + +
+ + +
+ @inject('review','Webkul\Admin\DataGrids\CustomerReviewDataGrid') + {!! $review->render() !!} +
+
+ +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/subscribers/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/subscribers/edit.blade.php new file mode 100755 index 000000000..16e1cfbc2 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/subscribers/edit.blade.php @@ -0,0 +1,47 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.subscribers.title-edit') }} +@stop + +@section('content') + +
+
+ + @csrf + @method('PUT') + +
+ + + @{{ errors.first('email') }} +
+ +
+ + + + + @{{ errors.first('is_subscribed') }} +
+
+
+@endsection \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/customers/subscribers/index.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/subscribers/index.blade.php new file mode 100755 index 000000000..a8863220f --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/customers/subscribers/index.blade.php @@ -0,0 +1,28 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.customers.subscribers.title') }} +@stop + +@section('content') + + +
+ + +
+ @inject('subscribers','Webkul\Admin\DataGrids\NewsLetterDataGrid') + {!! $subscribers->render() !!} +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php b/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php new file mode 100755 index 000000000..8de719884 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php @@ -0,0 +1,462 @@ +@extends('admin::layouts.master') + +@section('page_title') + {{ __('admin::app.dashboard.title') }} +@stop + +@section('content-wrapper') + +
+ + +
+ +
+ +
+
+ {{ __('admin::app.dashboard.total-customers') }} +
+ +
+ {{ $statistics['total_customers']['current'] }} + + + @if ($statistics['total_customers']['progress'] < 0) + + {{ __('admin::app.dashboard.decreased', [ + 'progress' => -number_format($statistics['total_customers']['progress'], 1) + ]) + }} + @else + + {{ __('admin::app.dashboard.increased', [ + 'progress' => number_format($statistics['total_customers']['progress'], 1) + ]) + }} + @endif + +
+
+ +
+
+ {{ __('admin::app.dashboard.total-orders') }} +
+ +
+ {{ $statistics['total_orders']['current'] }} + + + @if ($statistics['total_orders']['progress'] < 0) + + {{ __('admin::app.dashboard.decreased', [ + 'progress' => -number_format($statistics['total_orders']['progress'], 1) + ]) + }} + @else + + {{ __('admin::app.dashboard.increased', [ + 'progress' => number_format($statistics['total_orders']['progress'], 1) + ]) + }} + @endif + +
+
+ +
+
+ {{ __('admin::app.dashboard.total-sale') }} +
+ +
+ {{ core()->formatBasePrice($statistics['total_sales']['current']) }} + + + @if ($statistics['total_sales']['progress'] < 0) + + {{ __('admin::app.dashboard.decreased', [ + 'progress' => -number_format($statistics['total_sales']['progress'], 1) + ]) + }} + @else + + {{ __('admin::app.dashboard.increased', [ + 'progress' => number_format($statistics['total_sales']['progress'], 1) + ]) + }} + @endif + +
+
+ +
+
+ {{ __('admin::app.dashboard.average-sale') }} +
+ +
+ {{ core()->formatBasePrice($statistics['avg_sales']['current']) }} + + + @if ($statistics['avg_sales']['progress'] < 0) + + {{ __('admin::app.dashboard.decreased', [ + 'progress' => -number_format($statistics['avg_sales']['progress'], 1) + ]) + }} + @else + + {{ __('admin::app.dashboard.increased', [ + 'progress' => number_format($statistics['avg_sales']['progress'], 1) + ]) + }} + @endif + +
+
+ +
+ +
+ +
+
+
+ {{ __('admin::app.dashboard.sales') }} +
+ +
+ + + +
+
+
+ +
+
+
+ {{ __('admin::app.dashboard.top-performing-categories') }} +
+ +
+ + + @if (! count($statistics['top_selling_categories'])) + +
+ + +

{{ __('admin::app.common.no-result-found') }}

+ +
+ + @endif +
+
+
+ +
+ + @inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') + +
+
+
+ {{ __('admin::app.dashboard.top-selling-products') }} +
+ +
+ + + @if (! count($statistics['top_selling_products'])) + +
+ + +

{{ __('admin::app.common.no-result-found') }}

+ +
+ + @endif +
+
+ +
+
+ {{ __('admin::app.dashboard.customer-with-most-sales') }} +
+ +
+ + + @if (! count($statistics['customer_with_most_sales'])) + +
+ + +

{{ __('admin::app.common.no-result-found') }}

+ +
+ + @endif +
+ +
+ +
+
+ {{ __('admin::app.dashboard.stock-threshold') }} +
+ +
+ + + @if (! count($statistics['stock_threshold'])) + +
+ + +

{{ __('admin::app.common.no-result-found') }}

+ +
+ + @endif +
+ +
+
+
+
+ +@stop + +@push('scripts') + + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/errors/401.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/401.blade.php new file mode 100755 index 000000000..4caa888dd --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/errors/401.blade.php @@ -0,0 +1,38 @@ +@extends(auth()->guard('admin')->check() ? 'admin::layouts.master' : 'shop::layouts.master') + +@section('page_title') + {{ __('admin::app.error.401.page-title') }} +@stop + +@section('content-wrapper') +
+ +
+ +
+ +
+ {{ __('admin::app.error.401.name') }} +
+ +
+ {{ __('admin::app.error.401.title') }} +
+ +
+ {{ __('admin::app.error.401.message') }} +
+ + + {{ __('admin::app.error.go-to-home') }} + + +
+ +
+ +
+ +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/errors/403.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/403.blade.php new file mode 100755 index 000000000..afcc2db08 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/errors/403.blade.php @@ -0,0 +1,38 @@ +@extends(auth()->guard('admin')->check() ? 'admin::layouts.master' : 'shop::layouts.master') + +@section('page_title') + {{ __('admin::app.error.403.page-title') }} +@stop + +@section('content-wrapper') +
+ +
+ +
+ +
+ {{ __('admin::app.error.403.name') }} +
+ +
+ {{ __('admin::app.error.403.title') }} +
+ +
+ {{ __('admin::app.error.403.message') }} +
+ + + {{ __('admin::app.error.go-to-home') }} + + +
+ +
+ +
+ +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/errors/404.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/404.blade.php new file mode 100755 index 000000000..1a5de22e6 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/errors/404.blade.php @@ -0,0 +1,38 @@ +@extends(auth()->guard('admin')->check() ? 'admin::layouts.master' : 'shop::layouts.master') + +@section('page_title') + {{ __('admin::app.error.404.page-title') }} +@stop + +@section('content-wrapper') +
+ +
+ +
+ +
+ {{ __('admin::app.error.404.name') }} +
+ +
+ {{ __('admin::app.error.404.title') }} +
+ +
+ {{ __('admin::app.error.404.message') }} +
+ + + {{ __('admin::app.error.go-to-home') }} + + +
+ +
+ +
+ +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/errors/500.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/500.blade.php new file mode 100755 index 000000000..0207187b7 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/errors/500.blade.php @@ -0,0 +1,40 @@ +@extends(auth()->guard('admin')->check() ? 'admin::layouts.master' : 'shop::layouts.master') + +@section('page_title') + {{ __('admin::app.error.500.page-title') }} +@stop + +@section('content-wrapper') + +
+ +
+ +
+ +
+ {{ __('admin::app.error.500.name') }} +
+ +
+ {{ __('admin::app.error.500.title') }} +
+ +
+ {{ __('admin::app.error.500.message') }} +
+ + + {{ __('admin::app.error.go-to-home') }} + + +
+ +
+ +
+ +
+ +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/errors/503.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/503.blade.php new file mode 100644 index 000000000..8161f623a --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/errors/503.blade.php @@ -0,0 +1,32 @@ + + + + + + + Document + + + +
+ +
+ +
+ +
+ {{ __('admin::app.error.in-maitainace') }} +
+ +
+ {{ __('admin::app.error.right-back') }} +
+
+ +
+ +
+
+ + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/export/export.blade.php b/packages/Webkul/Admin/src/Resources/views/export/export.blade.php new file mode 100644 index 000000000..56e8aed08 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/export/export.blade.php @@ -0,0 +1,42 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/export/temp.blade.php b/packages/Webkul/Admin/src/Resources/views/export/temp.blade.php new file mode 100755 index 000000000..077aef980 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/export/temp.blade.php @@ -0,0 +1,18 @@ + + + + @foreach ($columns as $key => $value) + + @endforeach + + + + @foreach ($records as $record) + + @foreach($record as $column => $value) + + @endforeach + + @endforeach + +
{{ $value }}
{{ $value }}
\ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/layouts/anonymous-master.blade.php b/packages/Webkul/Admin/src/Resources/views/layouts/anonymous-master.blade.php new file mode 100755 index 000000000..0357d8f43 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/layouts/anonymous-master.blade.php @@ -0,0 +1,137 @@ + + + + @yield('page_title') + + + + + + + + + + + + + @yield('css') + + {!! view_render_event('bagisto.admin.layout.head') !!} + + getCurrentLocale()->direction == 'rtl') class="rtl" @endif style="scroll-behavior: smooth;"> +
+ + + +
+ +
+ + + + {!! view_render_event('bagisto.admin.layout.content.before') !!} + + @yield('content') + + {!! view_render_event('bagisto.admin.layout.content.after') !!} + + @if (core()->getConfigData('general.content.footer.footer_toggle')) + + @endif +
+ +
+ +
+ + + + + + + @stack('javascript') + + {!! view_render_event('bagisto.admin.layout.body.after') !!} + + + + diff --git a/packages/Webkul/Admin/src/Resources/views/layouts/content.blade.php b/packages/Webkul/Admin/src/Resources/views/layouts/content.blade.php new file mode 100755 index 000000000..473031dd5 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/layouts/content.blade.php @@ -0,0 +1,17 @@ +@extends('admin::layouts.master') + +@section('content-wrapper') +
+ + @include ('admin::layouts.nav-aside') + +
+ + @include ('admin::layouts.tabs') + + @yield('content') + +
+ +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/layouts/master.blade.php b/packages/Webkul/Admin/src/Resources/views/layouts/master.blade.php new file mode 100755 index 000000000..436b6855a --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/layouts/master.blade.php @@ -0,0 +1,155 @@ + + + + @yield('page_title') + + + + + + + + + + @yield('head') + + @yield('css') + + {!! view_render_event('bagisto.admin.layout.head') !!} + + + + getCurrentLocale()->direction == 'rtl') class="rtl" @endif style="scroll-behavior: smooth;"> + {!! view_render_event('bagisto.admin.layout.body.before') !!} + +
+ + + + {!! view_render_event('bagisto.admin.layout.nav-top.before') !!} + + @include ('admin::layouts.nav-top') + + {!! view_render_event('bagisto.admin.layout.nav-top.after') !!} + + + {!! view_render_event('bagisto.admin.layout.nav-left.before') !!} + + @include ('admin::layouts.nav-left') + + {!! view_render_event('bagisto.admin.layout.nav-left.after') !!} + + +
+ + {!! view_render_event('bagisto.admin.layout.content.before') !!} + + @yield('content-wrapper') + + {!! view_render_event('bagisto.admin.layout.content.after') !!} + +
+ +
+ + + + + + + @stack('scripts') + + {!! view_render_event('bagisto.admin.layout.body.after') !!} + + + + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/layouts/nav-aside.blade.php b/packages/Webkul/Admin/src/Resources/views/layouts/nav-aside.blade.php new file mode 100755 index 000000000..d3f9e1e7c --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/layouts/nav-aside.blade.php @@ -0,0 +1,37 @@ +
+ + + +
diff --git a/packages/Webkul/Admin/src/Resources/views/layouts/nav-left.blade.php b/packages/Webkul/Admin/src/Resources/views/layouts/nav-left.blade.php new file mode 100755 index 000000000..cb7ebbc30 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/layouts/nav-left.blade.php @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/layouts/nav-top.blade.php b/packages/Webkul/Admin/src/Resources/views/layouts/nav-top.blade.php new file mode 100755 index 000000000..12369b3b1 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/layouts/nav-top.blade.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/layouts/tabs.blade.php b/packages/Webkul/Admin/src/Resources/views/layouts/tabs.blade.php new file mode 100755 index 000000000..06601d2fe --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/layouts/tabs.blade.php @@ -0,0 +1,46 @@ +
+ @if (request()->route()->getName() != 'admin.configuration.index') + + currentKey); ?> + + + @if ($items = \Illuminate\Support\Arr::get($menu->items, implode('.children.', array_slice($keys, 0, 2)) . '.children')) + +
    + + @foreach (\Illuminate\Support\Arr::get($menu->items, implode('.children.', array_slice($keys, 0, 2)) . '.children') as $item) + +
  • + + {{ trans($item['name']) }} + +
  • + + @endforeach + +
+ + @endif + + @else + + @if ($items = \Illuminate\Support\Arr::get($config->items, request()->route('slug') . '.children')) + + + + @endif + + @endif +
\ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rules/create.blade.php b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rules/create.blade.php new file mode 100644 index 000000000..6ced9889a --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rules/create.blade.php @@ -0,0 +1,614 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.promotions.cart-rules.add-title') }} +@stop + +@section('content') +
+ + + +
+@stop + +@push('scripts') + @parent + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rules/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rules/edit.blade.php new file mode 100644 index 000000000..cdc051a59 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rules/edit.blade.php @@ -0,0 +1,753 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.promotions.cart-rules.edit-title') }} +@stop + +@section('content') +
+ + + +
+@stop + +@push('scripts') + @parent + + + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/promotions/cart-rules/index.blade.php b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rules/index.blade.php new file mode 100644 index 000000000..d07bbfaef --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/promotions/cart-rules/index.blade.php @@ -0,0 +1,27 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.promotions.cart-rules.title') }} +@stop + +@section('content') + +
+ + +
+ @inject('cartRuleGrid','Webkul\Admin\DataGrids\CartRuleDataGrid') + {!! $cartRuleGrid->render() !!} +
+
+@endsection \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/promotions/catalog-rules/create.blade.php b/packages/Webkul/Admin/src/Resources/views/promotions/catalog-rules/create.blade.php new file mode 100644 index 000000000..30745564b --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/promotions/catalog-rules/create.blade.php @@ -0,0 +1,528 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.promotions.catalog-rules.add-title') }} +@stop + +@section('content') +
+ + + +
+@stop + +@push('scripts') + @parent + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/promotions/catalog-rules/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/promotions/catalog-rules/edit.blade.php new file mode 100644 index 000000000..d1a6aed4a --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/promotions/catalog-rules/edit.blade.php @@ -0,0 +1,533 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.promotions.catalog-rules.edit-title') }} +@stop + +@section('content') +
+ + + +
+@stop + +@push('scripts') + @parent + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/promotions/catalog-rules/index.blade.php b/packages/Webkul/Admin/src/Resources/views/promotions/catalog-rules/index.blade.php new file mode 100644 index 000000000..0139be19f --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/promotions/catalog-rules/index.blade.php @@ -0,0 +1,27 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.promotions.catalog-rules.title') }} +@stop + +@section('content') + +
+ + +
+ @inject('catalogRuleGrid','Webkul\Admin\DataGrids\CatalogRuleDataGrid') + {!! $catalogRuleGrid->render() !!} +
+
+@endsection \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/address.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/address.blade.php new file mode 100755 index 000000000..1bf6bffe2 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/address.blade.php @@ -0,0 +1,6 @@ +{{ $address->name }}
+{{ $address->address1 }}
+{{ $address->city }}
+ {{ $address->state }}
+{{ core()->country_name($address->country) }} {{ $address->postcode }}

+{{ __('shop::app.checkout.onepage.contact') }} : {{ $address->phone }} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/invoices/create.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/create.blade.php new file mode 100755 index 000000000..ed4c2878d --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/create.blade.php @@ -0,0 +1,268 @@ +@extends('admin::layouts.master') + +@section('page_title') + {{ __('admin::app.sales.invoices.add-title') }} +@stop + +@section('content-wrapper') +
+
+ @csrf() + + + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.order-info') }} +
+ +
+
+ + {{ __('admin::app.sales.invoices.order-id') }} + + + + #{{ $order->increment_id }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-date') }} + + + + {{ $order->created_at }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-status') }} + + + + {{ $order->status_label }} + +
+ +
+ + {{ __('admin::app.sales.orders.channel') }} + + + + {{ $order->channel_name }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.account-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.customer-name') }} + + + + {{ $order->customer_full_name }} + +
+ +
+ + {{ __('admin::app.sales.orders.email') }} + + + + {{ $order->customer_email }} + +
+
+
+ +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.billing-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->billing_address]) + +
+
+ + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->shipping_address]) + +
+
+ @endif + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.payment-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.payment-method') }} + + + + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} + +
+ +
+ + {{ __('admin::app.sales.orders.currency') }} + + + + {{ $order->order_currency_code }} + +
+
+
+ + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.shipping-method') }} + + + + {{ $order->shipping_title }} + +
+ +
+ + {{ __('admin::app.sales.orders.shipping-price') }} + + + + {{ core()->formatBasePrice($order->base_shipping_amount) }} + +
+
+
+ @endif +
+
+ + +
+ +
+ + + + + + + + + + + + + @foreach ($order->items as $item) + @if ($item->qty_to_invoice > 0) + + + + + + + @endif + @endforeach + + +
{{ __('admin::app.sales.orders.SKU') }}{{ __('admin::app.sales.orders.product-name') }}{{ __('admin::app.sales.invoices.qty-ordered') }}{{ __('admin::app.sales.invoices.qty-to-invoice') }}
{{ $item->getTypeInstance()->getOrderedItem($item)->sku }} + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
+ + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
+ @endforeach + +
+ @endif +
{{ $item->qty_ordered }} +
+ + + + @verbatim + {{ errors.first('invoice[items][id ?>]') }} + @endverbatim + +
+
+
+ +
+
+ +
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php new file mode 100755 index 000000000..42b871faf --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php @@ -0,0 +1,41 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.sales.invoices.title') }} +@stop + +@section('content') +
+ + +
+ @inject('orderInvoicesGrid', 'Webkul\Admin\DataGrids\OrderInvoicesDataGrid') + {!! $orderInvoicesGrid->render() !!} +
+
+ + +

{{ __('admin::app.export.download') }}

+
+ +
+
+ +@stop + +@push('scripts') + @include('admin::export.export', ['gridName' => $orderInvoicesGrid]) +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/invoices/pdf.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/pdf.blade.php new file mode 100755 index 000000000..1d69d82c4 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/pdf.blade.php @@ -0,0 +1,247 @@ + + + + + + + + + +
+ +
+ +
+ {{ __('admin::app.sales.invoices.invoice-id') }} - + #{{ $invoice->id }} +
+ +
+ {{ __('admin::app.sales.invoices.order-id') }} - + #{{ $invoice->order->increment_id }} +
+ +
+ {{ __('admin::app.sales.invoices.order-date') }} - + {{ $invoice->created_at->format('M d, Y') }} +
+ +
+ + + + + @if ($invoice->order->shipping_address) + + @endif + + + + + + + + @if ($invoice->order->shipping_address) + + @endif + + +
{{ __('admin::app.sales.invoices.bill-to') }}{{ __('admin::app.sales.invoices.ship-to') }}
+

{{ $invoice->order->billing_address->name }}

+

{{ $invoice->order->billing_address->address1 }}

+

{{ $invoice->order->billing_address->city }}

+

{{ $invoice->order->billing_address->state }}

+

{{ core()->country_name($invoice->order->billing_address->country) }} {{ $invoice->order->billing_address->postcode }}

+ {{ __('shop::app.checkout.onepage.contact') }} : {{ $invoice->order->billing_address->phone }} +
+

{{ $invoice->order->shipping_address->name }}

+

{{ $invoice->order->shipping_address->address1 }}

+

{{ $invoice->order->shipping_address->city }}

+

{{ $invoice->order->shipping_address->state }}

+

{{ core()->country_name($invoice->order->shipping_address->country) }} {{ $invoice->order->shipping_address->postcode }}

+ {{ __('shop::app.checkout.onepage.contact') }} : {{ $invoice->order->shipping_address->phone }} +
+
+ +
+ + + + + + @if ($invoice->order->shipping_address) + + @endif + + + + + + + + @if ($invoice->order->shipping_address) + + @endif + + +
{{ __('admin::app.sales.orders.payment-method') }}{{ __('admin::app.sales.orders.shipping-method') }}
+ {{ core()->getConfigData('sales.paymentmethods.' . $invoice->order->payment->method . '.title') }} + + {{ $invoice->order->shipping_title }} +
+
+ +
+ + + + + + + + + + + + + + + + @foreach ($invoice->items as $item) + + + + + + + + + + @endforeach + + +
{{ __('admin::app.sales.orders.SKU') }}{{ __('admin::app.sales.orders.product-name') }}{{ __('admin::app.sales.orders.price') }}{{ __('admin::app.sales.orders.qty') }}{{ __('admin::app.sales.orders.subtotal') }}{{ __('admin::app.sales.orders.tax-amount') }}{{ __('admin::app.sales.orders.grand-total') }}
{{ $item->getTypeInstance()->getOrderedItem($item)->sku }} + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
+ + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
+ @endforeach + +
+ @endif +
{{ core()->formatBasePrice($item->base_price) }}{{ $item->qty }}{{ core()->formatBasePrice($item->base_total) }}{{ core()->formatBasePrice($item->base_tax_amount) }}{{ core()->formatBasePrice($item->base_total + $item->base_tax_amount) }}
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ __('admin::app.sales.orders.subtotal') }}-{{ core()->formatBasePrice($invoice->base_sub_total) }}
{{ __('admin::app.sales.orders.shipping-handling') }}-{{ core()->formatBasePrice($invoice->base_shipping_amount) }}
{{ __('admin::app.sales.orders.tax') }}-{{ core()->formatBasePrice($invoice->base_tax_amount) }}
{{ __('admin::app.sales.orders.discount') }}-{{ core()->formatBasePrice($invoice->base_discount_amount) }}
{{ __('admin::app.sales.orders.grand-total') }}-{{ core()->formatBasePrice($invoice->base_grand_total) }}
+ +
+ +
+ + diff --git a/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php new file mode 100755 index 000000000..d46a2a43e --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php @@ -0,0 +1,309 @@ +@extends('admin::layouts.master') + +@section('page_title') + {{ __('admin::app.sales.invoices.view-title', ['invoice_id' => $invoice->id]) }} +@stop + +@section('content-wrapper') + + order; ?> + +
+ + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.order-info') }} +
+ +
+
+ + {{ __('admin::app.sales.invoices.order-id') }} + + + + #{{ $order->increment_id }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-date') }} + + + + {{ $order->created_at }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-status') }} + + + + {{ $order->status_label }} + +
+ +
+ + {{ __('admin::app.sales.orders.channel') }} + + + + {{ $order->channel_name }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.account-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.customer-name') }} + + + + {{ $invoice->address->name }} + +
+ +
+ + {{ __('admin::app.sales.orders.email') }} + + + + {{ $invoice->address->email }} + +
+
+
+ +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.billing-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->billing_address]) + +
+
+ + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->shipping_address]) + +
+
+ @endif + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.payment-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.payment-method') }} + + + + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} + +
+ +
+ + {{ __('admin::app.sales.orders.currency') }} + + + + {{ $order->order_currency_code }} + +
+
+
+ + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.shipping-method') }} + + + + {{ $order->shipping_title }} + +
+ +
+ + {{ __('admin::app.sales.orders.shipping-price') }} + + + + {{ core()->formatBasePrice($order->base_shipping_amount) }} + +
+
+
+ @endif +
+
+ + +
+ +
+ + + + + + + + + + @if ($invoice->base_discount_amount > 0) + + @endif + + + + + + + @foreach ($invoice->items as $item) + + + + + + + + + + + + + + @if ($invoice->base_discount_amount > 0) + + @endif + + + + @endforeach + + +
{{ __('admin::app.sales.orders.SKU') }}{{ __('admin::app.sales.orders.product-name') }}{{ __('admin::app.sales.orders.price') }}{{ __('admin::app.sales.orders.qty') }}{{ __('admin::app.sales.orders.subtotal') }}{{ __('admin::app.sales.orders.tax-amount') }}{{ __('admin::app.sales.orders.discount-amount') }}{{ __('admin::app.sales.orders.grand-total') }}
{{ $item->getTypeInstance()->getOrderedItem($item)->sku }} + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
+ + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
+ @endforeach + +
+ @endif +
{{ core()->formatBasePrice($item->base_price) }}{{ $item->qty }}{{ core()->formatBasePrice($item->base_total) }}{{ core()->formatBasePrice($item->base_tax_amount) }}{{ core()->formatBasePrice($item->base_discount_amount) }}{{ core()->formatBasePrice($item->base_total + $item->base_tax_amount - $item->base_discount_amount) }}
+
+ + + + + + + + + + + + + + + + + + + + + @if ($invoice->base_discount_amount > 0) + + + + + + @endif + + + + + + +
{{ __('admin::app.sales.orders.subtotal') }}-{{ core()->formatBasePrice($invoice->base_sub_total) }}
{{ __('admin::app.sales.orders.shipping-handling') }}-{{ core()->formatBasePrice($invoice->base_shipping_amount) }}
{{ __('admin::app.sales.orders.tax') }}-{{ core()->formatBasePrice($invoice->base_tax_amount) }}
{{ __('admin::app.sales.orders.discount') }}-{{ core()->formatBasePrice($invoice->base_discount_amount) }}
{{ __('admin::app.sales.orders.grand-total') }}-{{ core()->formatBasePrice($invoice->base_grand_total) }}
+ +
+
+ +
+
+ +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/orders/index.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/orders/index.blade.php new file mode 100755 index 000000000..62a4109db --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/orders/index.blade.php @@ -0,0 +1,41 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.sales.orders.title') }} +@stop + +@section('content') +
+ + +
+ @inject('orderGrid', 'Webkul\Admin\DataGrids\OrderDataGrid') + {!! $orderGrid->render() !!} +
+
+ + +

{{ __('admin::app.export.download') }}

+
+ +
+
+ +@stop + +@push('scripts') + @include('admin::export.export', ['gridName' => $orderGrid]) +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php new file mode 100755 index 000000000..a1b28cbd0 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php @@ -0,0 +1,523 @@ +@extends('admin::layouts.master') + +@section('page_title') + {{ __('admin::app.sales.orders.view-title', ['order_id' => $order->increment_id]) }} +@stop + +@section('content-wrapper') + +
+ + + +
+ + + {!! view_render_event('sales.order.tabs.before', ['order' => $order]) !!} + + +
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.order-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.order-date') }} + + + + {{ $order->created_at }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-status') }} + + + + {{ $order->status_label }} + +
+ +
+ + {{ __('admin::app.sales.orders.channel') }} + + + + {{ $order->channel_name }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.account-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.customer-name') }} + + + + {{ $order->customer_full_name }} + +
+ +
+ + {{ __('admin::app.sales.orders.email') }} + + + + {{ $order->customer_email }} + +
+ + @if (! is_null($order->customer)) +
+ + {{ __('admin::app.customers.customers.customer_group') }} + + + + {{ $order->customer->group['name'] }} + +
+ @endif +
+
+ +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.billing-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->billing_address]) + +
+
+ + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->shipping_address]) + +
+
+ @endif + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.payment-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.payment-method') }} + + + + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} + +
+ +
+ + {{ __('admin::app.sales.orders.currency') }} + + + + {{ $order->order_currency_code }} + +
+
+
+ + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.shipping-method') }} + + + + {{ $order->shipping_title }} + +
+ +
+ + {{ __('admin::app.sales.orders.shipping-price') }} + + + + {{ core()->formatBasePrice($order->base_shipping_amount) }} + +
+
+
+ @endif +
+
+ + +
+ +
+ + + + + + + + + + + @if ($order->base_discount_amount > 0) + + @endif + + + + + + + @foreach ($order->items as $item) + + + + + + + + + + + + + + + + @if ($order->base_discount_amount > 0) + + @endif + + + + @endforeach +
{{ __('admin::app.sales.orders.SKU') }}{{ __('admin::app.sales.orders.product-name') }}{{ __('admin::app.sales.orders.price') }}{{ __('admin::app.sales.orders.item-status') }}{{ __('admin::app.sales.orders.subtotal') }}{{ __('admin::app.sales.orders.tax-percent') }}{{ __('admin::app.sales.orders.tax-amount') }}{{ __('admin::app.sales.orders.discount-amount') }}{{ __('admin::app.sales.orders.grand-total') }}
+ {{ $item->getTypeInstance()->getOrderedItem($item)->sku }} + + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
+ + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
+ @endforeach + +
+ @endif +
{{ core()->formatBasePrice($item->base_price) }} + + {{ $item->qty_ordered ? __('admin::app.sales.orders.item-ordered', ['qty_ordered' => $item->qty_ordered]) : '' }} + + + + {{ $item->qty_invoiced ? __('admin::app.sales.orders.item-invoice', ['qty_invoiced' => $item->qty_invoiced]) : '' }} + + + + {{ $item->qty_shipped ? __('admin::app.sales.orders.item-shipped', ['qty_shipped' => $item->qty_shipped]) : '' }} + + + + {{ $item->qty_refunded ? __('admin::app.sales.orders.item-refunded', ['qty_refunded' => $item->qty_refunded]) : '' }} + + + + {{ $item->qty_canceled ? __('admin::app.sales.orders.item-canceled', ['qty_canceled' => $item->qty_canceled]) : '' }} + + {{ core()->formatBasePrice($item->base_total) }}{{ $item->tax_percent }}%{{ core()->formatBasePrice($item->base_tax_amount) }}{{ core()->formatBasePrice($item->base_discount_amount) }}{{ core()->formatBasePrice($item->base_total + $item->base_tax_amount - $item->base_discount_amount) }}
+
+ + + + + + + + + @if ($order->haveStockableItems()) + + + + + + @endif + + @if ($order->base_discount_amount > 0) + + + + + + @endif + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ __('admin::app.sales.orders.subtotal') }}-{{ core()->formatBasePrice($order->base_sub_total) }}
{{ __('admin::app.sales.orders.shipping-handling') }}-{{ core()->formatBasePrice($order->base_shipping_amount) }}
+ {{ __('admin::app.sales.orders.discount') }} + + @if ($order->coupon_code) + ({{ $order->coupon_code }}) + @endif + -{{ core()->formatBasePrice($order->base_discount_amount) }}
{{ __('admin::app.sales.orders.tax') }}-{{ core()->formatBasePrice($order->base_tax_amount) }}
{{ __('admin::app.sales.orders.grand-total') }}-{{ core()->formatBasePrice($order->base_grand_total) }}
{{ __('admin::app.sales.orders.total-paid') }}-{{ core()->formatBasePrice($order->base_grand_total_invoiced) }}
{{ __('admin::app.sales.orders.total-refunded') }}-{{ core()->formatBasePrice($order->base_grand_total_refunded) }}
{{ __('admin::app.sales.orders.total-due') }}-{{ core()->formatBasePrice($order->base_total_due) }}
+ +
+
+ +
+
+ + + +
+ + + + + + + + + + + + + + + + @foreach ($order->invoices as $invoice) + + + + + + + + + + @endforeach + + @if (! $order->invoices->count()) + + + + @endif +
{{ __('admin::app.sales.invoices.id') }}{{ __('admin::app.sales.invoices.date') }}{{ __('admin::app.sales.invoices.order-id') }}{{ __('admin::app.sales.invoices.customer-name') }}{{ __('admin::app.sales.invoices.status') }}{{ __('admin::app.sales.invoices.amount') }}{{ __('admin::app.sales.invoices.action') }}
#{{ $invoice->id }}{{ $invoice->created_at }}#{{ $invoice->order->increment_id }}{{ $invoice->address->name }}{{ $invoice->status_label }}{{ core()->formatBasePrice($invoice->base_grand_total) }} + + + +
{{ __('admin::app.common.no-result-found') }}
+
+ +
+ + @if ($order->shipping_address) + + +
+ + + + + + + + + + + + + + + + @foreach ($order->shipments as $shipment) + + + + + + + + + + @endforeach + + @if (! $order->shipments->count()) + + + + @endif +
{{ __('admin::app.sales.shipments.id') }}{{ __('admin::app.sales.shipments.date') }}{{ __('admin::app.sales.shipments.order-id') }}{{ __('admin::app.sales.shipments.order-date') }}{{ __('admin::app.sales.shipments.customer-name') }}{{ __('admin::app.sales.shipments.total-qty') }}{{ __('admin::app.sales.shipments.action') }}
#{{ $shipment->id }}{{ $shipment->created_at }}#{{ $shipment->order->id }}{{ $shipment->order->created_at }}{{ $shipment->address->name }}{{ $shipment->total_qty }} + + + +
{{ __('admin::app.common.no-result-found') }}
+
+ +
+ @endif + + + +
+ + + + + + + + + + + + + + + + @foreach ($order->refunds as $refund) + + + + + + + + + + @endforeach + + @if (! $order->refunds->count()) + + + + @endif +
{{ __('admin::app.sales.refunds.id') }}{{ __('admin::app.sales.refunds.date') }}{{ __('admin::app.sales.refunds.order-id') }}{{ __('admin::app.sales.refunds.customer-name') }}{{ __('admin::app.sales.refunds.status') }}{{ __('admin::app.sales.refunds.refunded') }}{{ __('admin::app.sales.refunds.action') }}
#{{ $refund->id }}{{ $refund->created_at }}#{{ $refund->order->increment_id }}{{ $refund->order->customer_full_name }}{{ __('admin::app.sales.refunds.refunded') }}{{ core()->formatBasePrice($refund->base_grand_total) }} + + + +
{{ __('admin::app.common.no-result-found') }}
+
+ +
+ + {!! view_render_event('sales.order.tabs.after', ['order' => $order]) !!} +
+
+ +
+@stop diff --git a/packages/Webkul/Admin/src/Resources/views/sales/refunds/create.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/refunds/create.blade.php new file mode 100755 index 000000000..e0e0ac3d1 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/refunds/create.blade.php @@ -0,0 +1,433 @@ +@extends('admin::layouts.master') + +@section('page_title') + {{ __('admin::app.sales.refunds.add-title') }} +@stop + +@section('content-wrapper') +
+
+ @csrf() + + + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.order-info') }} +
+ +
+
+ + {{ __('admin::app.sales.refunds.order-id') }} + + + + #{{ $order->increment_id }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-date') }} + + + + {{ $order->created_at }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-status') }} + + + + {{ $order->status_label }} + +
+ +
+ + {{ __('admin::app.sales.orders.channel') }} + + + + {{ $order->channel_name }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.account-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.customer-name') }} + + + + {{ $order->customer_full_name }} + +
+ +
+ + {{ __('admin::app.sales.orders.email') }} + + + + {{ $order->customer_email }} + +
+
+
+ +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.billing-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->billing_address]) + +
+
+ + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->shipping_address]) + +
+
+ @endif + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.payment-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.payment-method') }} + + + + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} + +
+ +
+ + {{ __('admin::app.sales.orders.currency') }} + + + + {{ $order->order_currency_code }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.shipping-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.shipping-method') }} + + + + {{ $order->shipping_title }} + +
+ +
+ + {{ __('admin::app.sales.orders.shipping-price') }} + + + + {{ core()->formatBasePrice($order->base_shipping_amount) }} + +
+
+
+
+
+ + +
+ + + +
+
+ +
+
+
+
+@stop + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/refunds/index.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/refunds/index.blade.php new file mode 100755 index 000000000..ec85e3c88 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/refunds/index.blade.php @@ -0,0 +1,42 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.sales.refunds.title') }} +@stop + +@section('content') +
+ + +
+ @inject('refundGrid', 'Webkul\Admin\DataGrids\OrderRefundDataGrid') + + {!! $refundGrid->render() !!} +
+
+ + +

{{ __('admin::app.export.download') }}

+
+ +
+
+ +@stop + +@push('scripts') + @include('admin::export.export', ['gridName' => $refundGrid]) +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/refunds/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/refunds/view.blade.php new file mode 100755 index 000000000..e9f835d2a --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/refunds/view.blade.php @@ -0,0 +1,322 @@ +@extends('admin::layouts.master') + +@section('page_title') + {{ __('admin::app.sales.refunds.view-title', ['refund_id' => $refund->id]) }} +@stop + +@section('content-wrapper') + + order; ?> + +
+ + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.order-info') }} +
+ +
+
+ + {{ __('admin::app.sales.refunds.order-id') }} + + + + #{{ $order->increment_id }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-date') }} + + + + {{ $order->created_at }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-status') }} + + + + {{ $order->status_label }} + +
+ +
+ + {{ __('admin::app.sales.orders.channel') }} + + + + {{ $order->channel_name }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.account-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.customer-name') }} + + + + {{ $refund->order->customer_full_name }} + +
+ +
+ + {{ __('admin::app.sales.orders.email') }} + + + + {{ $refund->order->customer_email }} + +
+
+
+ +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.billing-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->billing_address]) + +
+
+ + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->shipping_address]) + +
+
+ @endif + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.payment-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.payment-method') }} + + + + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} + +
+ +
+ + {{ __('admin::app.sales.orders.currency') }} + + + + {{ $order->order_currency_code }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.shipping-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.shipping-method') }} + + + + {{ $order->shipping_title }} + +
+ +
+ + {{ __('admin::app.sales.orders.shipping-price') }} + + + + {{ core()->formatBasePrice($order->base_shipping_amount) }} + +
+
+
+
+
+ + +
+ +
+ + + + + + + + + + + + + + + + + @foreach ($refund->items as $item) + + + + + + + + + + + + + + + + + + @endforeach + + @if (! $refund->items->count()) + + + + @endif + + +
{{ __('admin::app.sales.orders.SKU') }}{{ __('admin::app.sales.orders.product-name') }}{{ __('admin::app.sales.orders.price') }}{{ __('admin::app.sales.orders.qty') }}{{ __('admin::app.sales.orders.subtotal') }}{{ __('admin::app.sales.orders.tax-amount') }}{{ __('admin::app.sales.orders.discount-amount') }}{{ __('admin::app.sales.orders.grand-total') }}
{{ $item->child ? $item->child->sku : $item->sku }} + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
+ + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
+ @endforeach + +
+ @endif +
{{ core()->formatBasePrice($item->base_price) }}{{ $item->qty }}{{ core()->formatBasePrice($item->base_total) }}{{ core()->formatBasePrice($item->base_tax_amount) }}{{ core()->formatBasePrice($item->base_discount_amount) }}{{ core()->formatBasePrice($item->base_total + $item->base_tax_amount - $item->base_discount_amount) }}
{{ __('admin::app.common.no-result-found') }}
+
+ + + + + + + + + @if ($refund->base_shipping_amount > 0) + + + + + + @endif + + @if ($refund->base_tax_amount > 0) + + + + + + @endif + + @if ($refund->base_discount_amount > 0) + + + + + + @endif + + + + + + + + + + + + + + + + + + +
{{ __('admin::app.sales.orders.subtotal') }}-{{ core()->formatBasePrice($refund->base_sub_total) }}
{{ __('admin::app.sales.orders.shipping-handling') }}-{{ core()->formatBasePrice($refund->base_shipping_amount) }}
{{ __('admin::app.sales.orders.tax') }}-{{ core()->formatBasePrice($refund->base_tax_amount) }}
{{ __('admin::app.sales.orders.discount') }}--{{ core()->formatBasePrice($refund->base_discount_amount) }}
{{ __('admin::app.sales.refunds.adjustment-refund') }}-{{ core()->formatBasePrice($refund->base_adjustment_refund) }}
{{ __('admin::app.sales.refunds.adjustment-fee') }}-{{ core()->formatBasePrice($refund->base_adjustment_fee) }}
{{ __('admin::app.sales.orders.grand-total') }}-{{ core()->formatBasePrice($refund->base_grand_total) }}
+ +
+
+ +
+
+ +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/shipments/create.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/shipments/create.blade.php new file mode 100755 index 000000000..9380ad3f6 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/shipments/create.blade.php @@ -0,0 +1,367 @@ +@extends('admin::layouts.master') + +@section('page_title') + {{ __('admin::app.sales.shipments.add-title') }} +@stop + +@section('content-wrapper') +
+
+ @csrf() + + + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.order-info') }} +
+ +
+
+ + {{ __('admin::app.sales.shipments.order-id') }} + + + + #{{ $order->increment_id }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-date') }} + + + + {{ $order->created_at }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-status') }} + + + + {{ $order->status_label }} + +
+ +
+ + {{ __('admin::app.sales.orders.channel') }} + + + + {{ $order->channel_name }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.account-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.customer-name') }} + + + + {{ $order->customer_full_name }} + +
+ +
+ + {{ __('admin::app.sales.orders.email') }} + + + + {{ $order->customer_email }} + +
+
+
+ +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.billing-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->billing_address]) + +
+
+ + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->shipping_address]) + +
+
+ @endif + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.payment-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.payment-method') }} + + + + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} + +
+ +
+ + {{ __('admin::app.sales.orders.currency') }} + + + + {{ $order->order_currency_code }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.shipping-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.shipping-method') }} + + + + {{ $order->shipping_title }} + +
+ +
+ + {{ __('admin::app.sales.orders.shipping-price') }} + + + + {{ core()->formatBasePrice($order->base_shipping_amount) }} + +
+ +
+ + + + @{{ errors.first('shipment[carrier_title]') }} + +
+ +
+ + + + @{{ errors.first('shipment[track_number]') }} + +
+
+
+
+
+ + +
+ + + +
+
+ +
+
+
+
+@stop + +@push('scripts') + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/shipments/index.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/shipments/index.blade.php new file mode 100755 index 000000000..548dd65d3 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/shipments/index.blade.php @@ -0,0 +1,41 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.sales.shipments.title') }} +@stop + +@section('content') +
+ + +
+ @inject('orderShipmentsGrid', 'Webkul\Admin\DataGrids\OrderShipmentsDataGrid') + {!! $orderShipmentsGrid->render() !!} +
+
+ + +

{{ __('admin::app.export.download') }}

+
+ +
+
+ +@stop + +@push('scripts') + @include('admin::export.export', ['gridName' => $orderShipmentsGrid]) +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/shipments/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/shipments/view.blade.php new file mode 100755 index 000000000..df955df12 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/sales/shipments/view.blade.php @@ -0,0 +1,279 @@ +@extends('admin::layouts.master') + +@section('page_title') + {{ __('admin::app.sales.shipments.view-title', ['shipment_id' => $shipment->id]) }} +@stop + +@section('content-wrapper') + order; ?> + +
+ + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.order-info') }} +
+ +
+
+ + {{ __('admin::app.sales.shipments.order-id') }} + + + + #{{ $order->increment_id }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-date') }} + + + + {{ $order->created_at }} + +
+ +
+ + {{ __('admin::app.sales.orders.order-status') }} + + + + {{ $order->status_label }} + +
+ +
+ + {{ __('admin::app.sales.orders.channel') }} + + + + {{ $order->channel_name }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.account-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.customer-name') }} + + + + {{ $shipment->address->name }} + +
+ +
+ + {{ __('admin::app.sales.orders.email') }} + + + + {{ $shipment->address->email }} + +
+
+
+ +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.billing-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->billing_address]) + +
+
+ + @if ($order->shipping_address) +
+
+ {{ __('admin::app.sales.orders.shipping-address') }} +
+ +
+ + @include ('admin::sales.address', ['address' => $order->shipping_address]) + +
+
+ @endif + +
+
+ + +
+ +
+
+ {{ __('admin::app.sales.orders.payment-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.payment-method') }} + + + + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} + +
+ +
+ + {{ __('admin::app.sales.orders.currency') }} + + + + {{ $order->order_currency_code }} + +
+
+
+ +
+
+ {{ __('admin::app.sales.orders.shipping-info') }} +
+ +
+
+ + {{ __('admin::app.sales.orders.shipping-method') }} + + + + {{ $order->shipping_title }} + +
+ +
+ + {{ __('admin::app.sales.orders.shipping-price') }} + + + + {{ core()->formatBasePrice($order->base_shipping_amount) }} + +
+ + @if ($shipment->inventory_source || $shipment->inventory_source_name) +
+ + {{ __('admin::app.sales.shipments.inventory-source') }} + + + + {{ $shipment->inventory_source ? $shipment->inventory_source->name : $shipment->inventory_source_name }} + +
+ @endif + +
+ + {{ __('admin::app.sales.shipments.carrier-title') }} + + + + {{ $shipment->carrier_title }} + +
+ +
+ + {{ __('admin::app.sales.shipments.tracking-number') }} + + + + {{ $shipment->track_number }} + +
+
+
+
+
+ + +
+ +
+ + + + + + + + + + + + @foreach ($shipment->items as $item) + + + + + + @endforeach + + +
{{ __('admin::app.sales.orders.SKU') }}{{ __('admin::app.sales.orders.product-name') }}{{ __('admin::app.sales.orders.qty') }}
{{ $item->sku }} + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
+ + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
+ @endforeach + +
+ @endif +
{{ $item->qty }}
+
+ +
+
+ +
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php new file mode 100755 index 000000000..1319d3b97 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php @@ -0,0 +1,226 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.channels.add-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + {!! view_render_event('bagisto.admin.settings.channel.create.before') !!} + + +
+ +
+ + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ +
+ + +
+ +
+ + + @{{ errors.first('inventory_sources[]') }} +
+ +
+ + + @{{ errors.first('root_category_id') }} +
+ +
+ + +
+ +
+
+ + +
+ +
+ + + @{{ errors.first('locales[]') }} +
+ +
+ + + @{{ errors.first('default_locale_id') }} +
+ +
+ + + @{{ errors.first('currencies[]') }} +
+ +
+ + + @{{ errors.first('base_currency_id') }} +
+ +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+
+ +
+
+ + +
+
+ + + @{{ errors.first('seo_title') }} +
+ +
+ + + + + @{{ errors.first('seo_description') }} +
+ +
+ + + + + @{{ errors.first('seo_keywords') }} +
+
+
+ + {!! view_render_event('bagisto.admin.settings.channel.create.after') !!} +
+
+
+
+@stop + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php new file mode 100755 index 000000000..eeb26fb82 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php @@ -0,0 +1,241 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.channels.edit-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + + {!! view_render_event('bagisto.admin.settings.channel.edit.before') !!} + + +
+ +
+ + + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ +
+ + +
+ +
+ + inventory_sources->pluck('id')->toArray() ?> + + @{{ errors.first('inventory_sources[]') }} +
+ +
+ + root_category_id ?> + + @{{ errors.first('root_category_id') }} +
+ +
+ + +
+ +
+
+ + +
+ +
+ + locales->pluck('id')->toArray() ?> + + @{{ errors.first('locales[]') }} +
+ +
+ + default_locale_id ?> + + @{{ errors.first('default_locale_id') }} +
+ +
+ + currencies->pluck('id')->toArray() ?> + + @{{ errors.first('currencies[]') }} +
+ +
+ + base_currency_id ?> + + @{{ errors.first('base_currency_id') }} +
+ +
+
+ + +
+
+ + + theme ?> + + +
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+
+ +
+
+ + @php + $seo = json_decode($channel->home_seo); + @endphp + + +
+
+ + + @{{ errors.first('seo_title') }} +
+ +
+ + + + + @{{ errors.first('seo_description') }} +
+ +
+ + + + + @{{ errors.first('seo_keywords') }} +
+
+
+ + {!! view_render_event('bagisto.admin.settings.channel.edit.after') !!} +
+
+
+
+@stop + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/channels/index.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/channels/index.blade.php new file mode 100755 index 000000000..7c3d86efa --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/channels/index.blade.php @@ -0,0 +1,26 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.channels.title') }} +@stop + +@section('content') +
+ + +
+ @inject('channels','Webkul\Admin\DataGrids\ChannelDataGrid') + {!! $channels->render() !!} +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/currencies/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/currencies/create.blade.php new file mode 100755 index 000000000..6af83282f --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/currencies/create.blade.php @@ -0,0 +1,60 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.currencies.add-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + {!! view_render_event('bagisto.admin.settings.currencies.create.before') !!} + + +
+ +
+ + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ +
+ + +
+
+
+ + {!! view_render_event('bagisto.admin.settings.currencies.create.after') !!} +
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/currencies/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/currencies/edit.blade.php new file mode 100755 index 000000000..39eb763eb --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/currencies/edit.blade.php @@ -0,0 +1,62 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.currencies.edit-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + + {!! view_render_event('bagisto.admin.settings.currencies.edit.before') !!} + + +
+ +
+ + + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ +
+ + +
+
+
+ + {!! view_render_event('bagisto.admin.settings.currencies.edit.after') !!} +
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/currencies/index.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/currencies/index.blade.php new file mode 100755 index 000000000..d526a473f --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/currencies/index.blade.php @@ -0,0 +1,26 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.currencies.title') }} +@stop + +@section('content') +
+ + +
+ @inject('currencies','Webkul\Admin\DataGrids\CurrencyDataGrid') + {!! $currencies->render() !!} +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/development/dashboard.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/development/dashboard.blade.php new file mode 100755 index 000000000..1eaf61ad0 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/development/dashboard.blade.php @@ -0,0 +1,19 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.development.title') }} +@stop + +@section('content') +
+ + +
+ +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/exchange_rates/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/exchange_rates/create.blade.php new file mode 100755 index 000000000..ed1a75c1c --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/exchange_rates/create.blade.php @@ -0,0 +1,84 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.exchange_rates.add-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + +
+ + + + + + + + + + + + {!! view_render_event('bagisto.admin.settings.exchangerate.create.before') !!} + + + + + + + + {!! view_render_event('bagisto.admin.settings.exchangerate.create.after') !!} + + +
+ {{ __('admin::app.settings.exchange_rates.source_currency') }} + + {{ __('admin::app.settings.exchange_rates.target_currency') }} + + {{ __('admin::app.settings.exchange_rates.rate') }} +
+ {{ core()->getBaseCurrencyCode() }} + +
+ + @{{ errors.first('target_currency') }} +
+
+
+ + @{{ errors.first('rate') }} +
+
+
+
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/exchange_rates/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/exchange_rates/edit.blade.php new file mode 100755 index 000000000..6cc1540de --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/exchange_rates/edit.blade.php @@ -0,0 +1,86 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.exchange_rates.edit-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + +
+ + + + + + + + + + + + {!! view_render_event('bagisto.admin.settings.exchangerate.edit.before') !!} + + + + + + + + {!! view_render_event('bagisto.admin.settings.exchangerate.edit.after') !!} + + +
+ {{ __('admin::app.settings.exchange_rates.source_currency') }} + + {{ __('admin::app.settings.exchange_rates.target_currency') }} + + {{ __('admin::app.settings.exchange_rates.rate') }} +
+ {{ core()->getBaseCurrencyCode() }} + +
+ + @{{ errors.first('target_currency') }} +
+
+
+ + @{{ errors.first('rate') }} +
+
+
+ +
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/exchange_rates/index.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/exchange_rates/index.blade.php new file mode 100755 index 000000000..a8a085bf2 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/exchange_rates/index.blade.php @@ -0,0 +1,36 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.exchange_rates.title') }} +@stop + +@section('content') +
+ + +
+ @inject('exchange_rates','Webkul\Admin\DataGrids\ExchangeRatesDataGrid') + {!! $exchange_rates->render() !!} +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/create.blade.php new file mode 100755 index 000000000..67b2a8615 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/create.blade.php @@ -0,0 +1,140 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.inventory_sources.add-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + {!! view_render_event('bagisto.admin.settings.inventory.create.before') !!} + + +
+ +
+ + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + + + {{ __('admin::app.settings.inventory_sources.source-is-active') }} + +
+ +
+
+ + +
+ +
+ + + @{{ errors.first('contact_name') }} +
+ +
+ + + @{{ errors.first('contact_email') }} +
+ +
+ + + @{{ errors.first('contact_number') }} +
+ +
+ + +
+ +
+
+ + +
+ + @include ('admin::customers.country-state', ['countryCode' => old('country'), 'stateCode' => old('state')]) + +
+ + + @{{ errors.first('city') }} +
+ +
+ + + @{{ errors.first('street') }} +
+ +
+ + + @{{ errors.first('postcode') }} +
+ +
+
+ + {!! view_render_event('bagisto.admin.settings.inventory.create.after') !!} +
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/edit.blade.php new file mode 100755 index 000000000..913a065a5 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/edit.blade.php @@ -0,0 +1,142 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.inventory_sources.edit-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + {!! view_render_event('bagisto.admin.settings.inventory.edit.before') !!} + + + + +
+ +
+ + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + status ? 'checked' : '' }}> + + {{ __('admin::app.settings.inventory_sources.source-is-active') }} + +
+ +
+
+ + +
+ +
+ + + @{{ errors.first('contact_name') }} +
+ +
+ + + @{{ errors.first('contact_email') }} +
+ +
+ + + @{{ errors.first('contact_number') }} +
+ +
+ + +
+ +
+
+ + +
+ + @include ('admin::customers.country-state', ['countryCode' => old('country') ?? $inventorySource->country, 'stateCode' => old('state') ?? $inventorySource->state]) + +
+ + + @{{ errors.first('city') }} +
+ +
+ + + @{{ errors.first('street') }} +
+ +
+ + + @{{ errors.first('postcode') }} +
+ +
+
+ + {!! view_render_event('bagisto.admin.settings.inventory.edit.after') !!} +
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/index.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/index.blade.php new file mode 100755 index 000000000..d87341499 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/inventory_sources/index.blade.php @@ -0,0 +1,26 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.inventory_sources.title') }} +@stop + +@section('content') +
+ + +
+ @inject('inventory_sources','Webkul\Admin\DataGrids\InventorySourcesDataGrid') + {!! $inventory_sources->render() !!} +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php new file mode 100755 index 000000000..4906a56cb --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php @@ -0,0 +1,64 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.locales.add-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + {!! view_render_event('bagisto.admin.settings.locale.create.before') !!} + + +
+
+ + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ +
+ + + @{{ errors.first('direction') }} +
+ + {!! view_render_event('bagisto.admin.settings.locale.create.after') !!} +
+
+ +
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php new file mode 100755 index 000000000..b0fa3a44e --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php @@ -0,0 +1,68 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.locales.edit-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + {!! view_render_event('bagisto.admin.settings.locale.edit.before', ['locale' => $locale]) !!} + + + + +
+ +
+ + + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+ +
+ + + @{{ errors.first('direction') }} +
+ +
+
+ + {!! view_render_event('bagisto.admin.settings.locale.edit.after', ['locale' => $locale]) !!} +
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/locales/index.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/locales/index.blade.php new file mode 100755 index 000000000..0e1a5030d --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/locales/index.blade.php @@ -0,0 +1,27 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.locales.title') }} +@stop + +@section('content') +
+ + +
+ + @inject('locales','Webkul\Admin\DataGrids\LocalesDataGrid') + {!! $locales->render() !!} +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/settings/sliders/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/sliders/create.blade.php new file mode 100755 index 000000000..222d6176c --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/sliders/create.blade.php @@ -0,0 +1,97 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.sliders.add-title') }} +@stop + +@section('content') +
+
+ + +
+
+ @csrf() + + {!! view_render_event('bagisto.admin.settings.slider.create.before') !!} + +
+ + + @{{ errors.first('title') }} +
+ + getAllChannels() ?> +
+ + + @{{ errors.first('channel_id') }} +
+ +
+ + + + + + @foreach ($errors->get('image.*') as $key => $message) + @php echo str_replace($key, 'Image', $message[0]); @endphp + @endforeach + +
+ +
+ + + + + @{{ errors.first('content') }} +
+ + {!! view_render_event('bagisto.admin.settings.slider.create.after') !!} +
+
+
+
+@endsection + +@push('scripts') + + + +@endpush diff --git a/packages/Webkul/Admin/src/Resources/views/settings/sliders/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/sliders/edit.blade.php new file mode 100755 index 000000000..af5e28126 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/sliders/edit.blade.php @@ -0,0 +1,100 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.sliders.edit-title') }} +@stop + +@section('content') +
+
+ + +
+
+ + @csrf() + + {!! view_render_event('bagisto.admin.settings.slider.edit.before') !!} + +
+ + + @{{ errors.first('title') }} +
+ + getAllChannels() ?> +
+ + + @{{ errors.first('channel_id') }} +
+ +
+ + + + + + @foreach ($errors->get('image.*') as $key => $message) + @php echo str_replace($key, 'Image', $message[0]); @endphp + @endforeach + +
+ +
+ + +
+ +
+ + @{{ errors.first('content') }} +
+ + {!! view_render_event('bagisto.admin.settings.slider.edit.after', ['slider' => $slider]) !!} +
+
+
+
+@endsection + +@push('scripts') + + + +@endpush diff --git a/packages/Webkul/Admin/src/Resources/views/settings/sliders/index.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/sliders/index.blade.php new file mode 100755 index 000000000..c9f2b1d3f --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/sliders/index.blade.php @@ -0,0 +1,28 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.sliders.title') }} +@stop + +@section('content') + + +
+ + +
+ @inject('sliders','Webkul\Admin\DataGrids\SliderDataGrid') + {!! $sliders->render() !!} +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/tax/tax-categories/create.blade.php b/packages/Webkul/Admin/src/Resources/views/tax/tax-categories/create.blade.php new file mode 100755 index 000000000..336dbcabe --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/tax/tax-categories/create.blade.php @@ -0,0 +1,90 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.tax-categories.add-title') }} +@stop + +@section('content') +
+
+ +
+
+ @csrf() + +
+ + + + + @{{ errors.first('channel') }} +
+ +
+ + + + + @{{ errors.first('code') }} +
+ +
+ + + + + @{{ errors.first('name') }} +
+ +
+ + + + + @{{ errors.first('description') }} +
+ + + +
+ + + + + @{{ errors.first('taxrates[]') }} +
+ +
+
+ +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/tax/tax-categories/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/tax/tax-categories/edit.blade.php new file mode 100755 index 000000000..3720e270f --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/tax/tax-categories/edit.blade.php @@ -0,0 +1,80 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.tax-categories.title') }} +@stop + +@section('content') +
+
+ + +
+
+ @csrf() + @method('PUT') +
+ + + + + @{{ errors.first('channel') }} +
+ +
+ + + + +
+ + + +
+ + +
+ + tax_rates()->pluck('tax_rates.id')->toArray() ?> + +
+ + + @inject('taxRates', 'Webkul\Tax\Repositories\TaxRateRepository') + + + @{{ errors.first('taxrates[]') }} +
+
+
+ +
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/tax/tax-categories/index.blade.php b/packages/Webkul/Admin/src/Resources/views/tax/tax-categories/index.blade.php new file mode 100755 index 000000000..8695309da --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/tax/tax-categories/index.blade.php @@ -0,0 +1,26 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.tax-categories.title') }} +@stop + +@section('content') +
+ + +
+ @inject('taxCategories','Webkul\Admin\DataGrids\TaxCategoryDataGrid') + {!! $taxCategories->render() !!} +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/create.blade.php b/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/create.blade.php new file mode 100755 index 000000000..ad7e0d48a --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/create.blade.php @@ -0,0 +1,170 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.tax-rates.add-title') }} +@stop + +@section('content') +
+
+ + +
+
+ @csrf() + + + +
+
+
+
+@stop + +@push('scripts') + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/edit.blade.php new file mode 100755 index 000000000..51d6638f3 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/edit.blade.php @@ -0,0 +1,148 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.tax-rates.edit-title') }} +@stop + +@section('content') +
+
+ + +
+
+ @method('PUT') + + @csrf() + +
+ + + + @{{ errors.first('identifier') }} +
+ + + + @if ($taxRate->is_zip) + + +
+ + + @{{ errors.first('zip_from') }} +
+ +
+ + + @{{ errors.first('zip_to') }} +
+ @else +
+ + + @{{ errors.first('zip_code') }} +
+ @endif + +
+ + + @{{ errors.first('tax_rate') }} +
+ +
+
+
+
+@stop + +@push('scripts') + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/index.blade.php b/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/index.blade.php new file mode 100755 index 000000000..b9933bede --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/index.blade.php @@ -0,0 +1,73 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.settings.tax-rates.title') }} +@stop + +@section('content') +
+ + +
+ @inject('taxRateGrid', 'Webkul\Admin\DataGrids\TaxRateDataGrid') + {!! $taxRateGrid->render() !!} +
+
+ + +

{{ __('admin::app.export.download') }}

+
+ +
+
+ + +

{{ __('admin::app.export.upload') }}

+
+ +
+ @csrf() +
+ + + {{ __('admin::app.export.allowed-type') }} + {{ __('admin::app.export.file-type') }} + @{{ errors.first('file') }} +
+ + +
+ +
+
+ +@endsection + +@push('scripts') + @include('admin::export.export', ['gridName' => $taxRateGrid]) +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/forget-password/create.blade.php b/packages/Webkul/Admin/src/Resources/views/users/forget-password/create.blade.php new file mode 100755 index 000000000..6bb20305d --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/forget-password/create.blade.php @@ -0,0 +1,55 @@ +@extends('admin::layouts.anonymous-master') + +@section('page_title') + {{ __('admin::app.users.forget-password.title') }} +@stop + +@section('css') + +@stop + +@section('content') + +
+ +
+ +
+ +

{{ __('admin::app.users.forget-password.header-title') }}

+ +
+ @csrf + +
+ + + @{{ errors.first('email') }} +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/reset-password/create.blade.php b/packages/Webkul/Admin/src/Resources/views/users/reset-password/create.blade.php new file mode 100755 index 000000000..bcd1caeac --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/reset-password/create.blade.php @@ -0,0 +1,69 @@ +@extends('admin::layouts.anonymous-master') + +@section('page_title') + {{ __('admin::app.users.reset-password.title') }} +@stop + +@section('css') + +@stop + +@section('content') + +
+ +
+ +
+ +

{{ __('admin::app.users.reset-password.title') }}

+ +
+ @csrf + + + +
+ + + @{{ errors.first('email') }} +
+ +
+ + + @{{ errors.first('password') }} +
+ +
+ + + @{{ errors.first('password_confirmation') }} +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/roles/create.blade.php b/packages/Webkul/Admin/src/Resources/views/users/roles/create.blade.php new file mode 100755 index 000000000..75b958b02 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/roles/create.blade.php @@ -0,0 +1,80 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.users.roles.add-role-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + +
+
+ + + @{{ errors.first('name') }} +
+ +
+ + +
+
+
+ + +
+
+ + +
+ +
+ +
+
+
+
+
+
+
+@stop + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/roles/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/users/roles/edit.blade.php new file mode 100755 index 000000000..8e80f3ca0 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/roles/edit.blade.php @@ -0,0 +1,82 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.users.roles.edit-role-title') }} +@stop + +@section('content') +
+ +
+ + +
+
+ @csrf() + + + + +
+
+ + + @{{ errors.first('name') }} +
+ +
+ + +
+
+
+ + +
+
+ + +
+ +
+ +
+
+
+
+
+
+
+@stop + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/roles/index.blade.php b/packages/Webkul/Admin/src/Resources/views/users/roles/index.blade.php new file mode 100755 index 000000000..5c4c50331 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/roles/index.blade.php @@ -0,0 +1,26 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.users.roles.title') }} +@stop + +@section('content') +
+ + +
+ @inject('roles','Webkul\Admin\DataGrids\RolesDataGrid') + {!! $roles->render() !!} +
+
+@stop diff --git a/packages/Webkul/Admin/src/Resources/views/users/sessions/create.blade.php b/packages/Webkul/Admin/src/Resources/views/users/sessions/create.blade.php new file mode 100755 index 000000000..c8bb494e1 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/sessions/create.blade.php @@ -0,0 +1,47 @@ +@extends('admin::layouts.anonymous-master') + +@section('page_title') + {{ __('admin::app.users.sessions.title') }} +@stop + +@section('content') + +
+ +
+ +
+ +

{{ __('admin::app.users.sessions.title') }}

+ +
+ @csrf + +
+ + + @{{ errors.first('email') }} +
+ +
+ + + @{{ errors.first('password') }} +
+ + + +
+ +
+
+ +
+ +
+ +
+ +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/users/create.blade.php b/packages/Webkul/Admin/src/Resources/views/users/users/create.blade.php new file mode 100755 index 000000000..793c2c0e5 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/users/create.blade.php @@ -0,0 +1,88 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.users.users.add-user-title') }} +@stop + +@section('content') +
+
+ + +
+
+ @csrf() + + +
+
+ + + @{{ errors.first('name') }} +
+ +
+ + + @{{ errors.first('email') }} +
+
+
+ + +
+
+ + + @{{ errors.first('password') }} +
+ +
+ + + @{{ errors.first('password_confirmation') }} +
+
+
+ + +
+
+ + + @{{ errors.first('role_id') }} +
+ +
+ + + + + {{ __('admin::app.users.users.account-is-active') }} + +
+
+
+
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/users/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/users/users/edit.blade.php new file mode 100755 index 000000000..72f3b3b29 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/users/edit.blade.php @@ -0,0 +1,97 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.users.users.edit-user-title') }} +@stop + +@section('content') +
+
+ + +
+
+ @csrf() + + + +
+
+ + + @{{ errors.first('name') }} +
+ +
+ + + @{{ errors.first('email') }} +
+
+
+ + +
+
+ + + @{{ errors.first('password') }} +
+ +
+ + + @{{ errors.first('password_confirmation') }} +
+
+
+ + +
+
+ + + @{{ errors.first('role_id') }} +
+ +
+ + + status == 0) + value="false" + @else + value="true" + @endif --}} + + {{ $user->status ? 'checked' : '' }}> + + + {{ __('admin::app.users.users.account-is-active') }} + +
+
+
+
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/users/index.blade.php b/packages/Webkul/Admin/src/Resources/views/users/users/index.blade.php new file mode 100755 index 000000000..eef3ab6fd --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/users/index.blade.php @@ -0,0 +1,29 @@ +@extends('admin::layouts.content') + +@section('page_title') + {{ __('admin::app.users.users.title') }} +@stop + +@section('content') + +
+ + +
+ + @inject('datagrid','Webkul\Admin\DataGrids\UserDataGrid') + {!! $datagrid->render() !!} + {{-- --}} +
+
+ +@stop diff --git a/packages/Webkul/Admin/webpack.mix.js b/packages/Webkul/Admin/webpack.mix.js new file mode 100755 index 000000000..10ebcb348 --- /dev/null +++ b/packages/Webkul/Admin/webpack.mix.js @@ -0,0 +1,30 @@ +const mix = require("laravel-mix"); + +if (mix == 'undefined') { + const { mix } = require("laravel-mix"); +} + +require("laravel-mix-merge-manifest"); + +if (mix.inProduction()) { + var publicPath = 'publishable/assets'; +} else { + var publicPath = "../../../public/vendor/webkul/admin/assets"; +} + +mix.setPublicPath(publicPath).mergeManifest(); +mix.disableNotifications(); + +mix.js(__dirname + "/src/Resources/assets/js/app.js", "js/admin.js") + .sass(__dirname + "/src/Resources/assets/sass/app.scss", "css/admin.css") + .options({ + processCssUrls: false + }); + +if (!mix.inProduction()) { + mix.sourceMaps(); +} + +if (mix.inProduction()) { + mix.version(); +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/.gitignore b/packages/Webkul/Attribute/.gitignore new file mode 100755 index 000000000..30bc16279 --- /dev/null +++ b/packages/Webkul/Attribute/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/packages/Webkul/Attribute/composer.json b/packages/Webkul/Attribute/composer.json new file mode 100755 index 000000000..14cf2adee --- /dev/null +++ b/packages/Webkul/Attribute/composer.json @@ -0,0 +1,28 @@ +{ + "name": "bagisto/laravel-attribute", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": { + "nwidart/laravel-modules": "^3.2", + "bagisto/laravel-core": "dev-master" + }, + "autoload": { + "psr-4": { + "Webkul\\Attribute\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Attribute\\Providers\\AttributeServiceProvider" + ], + "aliases": { } + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Attribute/src/Contracts/Attribute.php b/packages/Webkul/Attribute/src/Contracts/Attribute.php new file mode 100644 index 000000000..4a28b5761 --- /dev/null +++ b/packages/Webkul/Attribute/src/Contracts/Attribute.php @@ -0,0 +1,7 @@ +define(Attribute::class, function (Faker $faker, array $attributes) { + $types = [ + 'text', + 'textarea', + 'price', + 'boolean', + 'select', + 'multiselect', + 'datetime', + 'date', + 'image', + 'file', + 'checkbox', + ]; + + $locales = Locale::pluck('code')->all(); + + // array $attributes does not contain any locale code + if (count(array_diff_key(array_flip($locales), $attributes) ) === count($locales)) { + $localeCode = $locales[0]; + + $attributes[$localeCode] = [ + 'name' => $faker->word, + ]; + } + + return [ + 'admin_name' => $faker->word, + 'code' => $faker->word, + 'type' => array_rand($types), + 'validation' => '', + 'position' => $faker->randomDigit, + 'is_required' => false, + 'is_unique' => false, + 'value_per_locale' => false, + 'value_per_channel' => false, + 'is_filterable' => false, + 'is_configurable' => false, + 'is_user_defined' => true, + 'is_visible_on_front' => true, + 'swatch_type' => null, + 'use_in_flat' => true, + ]; +}); + +$factory->state(Attribute::class, 'validation_numeric', [ + 'validation' => 'numeric', +]); + +$factory->state(Attribute::class, 'validation_email', [ + 'validation' => 'email', +]); + +$factory->state(Attribute::class, 'validation_decimal', [ + 'validation' => 'decimal', +]); + +$factory->state(Attribute::class, 'validation_url', [ + 'validation' => 'url', +]); + +$factory->state(Attribute::class, 'required', [ + 'is_required' => true, +]); + +$factory->state(Attribute::class, 'unique', [ + 'is_unique' => true, +]); + +$factory->state(Attribute::class, 'filterable', [ + 'is_filterable' => true, +]); + +$factory->state(Attribute::class, 'configurable', [ + 'is_configurable' => true, +]); \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Database/Factories/AttributeOptionFactory.php b/packages/Webkul/Attribute/src/Database/Factories/AttributeOptionFactory.php new file mode 100644 index 000000000..2612fcc76 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Factories/AttributeOptionFactory.php @@ -0,0 +1,83 @@ +define(AttributeOption::class, function (Faker $faker, array $attributes) { + + $locales = Locale::pluck('code')->all(); + + // array $attributes does not contain any locale code + if (count(array_diff_key(array_flip($locales), $attributes) ) === count($locales)) { + $localeCode = $locales[0]; + + $attributes[$localeCode] = [ + 'label' => $faker->word, + ]; + } + + return [ + 'admin_name' => $faker->word, + 'sort_order' => $faker->randomDigit, + 'attribute_id' => function () { + return factory(Attribute::class)->create()->id; + }, + 'swatch_value' => null, + ]; +}); + +$factory->defineAs(AttributeOption::class, 'swatch_color', function (Faker $faker, array $attributes) { + return [ + 'admin_name' => $faker->word, + 'sort_order' => $faker->randomDigit, + 'attribute_id' => function () { + return factory(Attribute::class) + ->create(['swatch_type' => 'color']) + ->id; + }, + 'swatch_value' => $faker->hexColor, + ]; +}); + +$factory->defineAs(AttributeOption::class, 'swatch_image', function (Faker $faker, array $attributes) { + return [ + 'admin_name' => $faker->word, + 'sort_order' => $faker->randomDigit, + 'attribute_id' => function () { + return factory(Attribute::class) + ->create(['swatch_type' => 'image']) + ->id; + }, + 'swatch_value' => '/tests/_data/ProductImageExampleForUpload.jpg', + ]; +}); + +$factory->defineAs(AttributeOption::class, 'swatch_dropdown', function (Faker $faker, array $attributes) { + return [ + 'admin_name' => $faker->word, + 'sort_order' => $faker->randomDigit, + 'attribute_id' => function () { + return factory(Attribute::class) + ->create(['swatch_type' => 'dropdown']) + ->id; + }, + 'swatch_value' => null, + ]; +}); + +$factory->defineAs(AttributeOption::class, 'swatch_text', function (Faker $faker, array $attributes) { + return [ + 'admin_name' => $faker->word, + 'sort_order' => $faker->randomDigit, + 'attribute_id' => function () { + return factory(Attribute::class) + ->create(['swatch_type' => 'text']) + ->id; + }, + 'swatch_value' => null, + ]; +}); \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_130148_create_attributes_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_130148_create_attributes_table.php new file mode 100755 index 000000000..e042a1dee --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_130148_create_attributes_table.php @@ -0,0 +1,44 @@ +increments('id'); + $table->string('code')->unique(); + $table->string('admin_name'); + $table->string('type'); + $table->string('validation')->nullable(); + $table->integer('position')->nullable(); + $table->boolean('is_required')->default(0); + $table->boolean('is_unique')->default(0); + $table->boolean('value_per_locale')->default(0); + $table->boolean('value_per_channel')->default(0); + $table->boolean('is_filterable')->default(0); + $table->boolean('is_configurable')->default(0); + $table->boolean('is_user_defined')->default(1); + $table->boolean('is_visible_on_front')->default(0); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attributes'); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_132854_create_attribute_translations_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_132854_create_attribute_translations_table.php new file mode 100755 index 000000000..5c1607871 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_132854_create_attribute_translations_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('locale'); + $table->text('name')->nullable(); + $table->integer('attribute_id')->unsigned(); + $table->unique(['attribute_id', 'locale']); + $table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attribute_translations'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135150_create_attribute_families_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135150_create_attribute_families_table.php new file mode 100755 index 000000000..d3ea2cba7 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135150_create_attribute_families_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->string('code'); + $table->string('name'); + $table->boolean('status')->default(0); + $table->boolean('is_user_defined')->default(1); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attribute_families'); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135152_create_attribute_groups_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135152_create_attribute_groups_table.php new file mode 100755 index 000000000..7c843c6d6 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135152_create_attribute_groups_table.php @@ -0,0 +1,47 @@ +increments('id'); + $table->string('name'); + $table->integer('position'); + $table->boolean('is_user_defined')->default(1); + $table->integer('attribute_family_id')->unsigned(); + $table->unique(['attribute_family_id', 'name']); + $table->foreign('attribute_family_id')->references('id')->on('attribute_families')->onDelete('cascade'); + }); + + Schema::create('attribute_group_mappings', function (Blueprint $table) { + $table->integer('attribute_id')->unsigned(); + $table->integer('attribute_group_id')->unsigned(); + $table->integer('position')->nullable(); + $table->primary(['attribute_id', 'attribute_group_id']); + $table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade'); + $table->foreign('attribute_group_id')->references('id')->on('attribute_groups')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attribute_group_mappings'); + + Schema::dropIfExists('attribute_groups'); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140832_create_attribute_options_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140832_create_attribute_options_table.php new file mode 100755 index 000000000..dddb4971d --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140832_create_attribute_options_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->string('admin_name')->nullable(); + $table->integer('sort_order')->nullable(); + $table->integer('attribute_id')->unsigned(); + $table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attribute_options'); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140856_create_attribute_option_translations_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140856_create_attribute_option_translations_table.php new file mode 100755 index 000000000..94944a3ab --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140856_create_attribute_option_translations_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('locale'); + $table->text('label')->nullable(); + $table->integer('attribute_option_id')->unsigned(); + $table->unique(['attribute_option_id', 'locale']); + $table->foreign('attribute_option_id')->references('id')->on('attribute_options')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attribute_option_translations'); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_152709_add_swatch_type_column_in_attributes_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_152709_add_swatch_type_column_in_attributes_table.php new file mode 100644 index 000000000..9d7230b4a --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_152709_add_swatch_type_column_in_attributes_table.php @@ -0,0 +1,32 @@ +string('swatch_type')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('attributes', function (Blueprint $table) { + $table->dropColumn('swatch_type'); + }); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_153851_add_swatch_value_columns_in_attribute_options_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_153851_add_swatch_value_columns_in_attribute_options_table.php new file mode 100644 index 000000000..6cbef8934 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2019_02_21_153851_add_swatch_value_columns_in_attribute_options_table.php @@ -0,0 +1,32 @@ +string('swatch_value')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('attribute_options', function (Blueprint $table) { + $table->dropColumn('swatch_value'); + }); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2019_07_29_142734_add_use_in_flat_column_in_attributes_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2019_07_29_142734_add_use_in_flat_column_in_attributes_table.php new file mode 100644 index 000000000..14a3cfa32 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2019_07_29_142734_add_use_in_flat_column_in_attributes_table.php @@ -0,0 +1,32 @@ +boolean('use_in_flat')->default(1); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('attributes', function (Blueprint $table) { + $table->dropColumn('use_in_flat'); + }); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Seeders/.gitkeep b/packages/Webkul/Attribute/src/Database/Seeders/.gitkeep new file mode 100755 index 000000000..e69de29bb diff --git a/packages/Webkul/Attribute/src/Database/Seeders/AttributeFamilyTableSeeder.php b/packages/Webkul/Attribute/src/Database/Seeders/AttributeFamilyTableSeeder.php new file mode 100755 index 000000000..c93bec117 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Seeders/AttributeFamilyTableSeeder.php @@ -0,0 +1,18 @@ +delete(); + + DB::table('attribute_families')->insert([ + ['id' => '1','code' => 'default','name' => 'Default','status' => '0','is_user_defined' => '1'] + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Database/Seeders/AttributeGroupTableSeeder.php b/packages/Webkul/Attribute/src/Database/Seeders/AttributeGroupTableSeeder.php new file mode 100755 index 000000000..92fa5db6c --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Seeders/AttributeGroupTableSeeder.php @@ -0,0 +1,50 @@ +delete(); + + DB::table('attribute_groups')->insert([ + ['id' => '1','name' => 'General','position' => '1','is_user_defined' => '0','attribute_family_id' => '1'], + ['id' => '2','name' => 'Description','position' => '2','is_user_defined' => '0','attribute_family_id' => '1'], + ['id' => '3','name' => 'Meta Description','position' => '3','is_user_defined' => '0','attribute_family_id' => '1'], + ['id' => '4','name' => 'Price','position' => '4','is_user_defined' => '0','attribute_family_id' => '1'], + ['id' => '5','name' => 'Shipping','position' => '5','is_user_defined' => '0','attribute_family_id' => '1'] + ]); + + DB::table('attribute_group_mappings')->insert([ + ['attribute_id' => '1','attribute_group_id' => '1','position' => '1'], + ['attribute_id' => '2','attribute_group_id' => '1','position' => '2'], + ['attribute_id' => '3','attribute_group_id' => '1','position' => '3'], + ['attribute_id' => '4','attribute_group_id' => '1','position' => '4'], + ['attribute_id' => '5','attribute_group_id' => '1','position' => '5'], + ['attribute_id' => '6','attribute_group_id' => '1','position' => '6'], + ['attribute_id' => '7','attribute_group_id' => '1','position' => '7'], + ['attribute_id' => '8','attribute_group_id' => '1','position' => '8'], + ['attribute_id' => '9','attribute_group_id' => '2','position' => '1'], + ['attribute_id' => '10','attribute_group_id' => '2','position' => '2'], + ['attribute_id' => '11','attribute_group_id' => '4','position' => '1'], + ['attribute_id' => '12','attribute_group_id' => '4','position' => '2'], + ['attribute_id' => '13','attribute_group_id' => '4','position' => '3'], + ['attribute_id' => '14','attribute_group_id' => '4','position' => '4'], + ['attribute_id' => '15','attribute_group_id' => '4','position' => '5'], + ['attribute_id' => '16','attribute_group_id' => '3','position' => '1'], + ['attribute_id' => '17','attribute_group_id' => '3','position' => '2'], + ['attribute_id' => '18','attribute_group_id' => '3','position' => '3'], + ['attribute_id' => '19','attribute_group_id' => '5','position' => '1'], + ['attribute_id' => '20','attribute_group_id' => '5','position' => '2'], + ['attribute_id' => '21','attribute_group_id' => '5','position' => '3'], + ['attribute_id' => '22','attribute_group_id' => '5','position' => '4'], + ['attribute_id' => '23','attribute_group_id' => '1','position' => '9'], + ['attribute_id' => '24','attribute_group_id' => '1','position' => '10'], + ['attribute_id' => '25','attribute_group_id' => '1','position' => '11'] + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Database/Seeders/AttributeOptionTableSeeder.php b/packages/Webkul/Attribute/src/Database/Seeders/AttributeOptionTableSeeder.php new file mode 100755 index 000000000..992c625c0 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Seeders/AttributeOptionTableSeeder.php @@ -0,0 +1,39 @@ +delete(); + + DB::table('attribute_options')->insert([ + ['id' => '1', 'admin_name' => 'Red', 'sort_order' => '1', 'attribute_id' => '23'], + ['id' => '2', 'admin_name' => 'Green', 'sort_order' => '2', 'attribute_id' => '23'], + ['id' => '3', 'admin_name' => 'Yellow', 'sort_order' => '3', 'attribute_id' => '23'], + ['id' => '4', 'admin_name' => 'Black', 'sort_order' => '4', 'attribute_id' => '23'], + ['id' => '5', 'admin_name' => 'White', 'sort_order' => '5', 'attribute_id' => '23'], + ['id' => '6', 'admin_name' => 'S', 'sort_order' => '1', 'attribute_id' => '24'], + ['id' => '7', 'admin_name' => 'M', 'sort_order' => '2', 'attribute_id' => '24'], + ['id' => '8', 'admin_name' => 'L', 'sort_order' => '3', 'attribute_id' => '24'], + ['id' => '9', 'admin_name' => 'XL', 'sort_order' => '4', 'attribute_id' => '24'] + ]); + + DB::table('attribute_option_translations')->insert([ + ['id' => '1', 'locale' => 'en', 'label' => 'Red', 'attribute_option_id' => '1'], + ['id' => '2', 'locale' => 'en', 'label' => 'Green', 'attribute_option_id' => '2'], + ['id' => '3', 'locale' => 'en', 'label' => 'Yellow', 'attribute_option_id' => '3'], + ['id' => '4', 'locale' => 'en', 'label' => 'Black', 'attribute_option_id' => '4'], + ['id' => '5', 'locale' => 'en', 'label' => 'White', 'attribute_option_id' => '5'], + ['id' => '6', 'locale' => 'en', 'label' => 'S', 'attribute_option_id' => '6'], + ['id' => '7', 'locale' => 'en', 'label' => 'M', 'attribute_option_id' => '7'], + ['id' => '8', 'locale' => 'en', 'label' => 'L', 'attribute_option_id' => '8'], + ['id' => '9', 'locale' => 'en', 'label' => 'XL', 'attribute_option_id' => '9'] + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php b/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php new file mode 100755 index 000000000..595b37411 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php @@ -0,0 +1,96 @@ +delete(); + + $now = Carbon::now(); + + DB::table('attributes')->insert([ + ['id' => '1','code' => 'sku','admin_name' => 'SKU','type' => 'text','validation' => NULL,'position' => '1','is_required' => '1','is_unique' => '1','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '2','code' => 'name','admin_name' => 'Name','type' => 'text','validation' => NULL,'position' => '2','is_required' => '1','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '3','code' => 'url_key','admin_name' => 'URL Key','type' => 'text','validation' => NULL,'position' => '3','is_required' => '1','is_unique' => '1','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '4','code' => 'tax_category_id','admin_name' => 'Tax Category','type' => 'select','validation' => NULL,'position' => '4','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '5','code' => 'new','admin_name' => 'New','type' => 'boolean','validation' => NULL,'position' => '5','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '6','code' => 'featured','admin_name' => 'Featured','type' => 'boolean','validation' => NULL,'position' => '6','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '7','code' => 'visible_individually','admin_name' => 'Visible Individually','type' => 'boolean','validation' => NULL,'position' => '7','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now, + 'use_in_flat' => '1','updated_at' => $now], + ['id' => '8','code' => 'status','admin_name' => 'Status','type' => 'boolean','validation' => NULL,'position' => '8','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '9','code' => 'short_description','admin_name' => 'Short Description','type' => 'textarea','validation' => NULL,'position' => '9','is_required' => '1','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0', + 'is_visible_on_front' => '0','use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '10','code' => 'description','admin_name' => 'Description','type' => 'textarea','validation' => NULL,'position' => '10','is_required' => '1','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '11','code' => 'price','admin_name' => 'Price','type' => 'price','validation' => 'decimal','position' => '11','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '12','code' => 'cost','admin_name' => 'Cost','type' => 'price','validation' => 'decimal','position' => '12','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '13','code' => 'special_price','admin_name' => 'Special Price','type' => 'price','validation' => 'decimal','position' => '13','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '14','code' => 'special_price_from','admin_name' => 'Special Price From','type' => 'date','validation' => NULL,'position' => '14','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '15','code' => 'special_price_to','admin_name' => 'Special Price To','type' => 'date','validation' => NULL,'position' => '15','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0', + 'use_in_flat' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], + ['id' => '16','code' => 'meta_title','admin_name' => 'Meta Title','type' => 'textarea','validation' => NULL,'position' => '16','is_required' => '0','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '17','code' => 'meta_keywords','admin_name' => 'Meta Keywords','type' => 'textarea','validation' => NULL,'position' => '17','is_required' => '0','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '18','code' => 'meta_description','admin_name' => 'Meta Description','type' => 'textarea','validation' => NULL,'position' => '18','is_required' => '0','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0','use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '19','code' => 'width','admin_name' => 'Width','type' => 'text','validation' => 'decimal','position' => '19','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '20','code' => 'height','admin_name' => 'Height','type' => 'text','validation' => 'decimal','position' => '20','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '21','code' => 'depth','admin_name' => 'Depth','type' => 'text','validation' => 'decimal','position' => '21','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '22','code' => 'weight','admin_name' => 'Weight','type' => 'text','validation' => 'decimal','position' => '22','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '23','code' => 'color','admin_name' => 'Color','type' => 'select','validation' => NULL,'position' => '23','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '1','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '24','code' => 'size','admin_name' => 'Size','type' => 'select','validation' => NULL,'position' => '24','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '1','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '25','code' => 'brand','admin_name' => 'Brand','type' => 'select','validation' => NULL,'position' => '25','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '1', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now] + ]); + + + DB::table('attribute_translations')->insert([ + ['id' => '1','locale' => 'en','name' => 'SKU','attribute_id' => '1'], + ['id' => '2','locale' => 'en','name' => 'Name','attribute_id' => '2'], + ['id' => '3','locale' => 'en','name' => 'URL Key','attribute_id' => '3'], + ['id' => '4','locale' => 'en','name' => 'Tax Category','attribute_id' => '4'], + ['id' => '5','locale' => 'en','name' => 'New','attribute_id' => '5'], + ['id' => '6','locale' => 'en','name' => 'Featured','attribute_id' => '6'], + ['id' => '7','locale' => 'en','name' => 'Visible Individually','attribute_id' => '7'], + ['id' => '8','locale' => 'en','name' => 'Status','attribute_id' => '8'], + ['id' => '9','locale' => 'en','name' => 'Short Description','attribute_id' => '9'], + ['id' => '10','locale' => 'en','name' => 'Description','attribute_id' => '10'], + ['id' => '11','locale' => 'en','name' => 'Price','attribute_id' => '11'], + ['id' => '12','locale' => 'en','name' => 'Cost','attribute_id' => '12'], + ['id' => '13','locale' => 'en','name' => 'Special Price','attribute_id' => '13'], + ['id' => '14','locale' => 'en','name' => 'Special Price From','attribute_id' => '14'], + ['id' => '15','locale' => 'en','name' => 'Special Price To','attribute_id' => '15'], + ['id' => '16','locale' => 'en','name' => 'Meta Description','attribute_id' => '16'], + ['id' => '17','locale' => 'en','name' => 'Meta Keywords','attribute_id' => '17'], + ['id' => '18','locale' => 'en','name' => 'Meta Description','attribute_id' => '18'], + ['id' => '19','locale' => 'en','name' => 'Width','attribute_id' => '19'], + ['id' => '20','locale' => 'en','name' => 'Height','attribute_id' => '20'], + ['id' => '21','locale' => 'en','name' => 'Depth','attribute_id' => '21'], + ['id' => '22','locale' => 'en','name' => 'Weight','attribute_id' => '22'], + ['id' => '23','locale' => 'en','name' => 'Color','attribute_id' => '23'], + ['id' => '24','locale' => 'en','name' => 'Size','attribute_id' => '24'], + ['id' => '25','locale' => 'en','name' => 'Brand','attribute_id' => '25'] + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Database/Seeders/DatabaseSeeder.php b/packages/Webkul/Attribute/src/Database/Seeders/DatabaseSeeder.php new file mode 100755 index 000000000..b1f9df4a8 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Seeders/DatabaseSeeder.php @@ -0,0 +1,21 @@ +call(AttributeTableSeeder::class); + $this->call(AttributeOptionTableSeeder::class); + $this->call(AttributeFamilyTableSeeder::class); + $this->call(AttributeGroupTableSeeder::class); + } +} diff --git a/packages/Webkul/Attribute/src/Http/Controllers/AttributeController.php b/packages/Webkul/Attribute/src/Http/Controllers/AttributeController.php new file mode 100755 index 000000000..d9958c78c --- /dev/null +++ b/packages/Webkul/Attribute/src/Http/Controllers/AttributeController.php @@ -0,0 +1,188 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AttributeController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * AttributeRepository object + * + * @var array + */ + protected $attributeRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @return void + */ + public function __construct(AttributeRepository $attributeRepository) + { + $this->attributeRepository = $attributeRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'code' => ['required', 'unique:attributes,code', new \Webkul\Core\Contracts\Validations\Code], + 'admin_name' => 'required', + 'type' => 'required' + ]); + + $data = request()->all(); + + $data['is_user_defined'] = 1; + + $attribute = $this->attributeRepository->create($data); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Attribute'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $attribute = $this->attributeRepository->findOrFail($id); + + return view($this->_config['view'], compact('attribute')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $this->validate(request(), [ + 'code' => ['required', 'unique:attributes,code,' . $id, new \Webkul\Core\Contracts\Validations\Code], + 'admin_name' => 'required', + 'type' => 'required' + ]); + + $attribute = $this->attributeRepository->update(request()->all(), $id); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Attribute'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $attribute = $this->attributeRepository->findOrFail($id); + + if (! $attribute->is_user_defined) { + session()->flash('error', trans('admin::app.response.user-define-error', ['name' => 'Attribute'])); + } else { + try { + $this->attributeRepository->delete($id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Attribute'])); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Attribute'])); + } + } + + return response()->json(['message' => false], 400); + } + + /** + * Remove the specified resources from database + * + * @return response \Illuminate\Http\Response + */ + public function massDestroy() + { + $suppressFlash = false; + + if (request()->isMethod('post')) { + $indexes = explode(',', request()->input('indexes')); + + foreach ($indexes as $key => $value) { + $attribute = $this->attributeRepository->find($value); + + try { + if (! $attribute->is_user_defined) { + continue; + } else { + $this->attributeRepository->delete($value); + } + } catch (\Exception $e) { + $suppressFlash = true; + + continue; + } + } + + if (! $suppressFlash) + session()->flash('success', trans('admin::app.datagrid.mass-ops.delete-success', ['resource' => 'attributes'])); + else + session()->flash('info', trans('admin::app.datagrid.mass-ops.partial-action', ['resource' => 'attributes'])); + + return redirect()->back(); + } else { + session()->flash('error', trans('admin::app.datagrid.mass-ops.method-error')); + + return redirect()->back(); + } + } +} diff --git a/packages/Webkul/Attribute/src/Http/Controllers/AttributeFamilyController.php b/packages/Webkul/Attribute/src/Http/Controllers/AttributeFamilyController.php new file mode 100755 index 000000000..272f0848c --- /dev/null +++ b/packages/Webkul/Attribute/src/Http/Controllers/AttributeFamilyController.php @@ -0,0 +1,198 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AttributeFamilyController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * AttributeFamilyRepository object + * + * @var Object + */ + protected $attributeFamilyRepository; + + /** + * AttributeRepository object + * + * @var Object + */ + protected $attributeRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Attribute\Repositories\AttributeFamilyRepository $attributeFamilyRepository + * @param \Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @return void + */ + public function __construct( + AttributeFamilyRepository $attributeFamilyRepository, + AttributeRepository $attributeRepository + ) + { + $this->attributeFamilyRepository = $attributeFamilyRepository; + + $this->attributeRepository = $attributeRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + $attributeFamily = $this->attributeFamilyRepository->with(['attribute_groups.custom_attributes'])->findOneByField('code', 'default'); + + $custom_attributes = $this->attributeRepository->all(['id', 'code', 'admin_name', 'type']); + + return view($this->_config['view'], compact('custom_attributes', 'attributeFamily')); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'code' => ['required', 'unique:attribute_families,code', new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required' + ]); + + $attributeFamily = $this->attributeFamilyRepository->create(request()->all()); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Family'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $attributeFamily = $this->attributeFamilyRepository->with(['attribute_groups.custom_attributes'])->findOrFail($id, ['*']); + + $custom_attributes = $this->attributeRepository->all(['id', 'code', 'admin_name', 'type']); + + return view($this->_config['view'], compact('attributeFamily', 'custom_attributes')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $this->validate(request(), [ + 'code' => ['required', 'unique:attribute_families,code,' . $id, new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required' + ]); + + $attributeFamily = $this->attributeFamilyRepository->update(request()->all(), $id); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Family'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $attributeFamily = $this->attributeFamilyRepository->findOrFail($id); + + if ($this->attributeFamilyRepository->count() == 1) { + session()->flash('error', trans('admin::app.response.last-delete-error', ['name' => 'Family'])); + + } else if ($attributeFamily->products()->count()) { + session()->flash('error', trans('admin::app.response.attribute-product-error', ['name' => 'Attribute family'])); + } else { + try { + $this->attributeFamilyRepository->delete($id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Family'])); + + return response()->json(['message' => true], 200); + } catch (\Exception $e) { + session()->flash('error', trans( 'admin::app.response.delete-failed', ['name' => 'Family'])); + } + } + + return response()->json(['message' => false], 400); + } + + /** + * Remove the specified resources from database + * + * @return response \Illuminate\Http\Response + */ + public function massDestroy() + { + $suppressFlash = false; + + if (request()->isMethod('delete')) { + $indexes = explode(',', request()->input('indexes')); + + foreach ($indexes as $key => $value) { + try { + $this->attributeFamilyRepository->delete($value); + } catch (\Exception $e) { + $suppressFlash = true; + + continue; + } + } + + if (! $suppressFlash) + session()->flash('success', ('admin::app.datagrid.mass-ops.delete-success')); + else + session()->flash('info', trans('admin::app.datagrid.mass-ops.partial-action', ['resource' => 'Attribute Family'])); + + return redirect()->back(); + } else { + session()->flash('error', trans('admin::app.datagrid.mass-ops.method-error')); + + return redirect()->back(); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Http/Controllers/Controller.php b/packages/Webkul/Attribute/src/Http/Controllers/Controller.php new file mode 100755 index 000000000..0d3d3595f --- /dev/null +++ b/packages/Webkul/Attribute/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ +hasMany(AttributeOptionProxy::modelClass()); + } + + /** + * Scope a query to only include popular users. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeFilterableAttributes($query) + { + return $query->where('is_filterable', 1)->where('swatch_type', '<>', 'image')->orderBy('position'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Models/AttributeFamily.php b/packages/Webkul/Attribute/src/Models/AttributeFamily.php new file mode 100755 index 000000000..7146bf597 --- /dev/null +++ b/packages/Webkul/Attribute/src/Models/AttributeFamily.php @@ -0,0 +1,58 @@ +join('attribute_groups', 'attribute_group_mappings.attribute_group_id', '=', 'attribute_groups.id') + ->join('attribute_families', 'attribute_groups.attribute_family_id', '=', 'attribute_families.id') + ->where('attribute_families.id', $this->id) + ->select('attributes.*'); + } + + /** + * Get all of the attributes for the attribute groups. + */ + public function getCustomAttributesAttribute() + { + return $this->custom_attributes()->get(); + } + + /** + * Get all of the attribute groups. + */ + public function attribute_groups() + { + return $this->hasMany(AttributeGroupProxy::modelClass())->orderBy('position'); + } + + /** + * Get all of the attributes for the attribute groups. + */ + public function getConfigurableAttributesAttribute() + { + return $this->custom_attributes()->where('attributes.is_configurable', 1)->where('attributes.type', 'select')->get(); + } + + /** + * Get all of the products. + */ + public function products() + { + return $this->hasMany(ProductProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Models/AttributeFamilyProxy.php b/packages/Webkul/Attribute/src/Models/AttributeFamilyProxy.php new file mode 100644 index 000000000..3e6492a35 --- /dev/null +++ b/packages/Webkul/Attribute/src/Models/AttributeFamilyProxy.php @@ -0,0 +1,10 @@ +belongsToMany(AttributeProxy::modelClass(), 'attribute_group_mappings') + ->withPivot('position') + ->orderBy('pivot_position', 'asc'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Models/AttributeGroupProxy.php b/packages/Webkul/Attribute/src/Models/AttributeGroupProxy.php new file mode 100644 index 000000000..09350d397 --- /dev/null +++ b/packages/Webkul/Attribute/src/Models/AttributeGroupProxy.php @@ -0,0 +1,10 @@ +belongsTo(AttributeProxy::modelClass()); + } + + /** + * Get image url for the swatch value url. + */ + public function swatch_value_url() + { + if ($this->swatch_value && $this->attribute->swatch_type == 'image') + return Storage::url($this->swatch_value); + + return; + } + + /** + * Get image url for the product image. + */ + public function getSwatchValueUrlAttribute() + { + return $this->swatch_value_url(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Models/AttributeOptionProxy.php b/packages/Webkul/Attribute/src/Models/AttributeOptionProxy.php new file mode 100644 index 000000000..5a2a4c102 --- /dev/null +++ b/packages/Webkul/Attribute/src/Models/AttributeOptionProxy.php @@ -0,0 +1,10 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + + $this->app->make(EloquentFactory::class)->load(__DIR__ . '/../Database/Factories'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Providers/ModuleServiceProvider.php b/packages/Webkul/Attribute/src/Providers/ModuleServiceProvider.php new file mode 100644 index 000000000..91b0d1c23 --- /dev/null +++ b/packages/Webkul/Attribute/src/Providers/ModuleServiceProvider.php @@ -0,0 +1,17 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AttributeFamilyRepository extends Repository +{ + /** + * AttributeRepository object + * + * @var Object + */ + protected $attributeRepository; + + /** + * AttributeGroupRepository object + * + * @var Object + */ + protected $attributeGroupRepository; + + /** + * Create a new controller instance. + * + * @param Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @param Webkul\Attribute\Repositories\AttributeGroupRepository $attributeGroupRepository + * @return void + */ + public function __construct( + AttributeRepository $attributeRepository, + AttributeGroupRepository $attributeGroupRepository, + App $app + ) + { + $this->attributeRepository = $attributeRepository; + + $this->attributeGroupRepository = $attributeGroupRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Attribute\Contracts\AttributeFamily'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + Event::dispatch('catalog.attribute_family.create.before'); + + $attributeGroups = isset($data['attribute_groups']) ? $data['attribute_groups'] : []; + unset($data['attribute_groups']); + $family = $this->model->create($data); + + foreach ($attributeGroups as $group) { + $custom_attributes = isset($group['custom_attributes']) ? $group['custom_attributes'] : []; + unset($group['custom_attributes']); + $attributeGroup = $family->attribute_groups()->create($group); + + foreach ($custom_attributes as $key => $attribute) { + if (isset($attribute['id'])) { + $attributeModel = $this->attributeRepository->find($attribute['id']); + } else { + $attributeModel = $this->attributeRepository->findOneByField('code', $attribute['code']); + } + + $attributeGroup->custom_attributes()->save($attributeModel, ['position' => $key + 1]); + } + } + + Event::dispatch('catalog.attribute_family.create.after', $family); + + return $family; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute = "id") + { + $family = $this->find($id); + + Event::dispatch('catalog.attribute_family.update.before', $id); + + $family->update($data); + + $previousAttributeGroupIds = $family->attribute_groups()->pluck('id'); + + if (isset($data['attribute_groups'])) { + foreach ($data['attribute_groups'] as $attributeGroupId => $attributeGroupInputs) { + if (Str::contains($attributeGroupId, 'group_')) { + $attributeGroup = $family->attribute_groups()->create($attributeGroupInputs); + + if (isset($attributeGroupInputs['custom_attributes'])) { + foreach ($attributeGroupInputs['custom_attributes'] as $key => $attribute) { + $attributeModel = $this->attributeRepository->find($attribute['id']); + $attributeGroup->custom_attributes()->save($attributeModel, ['position' => $key + 1]); + } + } + } else { + if (is_numeric($index = $previousAttributeGroupIds->search($attributeGroupId))) { + $previousAttributeGroupIds->forget($index); + } + + $attributeGroup = $this->attributeGroupRepository->find($attributeGroupId); + $attributeGroup->update($attributeGroupInputs); + + $attributeIds = $attributeGroup->custom_attributes()->get()->pluck('id'); + + if (isset($attributeGroupInputs['custom_attributes'])) { + foreach ($attributeGroupInputs['custom_attributes'] as $key => $attribute) { + if (is_numeric($index = $attributeIds->search($attribute['id']))) { + $attributeIds->forget($index); + } else { + $attributeModel = $this->attributeRepository->find($attribute['id']); + $attributeGroup->custom_attributes()->save($attributeModel, ['position' => $key + 1]); + } + } + } + + if ($attributeIds->count()) { + $attributeGroup->custom_attributes()->detach($attributeIds); + } + } + } + } + + foreach ($previousAttributeGroupIds as $attributeGroupId) { + $this->attributeGroupRepository->delete($attributeGroupId); + } + + Event::dispatch('catalog.attribute_family.update.after', $family); + + return $family; + } + + public function getPartial() + { + $attributeFamilies = $this->model->all(); + $trimmed = array(); + + foreach ($attributeFamilies as $key => $attributeFamily) { + if ($attributeFamily->name != null || $attributeFamily->name != "") { + $trimmed[$key] = [ + 'id' => $attributeFamily->id, + 'code' => $attributeFamily->code, + 'name' => $attributeFamily->name + ]; + } + } + + return $trimmed; + } + + /** + * @param $id + * @return void + */ + public function delete($id) + { + Event::dispatch('catalog.attribute_family.delete.before', $id); + + parent::delete($id); + + Event::dispatch('catalog.attribute_family.delete.after', $id); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Repositories/AttributeGroupRepository.php b/packages/Webkul/Attribute/src/Repositories/AttributeGroupRepository.php new file mode 100755 index 000000000..7f0bc0ed6 --- /dev/null +++ b/packages/Webkul/Attribute/src/Repositories/AttributeGroupRepository.php @@ -0,0 +1,25 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AttributeGroupRepository extends Repository +{ + + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Attribute\Contracts\AttributeGroup'; + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Repositories/AttributeOptionRepository.php b/packages/Webkul/Attribute/src/Repositories/AttributeOptionRepository.php new file mode 100755 index 000000000..2e2238b53 --- /dev/null +++ b/packages/Webkul/Attribute/src/Repositories/AttributeOptionRepository.php @@ -0,0 +1,70 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AttributeOptionRepository extends Repository +{ + + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Attribute\Contracts\AttributeOption'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + $option = parent::create($data); + + $this->uploadSwatchImage($data, $option->id); + + return $option; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute = "id") + { + $option = parent::update($data, $id); + + $this->uploadSwatchImage($data, $id); + + return $option; + } + + /** + * @param array $data + * @param mixed $optionId + * @return mixed + */ + public function uploadSwatchImage($data, $optionId) + { + if (! isset($data['swatch_value']) || ! $data['swatch_value']) + return; + + if ($data['swatch_value'] instanceof \Illuminate\Http\UploadedFile) { + parent::update([ + 'swatch_value' => $data['swatch_value']->store('attribute_option') + ], $optionId); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Repositories/AttributeRepository.php b/packages/Webkul/Attribute/src/Repositories/AttributeRepository.php new file mode 100755 index 000000000..1f6dffc56 --- /dev/null +++ b/packages/Webkul/Attribute/src/Repositories/AttributeRepository.php @@ -0,0 +1,258 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AttributeRepository extends Repository +{ + /** + * AttributeOptionRepository object + * + * @var Object + */ + protected $attributeOptionRepository; + + /** + * Create a new repository instance. + * + * @param Webkul\Attribute\Repositories\AttributeOptionRepository $attributeOptionRepository + * @return void + */ + public function __construct( + AttributeOptionRepository $attributeOptionRepository, + App $app + ) + { + $this->attributeOptionRepository = $attributeOptionRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Attribute\Contracts\Attribute'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + Event::dispatch('catalog.attribute.create.before'); + + $data = $this->validateUserInput($data); + + $options = isset($data['options']) ? $data['options'] : []; + unset($data['options']); + $attribute = $this->model->create($data); + + if (in_array($attribute->type, ['select', 'multiselect', 'checkbox']) && count($options)) { + foreach ($options as $optionInputs) { + $this->attributeOptionRepository->create(array_merge([ + 'attribute_id' => $attribute->id + ], $optionInputs)); + } + } + + Event::dispatch('catalog.attribute.create.after', $attribute); + + return $attribute; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute = "id") + { + $data = $this->validateUserInput($data); + + $attribute = $this->find($id); + + Event::dispatch('catalog.attribute.update.before', $id); + + $attribute->update($data); + + $previousOptionIds = $attribute->options()->pluck('id'); + + if (in_array($attribute->type, ['select', 'multiselect', 'checkbox'])) { + if (isset($data['options'])) { + foreach ($data['options'] as $optionId => $optionInputs) { + if (Str::contains($optionId, 'option_')) { + $this->attributeOptionRepository->create(array_merge([ + 'attribute_id' => $attribute->id, + ], $optionInputs)); + } else { + if (is_numeric($index = $previousOptionIds->search($optionId))) { + $previousOptionIds->forget($index); + } + + $this->attributeOptionRepository->update($optionInputs, $optionId); + } + } + } + } + + foreach ($previousOptionIds as $optionId) { + $this->attributeOptionRepository->delete($optionId); + } + + Event::dispatch('catalog.attribute.update.after', $attribute); + + return $attribute; + } + + /** + * @param $id + * @return void + */ + public function delete($id) + { + Event::dispatch('catalog.attribute.delete.before', $id); + + parent::delete($id); + + Event::dispatch('catalog.attribute.delete.after', $id); + } + + /** + * @param array $data + * @return array + */ + public function validateUserInput($data) + { + if ($data['is_configurable']) { + $data['value_per_channel'] = $data['value_per_locale'] = 0; + } + + if (! in_array($data['type'], ['select', 'multiselect', 'price'])) { + $data['is_filterable'] = 0; + } + + if (in_array($data['type'], ['select', 'multiselect', 'boolean'])) { + unset($data['value_per_locale']); + } + + return $data; + } + + /** + * @return array + */ + public function getFilterAttributes() + { + return $this->model->where('is_filterable', 1)->with('options')->get(); + } + + /** + * @return array + */ + public function getProductDefaultAttributes($codes = null) + { + $attributeColumns = ['id', 'code', 'value_per_channel', 'value_per_locale', 'type', 'is_filterable']; + + if (! is_array($codes) && ! $codes) + return $this->findWhereIn('code', [ + 'name', + 'description', + 'short_description', + 'url_key', + 'price', + 'special_price', + 'special_price_from', + 'special_price_to', + 'status' + ], $attributeColumns); + + if (in_array('*', $codes)) + return $this->all($attributeColumns); + + return $this->findWhereIn('code', $codes, $attributeColumns); + } + + /** + * @return Object + */ + public function getAttributeByCode($code) + { + static $attributes = []; + + if (array_key_exists($code, $attributes)) + return $attributes[$code]; + + return $attributes[$code] = $this->findOneByField('code', $code); + } + + /** + * @return Object + */ + public function getFamilyAttributes($attributeFamily) + { + static $attributes = []; + + if (array_key_exists($attributeFamily->id, $attributes)) + return $attributes[$attributeFamily->id]; + + return $attributes[$attributeFamily->id] = $attributeFamily->custom_attributes; + } + + /** + * @return Object + */ + public function getPartial() + { + $attributes = $this->model->all(); + $trimmed = array(); + + foreach($attributes as $key => $attribute) { + if ($attribute->code != 'tax_category_id' + && ( + $attribute->type == 'select' + || $attribute->type == 'multiselect' + || $attribute->code == 'sku' + )) { + if ($attribute->options()->exists()) { + array_push($trimmed, [ + 'id' => $attribute->id, + 'name' => $attribute->admin_name, + 'type' => $attribute->type, + 'code' => $attribute->code, + 'has_options' => true, + 'options' => $attribute->options + ]); + } else { + array_push($trimmed, [ + 'id' => $attribute->id, + 'name' => $attribute->admin_name, + 'type' => $attribute->type, + 'code' => $attribute->code, + 'has_options' => false, + 'options' => null + ]); + } + + } + } + + return $trimmed; + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/resources/manifest.php b/packages/Webkul/Attribute/src/resources/manifest.php new file mode 100644 index 000000000..5949213de --- /dev/null +++ b/packages/Webkul/Attribute/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto Attributes', + 'version' => '0.0.1' + ]; diff --git a/packages/Webkul/CMS/composer.json b/packages/Webkul/CMS/composer.json new file mode 100644 index 000000000..9ecd07c1c --- /dev/null +++ b/packages/Webkul/CMS/composer.json @@ -0,0 +1,27 @@ +{ + "name": "bagisto/laravel-cms", + "license": "MIT", + "authors": [ + { + "name": "Prashant Singh", + "email": "prashant.singh852@webkul.com" + } + ], + "require": { + "konekt/concord": "^1.2" + }, + "autoload": { + "psr-4": { + "Webkul\\CMS\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\CMS\\Providers\\CMSServiceProvider" + ], + "aliases": {} + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/CMS/src/Contracts/CmsPage.php b/packages/Webkul/CMS/src/Contracts/CmsPage.php new file mode 100644 index 000000000..4d7fc4ad3 --- /dev/null +++ b/packages/Webkul/CMS/src/Contracts/CmsPage.php @@ -0,0 +1,7 @@ +increments('id'); + $table->string('url_key')->nullable(); + $table->longtext('html_content'); + $table->string('page_title'); + $table->string('meta_title'); + $table->text('meta_description')->nullable(); + $table->text('meta_keywords')->nullable(); + $table->json('content')->nullable(); + $table->string('layout')->nullable(); + $table->integer('channel_id')->unsigned(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + $table->integer('locale_id')->unsigned(); + $table->foreign('locale_id')->references('id')->on('locales')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cms_pages'); + } +} diff --git a/packages/Webkul/CMS/src/Database/Migrations/2020_01_14_191854_create_cms_page_translations_table.php b/packages/Webkul/CMS/src/Database/Migrations/2020_01_14_191854_create_cms_page_translations_table.php new file mode 100644 index 000000000..40dad61a5 --- /dev/null +++ b/packages/Webkul/CMS/src/Database/Migrations/2020_01_14_191854_create_cms_page_translations_table.php @@ -0,0 +1,41 @@ +increments('id'); + $table->string('page_title'); + $table->string('url_key'); + $table->text('html_content')->nullable(); + $table->text('meta_title')->nullable(); + $table->text('meta_description')->nullable(); + $table->text('meta_keywords')->nullable(); + $table->string('locale'); + + $table->integer('cms_page_id')->unsigned(); + $table->unique(['cms_page_id', 'url_key', 'locale']); + $table->foreign('cms_page_id')->references('id')->on('cms_pages')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cms_page_translations'); + } +} diff --git a/packages/Webkul/CMS/src/Database/Migrations/2020_01_14_192206_remove_columns_from_cms_pages_table.php b/packages/Webkul/CMS/src/Database/Migrations/2020_01_14_192206_remove_columns_from_cms_pages_table.php new file mode 100644 index 000000000..9c7a99041 --- /dev/null +++ b/packages/Webkul/CMS/src/Database/Migrations/2020_01_14_192206_remove_columns_from_cms_pages_table.php @@ -0,0 +1,34 @@ +dropForeign('cms_pages_locale_id_foreign'); + $table->dropForeign('cms_pages_channel_id_foreign'); + $table->dropColumn(['url_key', 'html_content', 'page_title', 'meta_title', 'meta_description', 'meta_keywords', 'content', 'locale_id', 'channel_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('cms_pages', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/CMS/src/Database/Migrations/2020_01_15_130209_create_cms_page_channels_table.php b/packages/Webkul/CMS/src/Database/Migrations/2020_01_15_130209_create_cms_page_channels_table.php new file mode 100644 index 000000000..33b72550b --- /dev/null +++ b/packages/Webkul/CMS/src/Database/Migrations/2020_01_15_130209_create_cms_page_channels_table.php @@ -0,0 +1,35 @@ +integer('cms_page_id')->unsigned(); + $table->integer('channel_id')->unsigned(); + + $table->unique(['cms_page_id', 'channel_id']); + $table->foreign('cms_page_id')->references('id')->on('cms_pages')->onDelete('cascade'); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cms_page_channels'); + } +} diff --git a/packages/Webkul/CMS/src/Database/Seeders/CMSPagesTableSeeder.php b/packages/Webkul/CMS/src/Database/Seeders/CMSPagesTableSeeder.php new file mode 100644 index 000000000..c8ab922f7 --- /dev/null +++ b/packages/Webkul/CMS/src/Database/Seeders/CMSPagesTableSeeder.php @@ -0,0 +1,113 @@ +delete(); + + DB::table('cms_pages')->insert([ + [ + 'id' => 1, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() + ], [ + 'id' => 2, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() + ], [ + 'id' => 3, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() + ], [ + 'id' => 4, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() + ], [ + 'id' => 5, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() + ], [ + 'id' => 6, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() + ] + ]); + + DB::table('cms_page_translations')->insert([ + [ + 'locale' => 'en', + 'cms_page_id' => 1, + 'url_key' => 'about-us', + 'html_content' => '
+
About us page content
+
', + 'page_title' => 'About Us', + 'meta_title' => 'about us', + 'meta_description' => '', + 'meta_keywords' => 'aboutus' + ], [ + 'locale' => 'en', + 'cms_page_id' => 2, + 'url_key' => 'return-policy', + 'html_content' => '
+
Return policy page content
+
', + 'page_title' => 'Return Policy', + 'meta_title' => 'return policy', + 'meta_description' => '', + 'meta_keywords' => 'return, policy' + ], [ + 'locale' => 'en', + 'cms_page_id' => 3, + 'url_key' => 'refund-policy', + 'html_content' => '
+
Refund policy page content
+
', + 'page_title' => 'Refund Policy', + 'meta_title' => 'Refund policy', + 'meta_description' => '', + 'meta_keywords' => 'refund, policy' + ], [ + 'locale' => 'en', + 'cms_page_id' => 4, + 'url_key' => 'terms-conditions', + 'html_content' => '
+
Terms & conditions page content
+
', + 'page_title' => 'Terms & Conditions', + 'meta_title' => 'Terms & Conditions', + 'meta_description' => '', + 'meta_keywords' => 'term, conditions' + ], [ + 'locale' => 'en', + 'cms_page_id' => 5, + 'url_key' => 'terms-of-use', + 'html_content' => '
+
Terms of use page content
+
', + 'page_title' => 'Terms of use', + 'meta_title' => 'Terms of use', + 'meta_description' => '', + 'meta_keywords' => 'term, use' + ], [ + 'locale' => 'en', + 'cms_page_id' => 6, + 'url_key' => 'contact-us', + 'html_content' => '
+
Contact us page content
+
', + 'page_title' => 'Contact Us', + 'meta_title' => 'Contact Us', + 'meta_description' => '', + 'meta_keywords' => 'contact, us' + ] + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/CMS/src/Database/Seeders/DatabaseSeeder.php b/packages/Webkul/CMS/src/Database/Seeders/DatabaseSeeder.php new file mode 100644 index 000000000..3111413dd --- /dev/null +++ b/packages/Webkul/CMS/src/Database/Seeders/DatabaseSeeder.php @@ -0,0 +1,18 @@ +call(CMSPagesTableSeeder::class); + } +} \ No newline at end of file diff --git a/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php b/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php new file mode 100644 index 000000000..4f1189a49 --- /dev/null +++ b/packages/Webkul/CMS/src/Http/Controllers/Admin/PageController.php @@ -0,0 +1,189 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + class PageController extends Controller +{ + /** + * To hold the request variables from route file + * + * @var array + */ + protected $_config; + + /** + * To hold the CMSRepository instance + * + * @var Object + */ + protected $cmsRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\CMS\Repositories\CmsRepository $cmsRepository + * @return void + */ + public function __construct(CmsRepository $cmsRepository) + { + $this->middleware('admin'); + + $this->cmsRepository = $cmsRepository; + + $this->_config = request('_config'); + } + + /** + * Loads the index page showing the static pages resources + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * To create a new CMS page + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * To store a new CMS page in storage + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $data = request()->all(); + + $this->validate(request(), [ + 'url_key' => ['required', 'unique:cms_page_translations,url_key', new \Webkul\Core\Contracts\Validations\Slug], + 'page_title' => 'required', + 'channels' => 'required', + 'html_content' => 'required' + ]); + + $page = $this->cmsRepository->create(request()->all()); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'page'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * To edit a previously created CMS page + * + * @param integer $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $page = $this->cmsRepository->findOrFail($id); + + return view($this->_config['view'], compact('page')); + } + + /** + * To update the previously created CMS page in storage + * + * @param integer $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $locale = request()->get('locale') ?: app()->getLocale(); + + $this->validate(request(), [ + $locale . '.url_key' => ['required', new \Webkul\Core\Contracts\Validations\Slug, function ($attribute, $value, $fail) use ($id) { + if (! $this->cmsRepository->isUrlKeyUnique($id, $value)) + $fail(trans('admin::app.response.already-taken', ['name' => 'Page'])); + }], + $locale . '.page_title' => 'required', + $locale . '.html_content' => 'required', + 'channels' => 'required' + ]); + + $this->cmsRepository->update(request()->all(), $id); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Page'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * To delete the previously create CMS page + * + * @param integer $id + * + * @return \Illuminate\Http\Response + */ + public function delete($id) + { + $page = $this->cmsRepository->findOrFail($id); + + if ($page->delete()) { + session()->flash('success', trans('admin::app.cms.pages.delete-success')); + + return response()->json(['message' => true], 200); + } else { + session()->flash('success', trans('admin::app.cms.pages.delete-failure')); + + return response()->json(['message' => false], 200); + } + } + + /** + * To mass delete the CMS resource from storage + * + * @return \Illuminate\Http\Response + */ + public function massDelete() + { + $data = request()->all(); + + if ($data['indexes']) { + $pageIDs = explode(',', $data['indexes']); + + $count = 0; + + foreach ($pageIDs as $pageId) { + $page = $this->cmsRepository->find($pageId); + + if ($page) { + $page->delete(); + + $count++; + } + } + + if (count($pageIDs) == $count) { + session()->flash('success', trans('admin::app.datagrid.mass-ops.delete-success', [ + 'resource' => 'CMS Pages' + ])); + } else { + session()->flash('success', trans('admin::app.datagrid.mass-ops.partial-action', [ + 'resource' => 'CMS Pages' + ])); + } + } else { + session()->flash('warning', trans('admin::app.datagrid.mass-ops.no-resource')); + } + + return redirect()->route('admin.cms.index'); + } +} \ No newline at end of file diff --git a/packages/Webkul/CMS/src/Http/Controllers/Controller.php b/packages/Webkul/CMS/src/Http/Controllers/Controller.php new file mode 100644 index 000000000..1abdaf472 --- /dev/null +++ b/packages/Webkul/CMS/src/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class PagePresenterController extends Controller +{ + /** + * CmsRepository object + * + * @var Object + */ + protected $cmsRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\CMS\Repositories\CmsRepository $cmsRepository + * @return void + */ + public function __construct(CmsRepository $cmsRepository) + { + $this->cmsRepository = $cmsRepository; + } + + /** + * To extract the page content and load it in the respective view file + * + * @param string $urlKey + * @return \Illuminate\View\View + */ + public function presenter($urlKey) + { + $page = $this->cmsRepository->findByUrlKeyOrFail($urlKey); + + return view('shop::cms.page')->with('page', $page); + } +} \ No newline at end of file diff --git a/packages/Webkul/CMS/src/Models/CmsPage.php b/packages/Webkul/CMS/src/Models/CmsPage.php new file mode 100644 index 000000000..bfe00f1d6 --- /dev/null +++ b/packages/Webkul/CMS/src/Models/CmsPage.php @@ -0,0 +1,24 @@ +belongsToMany(ChannelProxy::modelClass(), 'cms_page_channels'); + } +} \ No newline at end of file diff --git a/packages/Webkul/CMS/src/Models/CmsPageProxy.php b/packages/Webkul/CMS/src/Models/CmsPageProxy.php new file mode 100644 index 000000000..3949300c7 --- /dev/null +++ b/packages/Webkul/CMS/src/Models/CmsPageProxy.php @@ -0,0 +1,10 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + } +} \ No newline at end of file diff --git a/packages/Webkul/CMS/src/Providers/ModuleServiceProvider.php b/packages/Webkul/CMS/src/Providers/ModuleServiceProvider.php new file mode 100644 index 000000000..cc68c5e5a --- /dev/null +++ b/packages/Webkul/CMS/src/Providers/ModuleServiceProvider.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CmsRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\CMS\Contracts\CmsPage'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + Event::fire('cms.pages.create.before'); + + $model = $this->getModel(); + + foreach (core()->getAllLocales() as $locale) { + foreach ($model->translatedAttributes as $attribute) { + if (isset($data[$attribute])) + $data[$locale->code][$attribute] = $data[$attribute]; + } + } + + $page = parent::create($data); + + $page->channels()->sync($data['channels']); + + Event::fire('cms.pages.create.after', $page); + + return $page; + } + + /** + * @param array $data + * @param integer $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute = "id") + { + $page = $this->find($id); + + Event::fire('cms.pages.update.before', $id); + + parent::update($data, $id, $attribute); + + $page->channels()->sync($data['channels']); + + Event::fire('cms.pages.update.after', $id); + + return $page; + } + + /** + * Checks slug is unique or not based on locale + * + * @param integer $id + * @param string $urlKey + * @return boolean + */ + public function isUrlKeyUnique($id, $urlKey) + { + $exists = CmsPageTranslation::where('cms_page_id', '<>', $id) + ->where('url_key', $urlKey) + ->limit(1) + ->select(\DB::raw(1)) + ->exists(); + + return $exists ? false : true; + } + + /** + * Retrive category from slug + * + * @param string $urlKey + * @return mixed + */ + public function findByUrlKeyOrFail($urlKey) + { + $page = $this->model->whereTranslation('url_key', $urlKey)->first(); + + if ($page) + return $page; + + throw (new ModelNotFoundException)->setModel( + get_class($this->model), $urlKey + ); + } +} \ No newline at end of file diff --git a/packages/Webkul/CMS/src/resources/manifest.php b/packages/Webkul/CMS/src/resources/manifest.php new file mode 100644 index 000000000..93bd520c2 --- /dev/null +++ b/packages/Webkul/CMS/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto Cms', + 'version' => '0.0.1' + ]; diff --git a/packages/Webkul/CartRule/src/Contracts/CartRule.php b/packages/Webkul/CartRule/src/Contracts/CartRule.php new file mode 100644 index 000000000..bbc60e2e2 --- /dev/null +++ b/packages/Webkul/CartRule/src/Contracts/CartRule.php @@ -0,0 +1,7 @@ +increments('id'); + $table->string('name')->nullable(); + $table->string('description')->nullable(); + $table->date('starts_from')->nullable(); + $table->date('ends_till')->nullable(); + $table->boolean('status')->default(0); + $table->integer('coupon_type')->default(1); + $table->boolean('use_auto_generation')->default(0); + $table->integer('usage_per_customer')->default(0); + $table->integer('uses_per_coupon')->default(0); + $table->integer('times_used')->unsigned()->default(0); + $table->boolean('condition_type')->default(1); + $table->json('conditions')->nullable(); + $table->boolean('end_other_rules')->default(0); + $table->boolean('uses_attribute_conditions')->default(0); + $table->string('action_type')->nullable(); + $table->decimal('discount_amount', 12, 4)->default(0); + $table->integer('discount_quantity')->default(1); + $table->string('discount_step')->default(1); + $table->boolean('apply_to_shipping')->default(0); + $table->boolean('free_shipping')->default(0); + $table->integer('sort_order')->unsigned()->default(0); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart_rules'); + } +} diff --git a/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024322_create_cart_rule_channels_table.php b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024322_create_cart_rule_channels_table.php new file mode 100644 index 000000000..067a452fa --- /dev/null +++ b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024322_create_cart_rule_channels_table.php @@ -0,0 +1,36 @@ +integer('cart_rule_id')->unsigned(); + $table->integer('channel_id')->unsigned(); + + $table->primary(['cart_rule_id', 'channel_id']); + + $table->foreign('cart_rule_id')->references('id')->on('cart_rules')->onDelete('cascade'); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart_rule_channels'); + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024323_create_cart_rule_customer_groups_table.php b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024323_create_cart_rule_customer_groups_table.php new file mode 100644 index 000000000..312237d98 --- /dev/null +++ b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024323_create_cart_rule_customer_groups_table.php @@ -0,0 +1,37 @@ +integer('cart_rule_id')->unsigned(); + $table->integer('customer_group_id')->unsigned(); + + + $table->primary(['cart_rule_id', 'customer_group_id']); + + $table->foreign('cart_rule_id')->references('id')->on('cart_rules')->onDelete('cascade'); + $table->foreign('customer_group_id')->references('id')->on('customer_groups')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart_rule_customer_groups'); + } +} diff --git a/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024324_create_cart_rule_translations_table.php b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024324_create_cart_rule_translations_table.php new file mode 100644 index 000000000..9c71333d7 --- /dev/null +++ b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024324_create_cart_rule_translations_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('locale'); + $table->text('label')->nullable(); + $table->integer('cart_rule_id')->unsigned(); + $table->unique(['cart_rule_id', 'locale']); + $table->foreign('cart_rule_id')->references('id')->on('cart_rules')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart_rule_translations'); + } +} diff --git a/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024325_create_cart_rule_customers_table.php b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024325_create_cart_rule_customers_table.php new file mode 100644 index 000000000..a16452c6f --- /dev/null +++ b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024325_create_cart_rule_customers_table.php @@ -0,0 +1,37 @@ +increments('id'); + $table->bigInteger('times_used')->unsigned()->default(0); + + $table->integer('cart_rule_id')->unsigned(); + $table->foreign('cart_rule_id')->references('id')->on('cart_rules')->onDelete('cascade'); + + $table->integer('customer_id')->unsigned(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cartrule_customers'); + } +} diff --git a/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024326_create_cart_rule_coupons_table.php b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024326_create_cart_rule_coupons_table.php new file mode 100644 index 000000000..89741800e --- /dev/null +++ b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024326_create_cart_rule_coupons_table.php @@ -0,0 +1,41 @@ +increments('id'); + $table->string('code')->nullable(); + $table->integer('usage_limit')->unsigned()->default(0); + $table->integer('usage_per_customer')->unsigned()->default(0); + $table->integer('times_used')->unsigned()->default(0); + $table->integer('type')->unsigned()->default(0); + $table->boolean('is_primary')->default(0); + $table->date('expired_at')->nullable(); + + $table->integer('cart_rule_id')->unsigned(); + $table->foreign('cart_rule_id')->references('id')->on('cart_rules')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cartrule_coupons'); + } +} diff --git a/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024327_create_cart_rule_coupon_usage_table.php b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024327_create_cart_rule_coupon_usage_table.php new file mode 100644 index 000000000..ae0339b0a --- /dev/null +++ b/packages/Webkul/CartRule/src/Database/Migrations/2019_05_13_024327_create_cart_rule_coupon_usage_table.php @@ -0,0 +1,37 @@ +increments('id'); + $table->integer('times_used')->default(0); + + $table->integer('cart_rule_coupon_id')->unsigned(); + $table->foreign('cart_rule_coupon_id')->references('id')->on('cart_rule_coupons')->onDelete('cascade'); + + $table->integer('customer_id')->unsigned(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart_rule_coupon_usage'); + } +} diff --git a/packages/Webkul/CartRule/src/Helpers/CartRule.php b/packages/Webkul/CartRule/src/Helpers/CartRule.php new file mode 100644 index 000000000..8ad0c4dac --- /dev/null +++ b/packages/Webkul/CartRule/src/Helpers/CartRule.php @@ -0,0 +1,523 @@ +cartRuleRepository = $cartRuleRepository; + + $this->cartRuleCouponRepository = $cartRuleCouponRepository; + + $this->cartRuleCouponUsageRepository = $cartRuleCouponUsageRepository; + + $this->cartRuleCustomerRepository = $cartRuleCustomerRepository; + + $this->customerGroupRepository = $customerGroupRepository; + + $this->validator = $validator; + } + + /** + * Collect discount on cart + * + * @return void + */ + public function collect() + { + $cart = Cart::getCart(); + + $this->calculateCartItemTotals($cart->items()->get()); + + foreach ($cart->items()->get() as $item) { + $this->process($item); + + if ($item->children()->count() && $item->product->getTypeInstance()->isChildrenCalculated()) + $this->devideDiscount($item); + } + + $this->processShippingDiscount($cart); + + $this->processFreeShippingDiscount($cart); + + $this->validateCouponCode(); + } + + /** + * Returns cart rules + * + * @return Collection + */ + public function getCartRules() + { + static $cartRules; + + if ($cartRules) + return $cartRules; + + $customerGroupId = null; + + if (Cart::getCurrentCustomer()->check()) { + $customerGroupId = Cart::getCurrentCustomer()->user()->customer_group_id; + } else { + if ($customerGuestGroup = $this->customerGroupRepository->findOneByField('code', 'guest')) + $customerGroupId = $customerGuestGroup->id; + } + + $cartRules = $this->cartRuleRepository->scopeQuery(function($query) use ($customerGroupId) { + return $query->leftJoin('cart_rule_customer_groups', 'cart_rules.id', '=', 'cart_rule_customer_groups.cart_rule_id') + ->leftJoin('cart_rule_channels', 'cart_rules.id', '=', 'cart_rule_channels.cart_rule_id') + ->where('cart_rule_customer_groups.customer_group_id', $customerGroupId) + ->where('cart_rule_channels.channel_id', core()->getCurrentChannel()->id) + ->where(function ($query1) { + $query1->where('cart_rules.starts_from', '<=', Carbon::now()->format('Y-m-d'))->orWhereNull('cart_rules.starts_from'); + }) + ->where(function ($query2) { + $query2->where('cart_rules.ends_till', '>=', Carbon::now()->format('Y-m-d'))->orWhereNull('cart_rules.ends_till'); + }) + ->orderBy('sort_order', 'asc'); + })->findWhere(['status' => 1]); + + return $cartRules; + } + + /** + * Check if cart rule can be applied + * + * @param CartRule $rule + * @return boolean + */ + public function canProcessRule($rule) + { + $cart = Cart::getCart(); + + if ($rule->coupon_type) { + if (strlen($cart->coupon_code)) { + $coupon = $this->cartRuleCouponRepository->findOneWhere([ + 'cart_rule_id' => $rule->id, + 'code' => $cart->coupon_code, + ]); + + if ($coupon) { + if ($coupon->usage_limit && $coupon->times_used >= $coupon->usage_limit) + return false; + + if ($cart->customer_id && $coupon->usage_per_customer) { + $couponUsage = $this->cartRuleCouponUsageRepository->findOneWhere([ + 'cart_rule_coupon_id' => $coupon->id, + 'customer_id' => $cart->customer_id + ]); + + if ($couponUsage && $couponUsage->times_used >= $coupon->usage_per_customer) + return false; + } + } else { + return false; + } + } else { + return false; + } + } + + if ($rule->usage_per_customer) { + $ruleCustomer = $this->cartRuleCustomerRepository->findOneWhere([ + 'cart_rule_id' => $rule->id, + 'customer_id' => $cart->customer_id, + ]); + + if ($ruleCustomer && $ruleCustomer->times_used >= $rule->usage_per_customer) + return false; + } + + return true; + } + + /** + * Cart item discount calculation process + * + * @param CartItem $item + * @return void + */ + public function process($item) + { + $item->discount_percent = 0; + $item->discount_amount = 0; + $item->base_discount_amount = 0; + + $cart = $item->cart; + + $cart->applied_cart_rule_ids = null; + + $appliedRuleIds = []; + + foreach ($this->getCartRules() as $rule) { + if (! $this->canProcessRule($rule)) + continue; + + if (! $this->validator->validate($rule, $item)) + continue; + + $quantity = $rule->discount_quantity ? min($item->quantity, $rule->discount_quantity) : $item->quantity; + + $discountAmount = $baseDiscountAmount = 0; + + switch ($rule->action_type) { + case 'by_percent': + $rulePercent = min(100, $rule->discount_amount); + + $discountAmount = ($quantity * $item->price - $item->discount_amount) * ($rulePercent / 100); + + $baseDiscountAmount = ($quantity * $item->base_price - $item->base_discount_amount) * ($rulePercent / 100); + + if (! $rule->discount_quantity || $rule->discount_quantity > $quantity) { + $discountPercent = min(100, $item->discount_percent + $rulePercent); + + $item->discount_percent = $discountPercent; + } + + break; + + case 'by_fixed': + $discountAmount = $quantity * core()->convertPrice($rule->discount_amount); + + $baseDiscountAmount = $quantity * $rule->discount_amount; + + break; + + case 'cart_fixed': + if ($this->itemTotals[$rule->id]['total_items'] <= 1) { + $discountAmount = core()->convertPrice($rule->discount_amount); + + $baseDiscountAmount = min($item->base_price * $quantity, $rule->discount_amount); + } else { + $discountRate = $item->base_price * $quantity / $this->itemTotals[$rule->id]['base_total_price']; + + $maxDiscount = $rule->discount_amount * $discountRate; + + $discountAmount = core()->convertPrice($maxDiscount); + + $baseDiscountAmount = min($item->base_price * $quantity, $maxDiscount); + } + + $discountAmount = min($item->price * $quantity, $discountAmount); + + break; + + case 'buy_x_get_y': + if (! $rule->discount_step || $rule->discount_amount > $rule->discount_step) + break; + + $buyAndDiscountQty = $rule->discount_step + $rule->discount_amount; + + $qtyPeriod = floor($quantity / $buyAndDiscountQty); + + $freeQty = $quantity - $qtyPeriod * $buyAndDiscountQty; + + $discountQty = $qtyPeriod * $rule->discount_amount; + + if ($freeQty > $rule->discount_step) + $discountQty += $freeQty - $rule->discount_step; + + $discountAmount = $discountQty * $item->price; + + $baseDiscountAmount = $discountQty * $item->base_price; + + break; + } + + $item->discount_amount = min($item->discount_amount + $discountAmount, $item->price * $quantity); + $item->base_discount_amount = min($item->base_discount_amount + $baseDiscountAmount, $item->base_price * $quantity); + + $appliedRuleIds[$rule->id] = $rule->id; + + if ($rule->end_other_rules) + break; + } + + $item->applied_cart_rule_ids = join(',', $appliedRuleIds); + + $item->save(); + + $cartAppliedCartRuleIds = array_merge(explode(',', $cart->applied_cart_rule_ids), $appliedRuleIds); + + $cartAppliedCartRuleIds = array_filter($cartAppliedCartRuleIds); + + $cartAppliedCartRuleIds = array_unique($cartAppliedCartRuleIds); + + $cart->applied_cart_rule_ids = join(',', $cartAppliedCartRuleIds); + + $cart->save(); + } + + /** + * Cart shipping discount calculation process + * + * @param Cart $cart + * @return void + */ + public function processShippingDiscount($cart) + { + if (! $selectedShipping = $cart->selected_shipping_rate) + return; + + $selectedShipping->discount_amount = 0; + $selectedShipping->base_discount_amount = 0; + + $appliedRuleIds = []; + + foreach ($this->getCartRules() as $rule) { + if (! $this->canProcessRule($rule)) + continue; + + if (! $this->validator->validate($rule, $cart)) + continue; + + if (! $rule || ! $rule->apply_to_shipping) + continue; + + $discountAmount = $baseDiscountAmount = 0; + + switch ($rule->action_type) { + case 'by_percent': + $rulePercent = min(100, $rule->discount_amount); + + $discountAmount = ($selectedShipping->price - $selectedShipping->discount_amount) * $rulePercent / 100; + + $baseDiscountAmount = ($selectedShipping->base_price - $selectedShipping->base_discount_amount) * $rulePercent / 100; + + break; + + case 'by_fixed': + $discountAmount = core()->convertPrice($rule->discount_amount); + + $baseDiscountAmount = $rule->discount_amount; + + break; + } + + $selectedShipping->discount_amount = min($selectedShipping->discount_amount + $discountAmount, $selectedShipping->price); + + $selectedShipping->base_discount_amount = min( + $selectedShipping->base_discount_amount + $baseDiscountAmount, + $selectedShipping->base_price + ); + + $selectedShipping->save(); + + $appliedRuleIds[$rule->id] = $rule->id; + + if ($rule->end_other_rules) + break; + } + + $selectedShipping->save(); + + $cartAppliedCartRuleIds = array_merge(explode(',', $cart->applied_cart_rule_ids), $appliedRuleIds); + + $cartAppliedCartRuleIds = array_filter($cartAppliedCartRuleIds); + + $cartAppliedCartRuleIds = array_unique($cartAppliedCartRuleIds); + + $cart->applied_cart_rule_ids = join(',', $cartAppliedCartRuleIds); + + $cart->save(); + + return $this; + } + + /** + * Cart free shipping discount calculation process + * + * @param Cart $cart + * @return void + */ + public function processFreeShippingDiscount($cart) + { + if (! $selectedShipping = $cart->selected_shipping_rate) + return; + + $selectedShipping->discount_amount = 0; + + $selectedShipping->base_discount_amount = 0; + + $appliedRuleIds = []; + + foreach ($this->getCartRules() as $rule) { + if (! $this->canProcessRule($rule)) + continue; + + if (! $this->validator->validate($rule, $cart)) + continue; + + if (! $rule || ! $rule->free_shipping) + continue; + + $selectedShipping->price = 0; + + $selectedShipping->base_price = 0; + + $selectedShipping->save(); + + $appliedRuleIds[$rule->id] = $rule->id; + + if ($rule->end_other_rules) + break; + } + + $cartAppliedCartRuleIds = array_merge(explode(',', $cart->applied_cart_rule_ids), $appliedRuleIds); + + $cartAppliedCartRuleIds = array_filter($cartAppliedCartRuleIds); + + $cartAppliedCartRuleIds = array_unique($cartAppliedCartRuleIds); + + $cart->applied_cart_rule_ids = join(',', $cartAppliedCartRuleIds); + + $cart->save(); + } + + /** + * Calculate cart item totals for each rule + * + * @param mixed $items + * @return Validator + */ + public function calculateCartItemTotals($items) + { + foreach ($this->getCartRules() as $rule) { + if ($rule->action_type == 'cart_fixed') { + $totalPrice = $totalBasePrice = $validCount = 0; + + foreach ($items as $item) { + if (! $this->canProcessRule($rule, $item)) + continue; + + $quantity = $rule->discount_quantity ? min($item->quantity, $rule->discount_quantity) : $item->quantity; + + $totalBasePrice += $item->base_price * $quantity; + + $validCount++; + } + + $this->itemTotals[$rule->id] = [ + 'base_total_price' => $totalBasePrice, + 'total_items' => $validCount, + ]; + } + } + } + + /** + * Check if coupon code is valid or not, if not remove from cart + * + * @return void + */ + public function validateCouponCode() + { + $cart = Cart::getCart(); + + if (! $cart->coupon_code) + return; + + $coupon = $this->cartRuleCouponRepository->findOneByField('code', $cart->coupon_code); + + if (! $coupon || ! in_array($coupon->cart_rule_id, explode(',', $cart->applied_cart_rule_ids))) + Cart::removeCouponCode(); + } + + /** + * Devide discount amount to children + * + * @param CartItem $item + * @return void + */ + protected function devideDiscount($item) + { + foreach ($item->children as $child) { + $ratio = $item->base_total != 0 ? $child->base_total / $item->base_total : 0; + + foreach (['discount_amount', 'base_discount_amount'] as $column) { + if (! $item->{$column}) + continue; + + $child->{$column} = round(($item->{$column} * $ratio), 4); + + $child->save(); + } + } + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php new file mode 100644 index 000000000..dc90a01b5 --- /dev/null +++ b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php @@ -0,0 +1,206 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CartRuleController extends Controller +{ + /** + * Initialize _config, a default request parameter with route + * + * @param array + */ + protected $_config; + + /** + * To hold Cart repository instance + * + * @var CartRuleRepository + */ + protected $cartRuleRepository; + + /** + * To hold CartRuleCouponRepository repository instance + * + * @var CartRuleCouponRepository + */ + protected $cartRuleCouponRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\CartRule\Repositories\CartRuleRepository $cartRuleRepository + * @param \Webkul\CartRule\Repositories\CartRuleCouponRepository $cartRuleCouponRepository + * @return void + */ + public function __construct( + CartRuleRepository $cartRuleRepository, + CartRuleCouponRepository $cartRuleCouponRepository + ) + { + $this->_config = request('_config'); + + $this->cartRuleRepository = $cartRuleRepository; + + $this->cartRuleCouponRepository = $cartRuleCouponRepository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'name' => 'required', + 'channels' => 'required|array|min:1', + 'customer_groups' => 'required|array|min:1', + 'coupon_type' => 'required', + 'use_auto_generation' => 'required_if:coupon_type,==,1', + 'coupon_code' => 'required_if:use_auto_generation,==,0', + 'starts_from' => 'nullable|date', + 'ends_till' => 'nullable|date|after_or_equal:starts_from', + 'action_type' => 'required', + 'discount_amount' => 'required|numeric' + ]); + + $data = request()->all(); + + Event::fire('promotions.cart_rule.create.before'); + + $cartRule = $this->cartRuleRepository->create($data); + + Event::fire('promotions.cart_rule.create.after', $cartRule); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Cart Rule'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $cartRule = $this->cartRuleRepository->findOrFail($id); + + return view($this->_config['view'], compact('cartRule')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $this->validate(request(), [ + 'name' => 'required', + 'channels' => 'required|array|min:1', + 'customer_groups' => 'required|array|min:1', + 'coupon_type' => 'required', + 'use_auto_generation' => 'required_if:coupon_type,==,1', + 'coupon_code' => 'required_if:use_auto_generation,==,0', + 'starts_from' => 'nullable|date', + 'ends_till' => 'nullable|date|after_or_equal:starts_from', + 'action_type' => 'required', + 'discount_amount' => 'required|numeric' + ]); + + $cartRule = $this->cartRuleRepository->findOrFail($id); + + Event::fire('promotions.cart_rule.update.before', $cartRule); + + $cartRule = $this->cartRuleRepository->update(request()->all(), $id); + + Event::fire('promotions.cart_rule.update.after', $cartRule); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Cart Rule'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $cartRule = $this->cartRuleRepository->findOrFail($id); + + try { + Event::fire('promotions.cart_rule.delete.before', $id); + + $this->cartRuleRepository->delete($id); + + Event::fire('promotions.cart_rule.delete.after', $id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Cart Rule'])); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Cart Rule'])); + } + + return response()->json(['message' => false], 400); + } + + /** + * Generate coupon code for cart rule + * + * @return \Illuminate\Http\JsonResponse + */ + public function generateCoupons() + { + $this->validate(request(), [ + 'coupon_qty' => 'required|integer|min:1', + 'code_length' => 'required|integer|min:10', + 'code_format' => 'required' + ]); + + if (! request('id')) + return response()->json(['message' => trans('admin::app.promotions.cart-rules.cart-rule-not-defind-error')], 400); + + $this->cartRuleCouponRepository->generateCoupons(request()->all(), request('id')); + + return response()->json(['message' => trans('admin::app.response.create-success', ['name' => 'Cart rule coupons'])]); + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleCouponController.php b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleCouponController.php new file mode 100644 index 000000000..7da633cb8 --- /dev/null +++ b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleCouponController.php @@ -0,0 +1,55 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CartRuleCouponController extends Controller +{ + /** + * To hold CartRuleCouponRepository repository instance + * + * @var CartRuleCouponRepository + */ + protected $cartRuleCouponRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\CartRule\Repositories\CartRuleCouponRepository $cartRuleCouponRepository + * @return void + */ + public function __construct(CartRuleCouponRepository $cartRuleCouponRepository) + { + $this->cartRuleCouponRepository = $cartRuleCouponRepository; + } + + /** + * Mass Delete the coupons + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function massDelete() + { + $couponIds = explode(',', request()->input('indexes')); + + foreach ($couponIds as $couponId) { + $coupon = $this->cartRuleCouponRepository->find($couponId); + + if ($coupon) + $this->cartRuleCouponRepository->delete($couponId); + } + + session()->flash('success', trans('admin::app.promotions.cart-rules.mass-delete-success')); + + return redirect()->back(); + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Http/Controllers/Controller.php b/packages/Webkul/CartRule/src/Http/Controllers/Controller.php new file mode 100644 index 000000000..259457d89 --- /dev/null +++ b/packages/Webkul/CartRule/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Cart +{ + /** + * CartRule object + * + * @var CartRule + */ + protected $cartRuleHepler; + + /** + * Create a new listener instance. + * + * @param Webkul\CartRule\Repositories\CartRule $cartRuleHepler + * @return void + */ + public function __construct(CartRule $cartRuleHepler) + { + $this->cartRuleHepler = $cartRuleHepler; + } + + /** + * Aplly valid cart rules to cart + * + * @param Cart $cart + * @return void + */ + public function applyCartRules($cart) + { + $this->cartRuleHepler->collect(); + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Listeners/Order.php b/packages/Webkul/CartRule/src/Listeners/Order.php new file mode 100755 index 000000000..f22fdfa35 --- /dev/null +++ b/packages/Webkul/CartRule/src/Listeners/Order.php @@ -0,0 +1,139 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Order +{ + /** + * CartRuleRepository object + * + * @var CartRuleRepository + */ + protected $cartRuleRepository; + + /** + * CartRuleCustomerRepository object + * + * @var CartRuleCustomerRepository + */ + protected $cartRuleCustomerRepository; + + /** + * CartRuleCouponRepository object + * + * @var CartRuleCouponRepository + */ + protected $cartRuleCouponRepository; + + /** + * CartRuleCouponUsageRepository object + * + * @var CartRuleCouponUsageRepository + */ + protected $cartRuleCouponUsageRepository; + + /** + * Create a new listener instance. + * + * @param Webkul\CartRule\Repositories\CartRuleRepository $cartRuleRepository + * @param Webkul\CartRule\Repositories\CartRuleCustomerRepository $cartRuleCustomerRepository + * @param Webkul\CartRule\Repositories\CartRuleCouponRepository $cartRuleCouponRepository + * @param Webkul\CartRule\Repositories\CartRuleCouponUsageRepository $cartRuleCouponUsageRepository + * @return void + */ + public function __construct( + CartRuleRepository $cartRuleRepository, + CartRuleCustomerRepository $cartRuleCustomerRepository, + CartRuleCouponRepository $cartRuleCouponRepository, + CartRuleCouponUsageRepository $cartRuleCouponUsageRepository + ) + { + $this->cartRuleRepository = $cartRuleRepository; + + $this->cartRuleCustomerRepository = $cartRuleCustomerRepository; + + $this->cartRuleCouponRepository = $cartRuleCouponRepository; + + $this->cartRuleCouponUsageRepository = $cartRuleCouponUsageRepository; + } + + /** + * Save cart rule and cart rule coupon properties after place order + * + * @param Order $order + * @return void + */ + public function manageCartRule($order) + { + if (! $order->discount_amount) + return; + + $cartRuleIds = explode(',', $order->applied_cart_rule_ids); + + $cartRuleIds = array_unique($cartRuleIds); + + foreach ($cartRuleIds as $ruleId) { + $rule = $this->cartRuleRepository->find($ruleId); + + if (! $rule) + continue; + + $rule->update(['times_used' => $rule->times_used + 1]); + + if (! $order->customer_id) + continue; + + $ruleCustomer = $this->cartRuleCustomerRepository->findOneWhere([ + 'customer_id' => $order->customer_id, + 'cart_rule_id' => $ruleId + ]); + + if ($ruleCustomer) { + $this->cartRuleCustomerRepository->update(['times_used' => $ruleCustomer->times_used + 1], $ruleCustomer->id); + } else { + $this->cartRuleCustomerRepository->create([ + 'customer_id' => $order->customer_id, + 'cart_rule_id' => $ruleId, + 'times_used' => 1 + ]); + } + } + + if (! $order->coupon_code) + return; + + $coupon = $this->cartRuleCouponRepository->findOneByField('code', $order->coupon_code); + + if ($coupon) { + $this->cartRuleCouponRepository->update(['times_used' => $coupon->times_used + 1], $coupon->id); + + if ($order->customer_id) { + $couponUsage = $this->cartRuleCouponUsageRepository->findOneWhere([ + 'customer_id' => $order->customer_id, + 'cart_rule_coupon_id' => $coupon->id + ]); + + if ($couponUsage) { + $this->cartRuleCouponUsageRepository->update(['times_used' => $couponUsage->times_used + 1], $couponUsage->id); + } else { + $this->cartRuleCouponUsageRepository->create([ + 'customer_id' => $order->customer_id, + 'cart_rule_coupon_id' => $coupon->id, + 'times_used' => 1 + ]); + } + } + } + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Models/CartRule.php b/packages/Webkul/CartRule/src/Models/CartRule.php new file mode 100644 index 000000000..6392a1c59 --- /dev/null +++ b/packages/Webkul/CartRule/src/Models/CartRule.php @@ -0,0 +1,66 @@ + 'array', + ]; + + // public $translatedAttributes = ['name']; + + /** + * Get the channels that owns the cart rule. + */ + public function channels() + { + return $this->belongsToMany(ChannelProxy::modelClass(), 'cart_rule_channels'); + } + + /** + * Get the customer groups that owns the cart rule. + */ + public function customer_groups() + { + return $this->belongsToMany(CustomerGroupProxy::modelClass(), 'cart_rule_customer_groups'); + } + + /** + * Get the coupons that owns the cart rule. + */ + public function coupons() + { + return $this->hasOne(CartRuleCouponProxy::modelClass()); + } + + /** + * Get primary coupon code for cart rule. + */ + public function coupon_code() + { + return $this->coupons()->where('is_primary', 1); + } + + /** + * Get primary coupon code for cart rule. + */ + public function getCouponCodeAttribute() + { + $coupon = $this->coupon_code()->first(); + + if (! $coupon) + return; + + return $coupon->code; + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Models/CartRuleCoupon.php b/packages/Webkul/CartRule/src/Models/CartRuleCoupon.php new file mode 100644 index 000000000..045af59a1 --- /dev/null +++ b/packages/Webkul/CartRule/src/Models/CartRuleCoupon.php @@ -0,0 +1,19 @@ +belongsTo(CartRuleProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Models/CartRuleCouponProxy.php b/packages/Webkul/CartRule/src/Models/CartRuleCouponProxy.php new file mode 100644 index 000000000..4a8f20030 --- /dev/null +++ b/packages/Webkul/CartRule/src/Models/CartRuleCouponProxy.php @@ -0,0 +1,10 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + + $this->app->register(EventServiceProvider::class); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Providers/EventServiceProvider.php b/packages/Webkul/CartRule/src/Providers/EventServiceProvider.php new file mode 100755 index 000000000..a5b5d7133 --- /dev/null +++ b/packages/Webkul/CartRule/src/Providers/EventServiceProvider.php @@ -0,0 +1,21 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CartRuleCouponRepository extends Repository +{ + /** + * @var array + */ + protected $charsets = [ + 'alphanumeric' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', + 'alphabetical' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + 'numeric' => '0123456789' + ]; + + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\CartRule\Contracts\CartRuleCoupon'; + } + + /** + * Creates coupons for cart rule + * + * @param array $data + * @param integer $cartRuleId + * @return void + */ + public function generateCoupons($data, $cartRuleId) + { + $cartRule = app('Webkul\CartRule\Repositories\CartRuleRepository')->findOrFail($cartRuleId); + + for ($i = 0; $i < $data['coupon_qty']; $i++) { + parent::create([ + 'cart_rule_id' => $cartRuleId, + 'code' => $data['code_prefix'] . $this->getRandomString($data['code_format'], $data['code_length']) . $data['code_suffix'], + 'usage_limit' => $cartRule->uses_per_coupon ?? 0, + 'usage_per_customer' => $cartRule->usage_per_customer ?? 0, + 'is_primary' => 0, + 'expired_at' => $cartRule->ends_till ?: null + ]); + } + } + + /** + * Creates coupons for cart rule + * + * @param string $format + * @param integer $length + * @return string + */ + public function getRandomString($format, $length) + { + $couponCode = ''; + + for ($i = 0; $i < $length; $i++) { + $couponCode .= $this->charsets[$format][rand(0, strlen($this->charsets[$format]) - 1)]; + } + + return $couponCode; + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Repositories/CartRuleCouponUsageRepository.php b/packages/Webkul/CartRule/src/Repositories/CartRuleCouponUsageRepository.php new file mode 100755 index 000000000..5d6350ba8 --- /dev/null +++ b/packages/Webkul/CartRule/src/Repositories/CartRuleCouponUsageRepository.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CartRuleCouponUsageRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\CartRule\Contracts\CartRuleCouponUsage'; + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Repositories/CartRuleCustomerRepository.php b/packages/Webkul/CartRule/src/Repositories/CartRuleCustomerRepository.php new file mode 100755 index 000000000..e3218eb94 --- /dev/null +++ b/packages/Webkul/CartRule/src/Repositories/CartRuleCustomerRepository.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CartRuleCustomerRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\CartRule\Contracts\CartRuleCustomer'; + } +} \ No newline at end of file diff --git a/packages/Webkul/CartRule/src/Repositories/CartRuleRepository.php b/packages/Webkul/CartRule/src/Repositories/CartRuleRepository.php new file mode 100755 index 000000000..80847ee67 --- /dev/null +++ b/packages/Webkul/CartRule/src/Repositories/CartRuleRepository.php @@ -0,0 +1,478 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CartRuleRepository extends Repository +{ + /** + * AttributeFamilyRepository object + * + * @var AttributeFamilyRepository + */ + protected $attributeFamilyRepository; + + /** + * AttributeRepository object + * + * @var AttributeRepository + */ + protected $attributeRepository; + + /** + * CategoryRepository class + * + * @var CategoryRepository + */ + protected $categoryRepository; + + /** + * CartRuleCouponRepository object + * + * @var CartRuleCouponRepository + */ + protected $cartRuleCouponRepository; + + /** + * TaxCategoryRepository class + * + * @var TaxCategoryRepository + */ + protected $taxCategoryRepository; + + /** + * CountryRepository class + * + * @var CountryRepository + */ + protected $countryRepository; + + /** + * CountryStateRepository class + * + * @var CountryStateRepository + */ + protected $countryStateRepository; + + /** + * Create a new repository instance. + * + * @param Webkul\Attribute\Repositories\AttributeFamilyRepository $attributeFamilyRepository + * @param Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @param Webkul\Category\Repositories\CategoryRepository $categoryRepository + * @param Webkul\CartRule\Repositories\CartRuleCouponRepository $cartRuleCouponRepository + * @param Webkul\Tax\Repositories\TaxCategoryRepository $taxCategoryRepository + * @param Webkul\Core\Repositories\CountryRepository $countryRepository + * @param Webkul\Core\Repositories\CountryStateRepository $countryStateRepository + * @param Illuminate\Container\Container $app + * @return void + */ + public function __construct( + AttributeFamilyRepository $attributeFamilyRepository, + AttributeRepository $attributeRepository, + CategoryRepository $categoryRepository, + CartRuleCouponRepository $cartRuleCouponRepository, + TaxCategoryRepository $taxCategoryRepository, + CountryRepository $countryRepository, + CountryStateRepository $countryStateRepository, + App $app + ) + { + $this->attributeFamilyRepository = $attributeFamilyRepository; + + $this->attributeRepository = $attributeRepository; + + $this->categoryRepository = $categoryRepository; + + $this->cartRuleCouponRepository = $cartRuleCouponRepository; + + $this->taxCategoryRepository = $taxCategoryRepository; + + $this->countryRepository = $countryRepository; + + $this->countryStateRepository = $countryStateRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\CartRule\Contracts\CartRule'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + $data['starts_from'] = $data['starts_from'] ?: null; + + $data['ends_till'] = $data['ends_till'] ?: null; + + $data['status'] = ! isset($data['status']) ? 0 : 1; + + $cartRule = parent::create($data); + + $cartRule->channels()->sync($data['channels']); + + $cartRule->customer_groups()->sync($data['customer_groups']); + + if ($data['coupon_type'] && ! $data['use_auto_generation']) { + $this->cartRuleCouponRepository->create([ + 'cart_rule_id' => $cartRule->id, + 'code' => $data['coupon_code'], + 'usage_limit' => $data['usage_per_customer'] ?? 0, + 'usage_per_customer' => $data['usage_per_customer'] ?? 0, + 'is_primary' => 1, + 'expired_at' => $data['ends_till'] ?: null + ]); + } + + return $cartRule; + } + + /** + * @param array $data + * @param array $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute = "id") + { + $data['starts_from'] = $data['starts_from'] ?: null; + + $data['ends_till'] = $data['ends_till'] ?: null; + + $data['status'] = ! isset($data['status']) ? 0 : 1; + + $data['conditions'] = $data['conditions'] ?? []; + + $cartRule = $this->find($id); + + parent::update($data, $id, $attribute); + + $cartRule->channels()->sync($data['channels']); + + $cartRule->customer_groups()->sync($data['customer_groups']); + + if ($data['coupon_type']) { + if (! $data['use_auto_generation']) { + $cartRuleCoupon = $this->cartRuleCouponRepository->findOneWhere(['is_primary' => 1, 'cart_rule_id' => $cartRule->id]); + + if ($cartRuleCoupon) { + $this->cartRuleCouponRepository->update([ + 'code' => $data['coupon_code'], + 'usage_limit' => $data['uses_per_coupon'] ?? 0, + 'usage_per_customer' => $data['usage_per_customer'] ?? 0, + 'expired_at' => $data['ends_till'] ?: null + ], $cartRuleCoupon->id); + } else { + $this->cartRuleCouponRepository->create([ + 'cart_rule_id' => $cartRule->id, + 'code' => $data['coupon_code'], + 'usage_limit' => $data['uses_per_coupon'] ?? 0, + 'usage_per_customer' => $data['usage_per_customer'] ?? 0, + 'is_primary' => 1, + 'expired_at' => $data['ends_till'] ?: null + ]); + } + } else { + $this->cartRuleCouponRepository->deleteWhere(['is_primary' => 1, 'cart_rule_id' => $cartRule->id]); + + $this->cartRuleCouponRepository->getModel()->where('cart_rule_id', $cartRule->id)->update([ + 'usage_limit' => $data['uses_per_coupon'] ?? 0, + 'usage_per_customer' => $data['usage_per_customer'] ?? 0, + 'expired_at' => $data['ends_till'] ?: null + ]); + } + } else { + $cartRuleCoupon = $this->cartRuleCouponRepository->deleteWhere(['is_primary' => 1, 'cart_rule_id' => $cartRule->id]); + } + + return $cartRule; + } + + /** + * Returns attributes for cart rule conditions + * + * @return array + */ + public function getConditionAttributes() + { + $attributes = [ + [ + 'key' => 'cart', + 'label' => trans('admin::app.promotions.cart-rules.cart-attribute'), + 'children' => [ + [ + 'key' => 'cart|base_sub_total', + 'type' => 'price', + 'label' => trans('admin::app.promotions.cart-rules.subtotal') + ], [ + 'key' => 'cart|items_qty', + 'type' => 'integer', + 'label' => trans('admin::app.promotions.cart-rules.total-items-qty') + ], [ + 'key' => 'cart|payment_method', + 'type' => 'select', + 'options' => $this->getPaymentMethods(), + 'label' => trans('admin::app.promotions.cart-rules.payment-method') + ], [ + 'key' => 'cart|shipping_method', + 'type' => 'select', + 'options' => $this->getShippingMethods(), + 'label' => trans('admin::app.promotions.cart-rules.shipping-method') + ], [ + 'key' => 'cart|postcode', + 'type' => 'text', + 'label' => trans('admin::app.promotions.cart-rules.shipping-postcode') + ], [ + 'key' => 'cart|state', + 'type' => 'select', + 'options' => $this->groupedStatesByCountries(), + 'label' => trans('admin::app.promotions.cart-rules.shipping-state') + ], [ + 'key' => 'cart|country', + 'type' => 'select', + 'options' => $this->getCountries(), + 'label' => trans('admin::app.promotions.cart-rules.shipping-country') + ] + ] + ], [ + 'key' => 'cart_item', + 'label' => trans('admin::app.promotions.cart-rules.cart-item-attribute'), + 'children' => [ + [ + 'key' => 'cart_item|base_price', + 'type' => 'price', + 'label' => trans('admin::app.promotions.cart-rules.price-in-cart') + ], [ + 'key' => 'cart_item|quantity', + 'type' => 'integer', + 'label' => trans('admin::app.promotions.cart-rules.qty-in-cart') + ], [ + 'key' => 'cart_item|base_total_weight', + 'type' => 'decimal', + 'label' => trans('admin::app.promotions.cart-rules.total-weight') + ], [ + 'key' => 'cart_item|base_total', + 'type' => 'price', + 'label' => trans('admin::app.promotions.cart-rules.subtotal') + ] + ] + ], [ + 'key' => 'product', + 'label' => trans('admin::app.promotions.cart-rules.product-attribute'), + 'children' => [ + [ + 'key' => 'product|category_ids', + 'type' => 'multiselect', + 'label' => trans('admin::app.promotions.cart-rules.categories'), + 'options' => $categories = $this->categoryRepository->getCategoryTree() + ], [ + 'key' => 'product|children::category_ids', + 'type' => 'multiselect', + 'label' => trans('admin::app.promotions.cart-rules.children-categories'), + 'options' => $categories + ], [ + 'key' => 'product|parent::category_ids', + 'type' => 'multiselect', + 'label' => trans('admin::app.promotions.cart-rules.parent-categories'), + 'options' => $categories + ], [ + 'key' => 'product|attribute_family_id', + 'type' => 'select', + 'label' => trans('admin::app.promotions.cart-rules.attribute_family'), + 'options' => $this->getAttributeFamilies() + ] + ] + ] + ]; + + foreach ($this->attributeRepository->findWhereNotIn('type', ['textarea', 'image', 'file']) as $attribute) { + $attributeType = $attribute->type; + + if ($attribute->code == 'tax_category_id') { + $options = $this->getTaxCategories(); + } else { + $options = $attribute->options; + } + + if ($attribute->validation == 'decimal') + $attributeType = 'decimal'; + + if ($attribute->validation == 'numeric') + $attributeType = 'integer'; + + $attributes[2]['children'][] = [ + 'key' => 'product|' . $attribute->code, + 'type' => $attribute->type, + 'label' => $attribute->name, + 'options' => $options + ]; + + $attributes[2]['children'][] = [ + 'key' => 'product|children::' . $attribute->code, + 'type' => $attribute->type, + 'label' => trans('admin::app.promotions.cart-rules.attribute-name-children-only', ['attribute_name' => $attribute->name]), + 'options' => $options + ]; + + $attributes[2]['children'][] = [ + 'key' => 'product|parent::' . $attribute->code, + 'type' => $attribute->type, + 'label' => trans('admin::app.promotions.cart-rules.attribute-name-parent-only', ['attribute_name' => $attribute->name]), + 'options' => $options + ]; + } + + return $attributes; + } + + /** + * Returns all payment methods + * + * @return array + */ + public function getPaymentMethods() + { + $methods = []; + + foreach (config('paymentmethods') as $paymentMethod) { + $object = app($paymentMethod['class']); + + $methods[] = [ + 'id' => $object->getCode(), + 'admin_name' => $object->getTitle() + ]; + } + + return $methods; + } + + /** + * Returns all shipping methods + * + * @return array + */ + public function getShippingMethods() + { + $methods = []; + + foreach (config('carriers') as $shippingMethod) { + $object = app($shippingMethod['class']); + + $methods[] = [ + 'id' => $object->getCode(), + 'admin_name' => $object->getTitle() + ]; + } + + return $methods; + } + + /** + * Returns all countries + * + * @return array + */ + public function getTaxCategories() + { + $taxCategories = []; + + foreach ($this->taxCategoryRepository->all() as $taxCategory) { + $taxCategories[] = [ + 'id' => $taxCategory->id, + 'admin_name' => $taxCategory->name, + ]; + } + + return $taxCategories; + } + + /** + * Returns all attribute families + * + * @return array + */ + public function getAttributeFamilies() + { + $attributeFamilies = []; + + foreach ($this->attributeFamilyRepository->all() as $attributeFamily) { + $attributeFamilies[] = [ + 'id' => $attributeFamily->id, + 'admin_name' => $attributeFamily->name, + ]; + } + + return $attributeFamilies; + } + + /** + * Returns all countries + * + * @return array + */ + public function getCountries() + { + $countries = []; + + foreach ($this->countryRepository->all() as $country) { + $countries[] = [ + 'id' => $country->code, + 'admin_name' => $country->name, + ]; + } + + return $countries; + } + + /** + * Retrieve all grouped states by country code + * + * @return array + */ + public function groupedStatesByCountries() + { + $collection = []; + + foreach ($this->countryRepository->all() as $country) { + $countryStates = $this->countryStateRepository->findWhere( + ['country_id' => $country->id], + ['code', 'default_name as admin_name'] + )->toArray(); + + if (! count($countryStates)) + continue; + + $collection[] = [ + 'id' => $country->code, + 'admin_name' => $country->name, + 'states' => $countryStates + ]; + } + + return $collection; + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Console/Commands/PriceRuleIndex.php b/packages/Webkul/CatalogRule/src/Console/Commands/PriceRuleIndex.php new file mode 100644 index 000000000..4f856c979 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Console/Commands/PriceRuleIndex.php @@ -0,0 +1,53 @@ +catalogRuleIndexHelper = $catalogRuleIndexHelper; + + parent::__construct(); + } + + /** + * Execute the console command. + * + * @return mixed + */ + public function handle() + { + // $this->catalogRuleIndexHelper->reindexComplete(); + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Contracts/CatalogRule.php b/packages/Webkul/CatalogRule/src/Contracts/CatalogRule.php new file mode 100644 index 000000000..c322bdc78 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Contracts/CatalogRule.php @@ -0,0 +1,7 @@ +increments('id'); + $table->string('name')->nullable(); + $table->string('description')->nullable(); + $table->date('starts_from')->nullable(); + $table->date('ends_till')->nullable(); + $table->boolean('status')->default(0); + $table->boolean('condition_type')->default(1); + $table->json('conditions')->nullable(); + $table->boolean('end_other_rules')->default(0); + $table->string('action_type')->nullable(); + $table->decimal('discount_amount', 12, 4)->default(0); + $table->integer('sort_order')->unsigned()->default(0); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('catalog_rules'); + } +} diff --git a/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_03_184651_create_catalog_rule_channels_table.php b/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_03_184651_create_catalog_rule_channels_table.php new file mode 100644 index 000000000..8f0053237 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_03_184651_create_catalog_rule_channels_table.php @@ -0,0 +1,36 @@ +integer('catalog_rule_id')->unsigned(); + $table->integer('channel_id')->unsigned(); + + $table->primary(['catalog_rule_id', 'channel_id']); + + $table->foreign('catalog_rule_id')->references('id')->on('catalog_rules')->onDelete('cascade'); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('catalog_rule_channels'); + } +} diff --git a/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_03_184732_create_catalog_rule_customer_groups_table.php b/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_03_184732_create_catalog_rule_customer_groups_table.php new file mode 100644 index 000000000..5670c6a80 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_03_184732_create_catalog_rule_customer_groups_table.php @@ -0,0 +1,37 @@ +integer('catalog_rule_id')->unsigned(); + $table->integer('customer_group_id')->unsigned(); + + + $table->primary(['catalog_rule_id', 'customer_group_id'], 'catalog_rule_id_customer_group_id_primary'); + + $table->foreign('catalog_rule_id')->references('id')->on('catalog_rules')->onDelete('cascade'); + $table->foreign('customer_group_id')->references('id')->on('customer_groups')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('catalog_rule_customer_groups'); + } +} diff --git a/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_06_101110_create_catalog_rule_products_table.php b/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_06_101110_create_catalog_rule_products_table.php new file mode 100644 index 000000000..8628050ac --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_06_101110_create_catalog_rule_products_table.php @@ -0,0 +1,48 @@ +increments('id'); + $table->datetime('starts_from')->nullable(); + $table->datetime('ends_till')->nullable(); + $table->boolean('end_other_rules')->default(0); + $table->string('action_type')->nullable(); + $table->decimal('discount_amount', 12, 4)->default(0); + $table->integer('sort_order')->unsigned()->default(0); + + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + + $table->integer('customer_group_id')->unsigned(); + $table->foreign('customer_group_id')->references('id')->on('customer_groups')->onDelete('cascade'); + + $table->integer('catalog_rule_id')->unsigned(); + $table->foreign('catalog_rule_id')->references('id')->on('catalog_rules')->onDelete('cascade'); + + $table->integer('channel_id')->unsigned(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('catalog_rule_products'); + } +} diff --git a/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_06_110507_create_catalog_rule_product_prices_table.php b/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_06_110507_create_catalog_rule_product_prices_table.php new file mode 100644 index 000000000..dab445de0 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Database/Migrations/2019_12_06_110507_create_catalog_rule_product_prices_table.php @@ -0,0 +1,46 @@ +increments('id'); + $table->decimal('price', 12, 4)->default(0); + $table->date('rule_date'); + $table->datetime('starts_from')->nullable(); + $table->datetime('ends_till')->nullable(); + + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + + $table->integer('customer_group_id')->unsigned(); + $table->foreign('customer_group_id')->references('id')->on('customer_groups')->onDelete('cascade'); + + $table->integer('catalog_rule_id')->unsigned(); + $table->foreign('catalog_rule_id')->references('id')->on('catalog_rules')->onDelete('cascade'); + + $table->integer('channel_id')->unsigned(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('catalog_rule_product_prices'); + } +} diff --git a/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleIndex.php b/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleIndex.php new file mode 100644 index 000000000..fd9b6cc5f --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleIndex.php @@ -0,0 +1,137 @@ +catalogRuleRepository = $catalogRuleRepository; + + $this->catalogRuleProductHelper = $catalogRuleProductHelper; + + $this->catalogRuleProductPriceHelper = $catalogRuleProductPriceHelper; + } + + /** + * Full reindex + * + * @return void + */ + public function reindexComplete() + { + try { + $this->cleanIndexes(); + + foreach ($this->getCatalogRules() as $rule) { + $this->catalogRuleProductHelper->insertRuleProduct($rule); + } + + $this->catalogRuleProductPriceHelper->indexRuleProductPrice(1000); + } catch (\Exception $e) { + + } + } + + /** + * Full reindex + * + * @param Product $product + * @return void + */ + public function reindexProduct($product) + { + try { + if (! $product->getTypeInstance()->priceRuleCanBeApplied()) + return; + + $productIds = $product->getTypeInstance()->isComposite() + ? $product->getTypeInstance()->getChildrenIds() + : [$product->id]; + + $this->cleanIndexes($productIds); + + foreach ($this->getCatalogRules() as $rule) { + $this->catalogRuleProductHelper->insertRuleProduct($rule, 1000, $product); + } + + $this->catalogRuleProductPriceHelper->indexRuleProductPrice(1000, $product); + } catch (\Exception $e) { + + } + } + + /** + * Deletes catalog rule product and catalog rule product price indexes + * + * @param array $productIds + * @return void + */ + public function cleanIndexes($productIds = []) + { + $this->catalogRuleProductHelper->cleanProductIndex($productIds); + + $this->catalogRuleProductPriceHelper->cleanProductPriceIndex($productIds); + } + + /** + * Returns catalog rules + * + * @return Collection + */ + public function getCatalogRules() + { + static $catalogRules; + + if ($catalogRules) + return $catalogRules; + + $catalogRules = $this->catalogRuleRepository->scopeQuery(function($query) { + return $query->where(function ($query1) { + $query1->where('catalog_rules.starts_from', '<=', Carbon::now()->format('Y-m-d'))->orWhereNull('catalog_rules.starts_from'); + }) + ->where(function ($query2) { + $query2->where('catalog_rules.ends_till', '>=', Carbon::now()->format('Y-m-d'))->orWhereNull('catalog_rules.ends_till'); + }) + ->orderBy('sort_order', 'asc'); + })->findWhere(['status' => 1]); + + return $catalogRules; + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleProduct.php b/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleProduct.php new file mode 100644 index 000000000..60e3aa629 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleProduct.php @@ -0,0 +1,253 @@ +attributeRepository = $attributeRepository; + + $this->productRepository = $productRepository; + + $this->catalogRuleProductRepository = $catalogRuleProductRepository; + + $this->validator = $validator; + } + + /** + * Collect discount on cart + * + * @param CatalogRule $rule + * @param integer $batchCount + * @return void + */ + public function insertRuleProduct($rule, $batchCount = 1000, $product = null) + { + $productIds = $this->getMatchingProductIds($rule, $product); + + $rows = []; + + $startsFrom = $rule->starts_from ? Carbon::createFromTimeString($rule->starts_from . " 00:00:01") : null; + + $endsTill = $rule->ends_till ? Carbon::createFromTimeString($rule->ends_till . " 23:59:59") : null; + + foreach ($productIds as $productId) { + foreach ($rule->channels()->pluck('id') as $channelId) { + foreach ($rule->customer_groups()->pluck('id') as $customerGroupId) { + $rows[] = [ + 'starts_from' => $startsFrom, + 'ends_till' => $endsTill, + 'catalog_rule_id' => $rule->id, + 'channel_id' => $channelId, + 'customer_group_id' => $customerGroupId, + 'product_id' => $productId, + 'discount_amount' => $rule->discount_amount, + 'action_type' => $rule->action_type, + 'end_other_rules' => $rule->end_other_rules, + 'sort_order' => $rule->sort_order, + ]; + + if (count($rows) == $batchCount) { + $this->catalogRuleProductRepository->getModel()->insert($rows); + + $rows = []; + } + } + } + } + + if (! empty($rows)) + $this->catalogRuleProductRepository->getModel()->insert($rows); + } + + /** + * Get array of product ids which are matched by rule + * + * @param CatalogRule $rule + * @param Product $product + * @return array + */ + public function getMatchingProductIds($rule, $product = null) + { + $qb = $this->productRepository->scopeQuery(function($query) use($rule, $product) { + $qb = $query->distinct() + ->addSelect('products.*') + ->leftJoin('product_flat', 'products.id', '=', 'product_flat.product_id') + ->leftJoin('channels', 'product_flat.channel', '=', 'channels.code') + ->whereIn('channels.id', $rule->channels()->pluck('id')->toArray()); + + if ($product) + $qb->where('products.id', $product->id); + + if (! $rule->conditions) + return $qb; + + $appliedAttributes = []; + + foreach ($rule->conditions as $condition) { + if (! $condition['attribute'] + || ! isset($condition['value']) + || is_null($condition['value']) + || $condition['value'] == '' + || in_array($condition['attribute'], $appliedAttributes)) + continue; + + $appliedAttributes[] = $condition['attribute']; + + $chunks = explode('|', $condition['attribute']); + + $qb = $this->addAttributeToSelect(end($chunks), $qb); + } + + return $qb; + }); + + $validatedProductIds = []; + + foreach ($qb->get() as $product) { + if (! $product->getTypeInstance()->priceRuleCanBeApplied()) + continue; + + if ($this->validator->validate($rule, $product)) { + if ($product->getTypeInstance()->isComposite()) { + $validatedProductIds = array_merge($validatedProductIds, $product->getTypeInstance()->getChildrenIds()); + } else { + $validatedProductIds[] = $product->id; + } + } + } + + return array_unique($validatedProductIds); + } + + /** + * Add product attribute condition to query + * + * @param string $attributeCode + * @param QueryBuilder $query + * @return QueryBuilder + */ + public function addAttributeToSelect($attributeCode, $query) + { + $attribute = $this->attributeRepository->findOneByField('code', $attributeCode); + + if (! $attribute) + return $query; + + $query = $query->leftJoin('product_attribute_values as ' . 'pav_' . $attribute->code, function($qb) use($attribute) { + $qb = $qb->where('pav_' . $attribute->code . '.channel', $attribute->value_per_channel ? core()->getDefaultChannelCode() : null) + ->where('pav_' . $attribute->code . '.locale', $attribute->value_per_locale ? app()->getLocale() : null); + + $qb->on('products.id', 'pav_' . $attribute->code . '.product_id') + ->where('pav_' . $attribute->code . '.attribute_id', $attribute->id); + }); + + $query = $query->addSelect('pav_' . $attribute->code . '.' . ProductAttributeValue::$attributeTypeFields[$attribute->type] . ' as ' . $attribute->code); + + return $query; + } + + /** + * Returns catalog rule products + * + * @param Product $product + * @return Collection + */ + public function getCatalogRuleProducts($product = null) + { + $results = $this->catalogRuleProductRepository->scopeQuery(function($query) use($product) { + $qb = $query->distinct() + ->select('catalog_rule_products.*') + ->leftJoin('products', 'catalog_rule_products.product_id', '=', 'products.id') + ->orderBy('channel_id', 'asc') + ->orderBy('customer_group_id', 'asc') + ->orderBy('product_id', 'asc') + ->orderBy('sort_order', 'asc') + ->orderBy('catalog_rule_id', 'asc'); + + $qb = $this->addAttributeToSelect('price', $qb); + + if ($product) { + if (! $product->getTypeInstance()->priceRuleCanBeApplied()) + return $qb; + + if ($product->getTypeInstance()->isComposite()) { + $qb->whereIn('catalog_rule_products.product_id', $product->getTypeInstance()->getChildrenIds()); + } else { + $qb->where('catalog_rule_products.product_id', $product->id); + } + } + + return $qb; + })->get(); + + return $results; + } + + /** + * Returns catalog rules + * + * @param CatalogRule $rule + * @return void + */ + public function cleanProductIndex($productIds = []) + { + if (count($productIds)) { + $this->catalogRuleProductRepository->getModel()->whereIn('product_id', $productIds)->delete(); + } else { + $this->catalogRuleProductRepository->deleteWhere([ + ['product_id', 'like', '%%'] + ]); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleProductPrice.php b/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleProductPrice.php new file mode 100644 index 000000000..358b37cd5 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Helpers/CatalogRuleProductPrice.php @@ -0,0 +1,217 @@ +catalogRuleProductPriceRepository = $catalogRuleProductPriceRepository; + + $this->catalogRuleProductHelper = $catalogRuleProductHelper; + + $this->customerGroupRepository = $customerGroupRepository; + } + + /** + * Return current logged in customer + * + * @return Customer | Boolean + */ + public function getCurrentCustomer() + { + $guard = request()->has('token') ? 'api' : 'customer'; + + return auth()->guard($guard); + } + + /** + * Collect discount on cart + * + * @param integer $batchCount + * @param Product $product + * @return void + */ + public function indexRuleProductPrice($batchCount, $product = null) + { + $dates = [ + 'current' => $currentDate = Carbon::now(), + 'previous' => (clone $currentDate)->subDays('1')->setTime(23, 59, 59), + 'next' => (clone $currentDate)->addDays('1')->setTime(0, 0, 0), + ]; + + $prices = $endRuleFlags = []; + + $previousKey = null; + + $catalogRuleProducts = $this->catalogRuleProductHelper->getCatalogRuleProducts($product); + + foreach ($catalogRuleProducts as $row) { + $productKey = $row->product_id . '-' . $row->channel_id . '-' . $row->customer_group_id; + + if ($previousKey && $previousKey != $productKey) { + $endRuleFlags = []; + + if (count($prices) > $batchCount) { + $this->catalogRuleProductPriceRepository->getModel()->insert($prices); + + $prices = []; + } + } + + foreach ($dates as $key => $date) { + if ((! $row->starts_from || $date >= $row->starts_from) + && (! $row->ends_till || $date <= $row->ends_till)) + { + $priceKey = $date->getTimestamp() . '-' . $productKey; + + if (isset($endRuleFlags[$priceKey])) + continue; + + if (! isset($prices[$priceKey])) { + $prices[$priceKey] = [ + 'rule_date' => $date, + 'catalog_rule_id' => $row->catalog_rule_id, + 'channel_id' => $row->channel_id, + 'customer_group_id' => $row->customer_group_id, + 'product_id' => $row->product_id, + 'price' => $this->calculate($row), + 'starts_from' => $row->starts_from, + 'ends_till' => $row->ends_till, + ]; + } else { + $prices[$priceKey]['price'] = $this->calculate($row, $prices[$priceKey]); + + $prices[$priceKey]['starts_from'] = max($prices[$priceKey]['starts_from'], $row->starts_from); + + $prices[$priceKey]['ends_till'] = min($prices[$priceKey]['ends_till'], $row->ends_till); + } + + if ($row->end_other_rules) + $endRuleFlags[$priceKey] = true; + } + } + + $previousKey = $productKey; + } + + $this->catalogRuleProductPriceRepository->getModel()->insert($prices); + } + + /** + * Calculates product price based on rule + * + * @param array $rule + * @param Product|null $productData + * @return float + */ + public function calculate($rule, $productData = null) + { + $price = $productData && isset($productData['price']) ? $productData['price'] : $rule->price; + + switch ($rule->action_type) { + case 'to_fixed': + $price = min($rule->discount_amount, $price); + + break; + + case 'to_percent': + $price = $price * $rule->discount_amount / 100; + + break; + + case 'by_fixed': + $price = max(0, $price - $rule->discount_amount); + + break; + + case 'by_percent': + $price = $price * (1 - $rule->discount_amount / 100); + + break; + } + + return $price; + } + + /** + * Clean product price index + * + * @param array $productIds + * @return void + */ + public function cleanProductPriceIndex($productIds = []) + { + if (count($productIds)) { + $this->catalogRuleProductPriceRepository->getModel()->whereIn('product_id', $productIds)->delete(); + } else { + $this->catalogRuleProductPriceRepository->deleteWhere([ + ['product_id', 'like', '%%'] + ]); + } + } + + /** + * Get catalog rules product price for specific date, channel and customer group + * + * @param Product $product + * @return void + */ + public function getRulePrice($product) + { + if ($this->getCurrentCustomer()->check()) { + $customerGroupId = $this->getCurrentCustomer()->user()->customer_group_id; + } else { + $customerGroup = $this->customerGroupRepository->findOneByField('code', 'guest'); + + if (! $customerGroup) + return; + + $customerGroupId = $customerGroup->id; + } + + return $this->catalogRuleProductPriceRepository->findOneWhere([ + 'product_id' => $product->id, + 'channel_id' => core()->getCurrentChannel()->id, + 'customer_group_id' => $customerGroupId, + 'rule_date' => Carbon::now()->format('Y-m-d'), + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php b/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php new file mode 100644 index 000000000..3bcceb50f --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php @@ -0,0 +1,183 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CatalogRuleController extends Controller +{ + /** + * Initialize _config, a default request parameter with route + * + * @param array + */ + protected $_config; + + /** + * To hold Catalog repository instance + * + * @var CatalogRuleRepository + */ + protected $catalogRuleRepository; + + /** + * CatalogRuleIndex + * + * @var CatalogRuleIndex + */ + protected $catalogRuleIndexHelper; + + /** + * Create a new controller instance. + * + * @param \Webkul\CatalogRule\Repositories\CatalogRuleRepository $catalogRuleRepository + * @param \Webkul\CatalogRule\Helpers\CatalogRuleIndex $catalogRuleIndexHelper + * @return void + */ + public function __construct( + CatalogRuleRepository $catalogRuleRepository, + CatalogRuleIndex $catalogRuleIndexHelper + ) + { + $this->_config = request('_config'); + + $this->catalogRuleRepository = $catalogRuleRepository; + + $this->catalogRuleIndexHelper = $catalogRuleIndexHelper; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'name' => 'required', + 'channels' => 'required|array|min:1', + 'customer_groups' => 'required|array|min:1', + 'starts_from' => 'nullable|date', + 'ends_till' => 'nullable|date|after_or_equal:starts_from', + 'action_type' => 'required', + 'discount_amount' => 'required|numeric' + ]); + + $data = request()->all(); + + Event::fire('promotions.catalog_rule.create.before'); + + $catalogRule = $this->catalogRuleRepository->create($data); + + Event::fire('promotions.catalog_rule.create.after', $catalogRule); + + $this->catalogRuleIndexHelper->reindexComplete(); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Catalog Rule'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $catalogRule = $this->catalogRuleRepository->findOrFail($id); + + return view($this->_config['view'], compact('catalogRule')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $this->validate(request(), [ + 'name' => 'required', + 'channels' => 'required|array|min:1', + 'customer_groups' => 'required|array|min:1', + 'starts_from' => 'nullable|date', + 'ends_till' => 'nullable|date|after_or_equal:starts_from', + 'action_type' => 'required', + 'discount_amount' => 'required|numeric' + ]); + + $catalogRule = $this->catalogRuleRepository->findOrFail($id); + + Event::fire('promotions.catalog_rule.update.before', $catalogRule); + + $catalogRule = $this->catalogRuleRepository->update(request()->all(), $id); + + Event::fire('promotions.catalog_rule.update.after', $catalogRule); + + $this->catalogRuleIndexHelper->reindexComplete(); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Catalog Rule'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $catalogRule = $this->catalogRuleRepository->findOrFail($id); + + try { + Event::fire('promotions.catalog_rule.delete.before', $id); + + $this->catalogRuleRepository->delete($id); + + Event::fire('promotions.catalog_rule.delete.after', $id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Catalog Rule'])); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Catalog Rule'])); + } + + return response()->json(['message' => false], 400); + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Http/Controllers/Controller.php b/packages/Webkul/CatalogRule/src/Http/Controllers/Controller.php new file mode 100644 index 000000000..78181ceb7 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Product +{ + /** + * Product Repository Object + * + * @var Object + */ + protected $catalogRuleIndexHelper; + + /** + * Create a new listener instance. + * + * @param Webkul\CatalogRule\Helpers\CatalogRuleIndex $catalogRuleIndexHelper + * @return void + */ + public function __construct(CatalogRuleIndex $catalogRuleIndexHelper) + { + $this->catalogRuleIndexHelper = $catalogRuleIndexHelper; + } + + /** + * @param Product $product + * @return void + */ + public function createProductRuleIndex($product) + { + $this->catalogRuleIndexHelper->reindexProduct($product); + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Models/CatalogRule.php b/packages/Webkul/CatalogRule/src/Models/CatalogRule.php new file mode 100644 index 000000000..00e991506 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Models/CatalogRule.php @@ -0,0 +1,33 @@ + 'array' + ]; + + /** + * Get the channels that owns the catalog rule. + */ + public function channels() + { + return $this->belongsToMany(ChannelProxy::modelClass(), 'catalog_rule_channels'); + } + + /** + * Get the customer groups that owns the catalog rule. + */ + public function customer_groups() + { + return $this->belongsToMany(CustomerGroupProxy::modelClass(), 'catalog_rule_customer_groups'); + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Models/CatalogRuleProduct.php b/packages/Webkul/CatalogRule/src/Models/CatalogRuleProduct.php new file mode 100644 index 000000000..dfa513113 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Models/CatalogRuleProduct.php @@ -0,0 +1,13 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + + Event::listen('catalog.product.update.after', 'Webkul\CatalogRule\Listeners\Product@createProductRuleIndex'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + $this->registerCommands(); + } + + /** + * Register the console commands of this package + */ + protected function registerCommands() + { + if ($this->app->runningInConsole()) + $this->commands([PriceRuleIndex::class]); + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Providers/ModuleServiceProvider.php b/packages/Webkul/CatalogRule/src/Providers/ModuleServiceProvider.php new file mode 100644 index 000000000..778b8a1d9 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Providers/ModuleServiceProvider.php @@ -0,0 +1,14 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CatalogRuleProductPriceRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\CatalogRule\Contracts\CatalogRuleProductPrice'; + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Repositories/CatalogRuleProductRepository.php b/packages/Webkul/CatalogRule/src/Repositories/CatalogRuleProductRepository.php new file mode 100644 index 000000000..565781c29 --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Repositories/CatalogRuleProductRepository.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CatalogRuleProductRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\CatalogRule\Contracts\CatalogRuleProduct'; + } +} \ No newline at end of file diff --git a/packages/Webkul/CatalogRule/src/Repositories/CatalogRuleRepository.php b/packages/Webkul/CatalogRule/src/Repositories/CatalogRuleRepository.php new file mode 100644 index 000000000..16a59b5ee --- /dev/null +++ b/packages/Webkul/CatalogRule/src/Repositories/CatalogRuleRepository.php @@ -0,0 +1,225 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CatalogRuleRepository extends Repository +{ + /** + * AttributeFamilyRepository object + * + * @var AttributeFamilyRepository + */ + protected $attributeFamilyRepository; + + /** + * AttributeRepository object + * + * @var AttributeRepository + */ + protected $attributeRepository; + + /** + * CategoryRepository class + * + * @var CategoryRepository + */ + protected $categoryRepository; + + /** + * TaxCategoryRepository class + * + * @var TaxCategoryRepository + */ + protected $taxCategoryRepository; + + /** + * Create a new repository instance. + * + * @param Webkul\Attribute\Repositories\AttributeFamilyRepository $attributeFamilyRepository + * @param Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @param Webkul\Category\Repositories\CategoryRepository $categoryRepository + * @param Webkul\Tax\Repositories\TaxCategoryRepository $taxCategoryRepository + * @param Illuminate\Container\Container $app + * @return void + */ + public function __construct( + AttributeFamilyRepository $attributeFamilyRepository, + AttributeRepository $attributeRepository, + CategoryRepository $categoryRepository, + TaxCategoryRepository $taxCategoryRepository, + App $app + ) + { + $this->attributeFamilyRepository = $attributeFamilyRepository; + + $this->attributeRepository = $attributeRepository; + + $this->categoryRepository = $categoryRepository; + + $this->taxCategoryRepository = $taxCategoryRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\CatalogRule\Contracts\CatalogRule'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + $data['starts_from'] = $data['starts_from'] ?: null; + + $data['ends_till'] = $data['ends_till'] ?: null; + + $data['status'] = ! isset($data['status']) ? 0 : 1; + + $catalogRule = parent::create($data); + + $catalogRule->channels()->sync($data['channels']); + + $catalogRule->customer_groups()->sync($data['customer_groups']); + + return $catalogRule; + } + + /** + * @param array $data + * @param array $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute = "id") + { + $data['starts_from'] = $data['starts_from'] ?: null; + + $data['ends_till'] = $data['ends_till'] ?: null; + + $data['status'] = ! isset($data['status']) ? 0 : 1; + + $data['conditions'] = $data['conditions'] ?? []; + + $catalogRule = $this->find($id); + + parent::update($data, $id, $attribute); + + $catalogRule->channels()->sync($data['channels']); + + $catalogRule->customer_groups()->sync($data['customer_groups']); + + return $catalogRule; + } + + /** + * Returns attributes for catalog rule conditions + * + * @return array + */ + public function getConditionAttributes() + { + $attributes = [ + [ + 'key' => 'product', + 'label' => trans('admin::app.promotions.catalog-rules.product-attribute'), + 'children' => [ + [ + 'key' => 'product|category_ids', + 'type' => 'multiselect', + 'label' => trans('admin::app.promotions.catalog-rules.categories'), + 'options' => $this->categoryRepository->getCategoryTree() + ], [ + 'key' => 'product|attribute_family_id', + 'type' => 'select', + 'label' => trans('admin::app.promotions.catalog-rules.attribute_family'), + 'options' => $this->getAttributeFamilies() + ] + ] + ] + ]; + + foreach ($this->attributeRepository->findWhereNotIn('type', ['textarea', 'image', 'file']) as $attribute) { + $attributeType = $attribute->type; + + if ($attribute->code == 'tax_category_id') { + $options = $this->getTaxCategories(); + } else { + $options = $attribute->options; + } + + if ($attribute->validation == 'decimal') + $attributeType = 'decimal'; + + if ($attribute->validation == 'numeric') + $attributeType = 'integer'; + + $attributes[0]['children'][] = [ + 'key' => 'product|' . $attribute->code, + 'type' => $attribute->type, + 'label' => $attribute->name, + 'options' => $options + ]; + } + + return $attributes; + } + + /** + * Returns all tax categories + * + * @return array + */ + public function getTaxCategories() + { + $taxCategories = []; + + foreach ($this->taxCategoryRepository->all() as $taxCategory) { + $taxCategories[] = [ + 'id' => $taxCategory->id, + 'admin_name' => $taxCategory->name, + ]; + } + + return $taxCategories; + } + + /** + * Returns all attribute families + * + * @return array + */ + public function getAttributeFamilies() + { + $attributeFamilies = []; + + foreach ($this->attributeFamilyRepository->all() as $attributeFamily) { + $attributeFamilies[] = [ + 'id' => $attributeFamily->id, + 'admin_name' => $attributeFamily->name, + ]; + } + + return $attributeFamilies; + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/.gitignore b/packages/Webkul/Category/.gitignore new file mode 100755 index 000000000..30bc16279 --- /dev/null +++ b/packages/Webkul/Category/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/packages/Webkul/Category/composer.json b/packages/Webkul/Category/composer.json new file mode 100755 index 000000000..3189f0694 --- /dev/null +++ b/packages/Webkul/Category/composer.json @@ -0,0 +1,27 @@ +{ + "name": "bagisto/laravel-category", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": { + "baum/baum": "~1.1" + }, + "autoload": { + "psr-4": { + "Webkul\\Category\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Category\\Providers\\CategoryServiceProvider" + ], + "aliases": { } + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Category/src/Contracts/Category.php b/packages/Webkul/Category/src/Contracts/Category.php new file mode 100644 index 000000000..0ae4c9828 --- /dev/null +++ b/packages/Webkul/Category/src/Contracts/Category.php @@ -0,0 +1,7 @@ +define(Category::class, function (Faker $faker, array $attributes) { + + return [ + 'status' => 1, + 'position' => $faker->randomDigit, + 'parent_id' => 1, + ]; +}); + +$factory->state(Category::class, 'inactive', [ + 'status' => 0, +]); diff --git a/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142820_create_categories_table.php b/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142820_create_categories_table.php new file mode 100755 index 000000000..d1bfafbe0 --- /dev/null +++ b/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142820_create_categories_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->integer('position')->default(0); + $table->string('image')->nullable(); + $table->boolean('status')->default(0); + NestedSet::columns($table); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('categories'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/src/Database/Migrations/2018_07_21_142836_create_category_translations_table.php b/packages/Webkul/Category/src/Database/Migrations/2018_07_21_142836_create_category_translations_table.php new file mode 100755 index 000000000..94a80774f --- /dev/null +++ b/packages/Webkul/Category/src/Database/Migrations/2018_07_21_142836_create_category_translations_table.php @@ -0,0 +1,40 @@ +increments('id'); + $table->text('name'); + $table->string('slug'); + $table->text('description')->nullable(); + $table->text('meta_title')->nullable(); + $table->text('meta_description')->nullable(); + $table->text('meta_keywords')->nullable(); + $table->integer('category_id')->unsigned(); + $table->string('locale'); + $table->unique(['category_id', 'slug', 'locale']); + $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('category_translations'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/src/Database/Migrations/2019_03_15_123337_add_display_mode_column_in_categories_table.php b/packages/Webkul/Category/src/Database/Migrations/2019_03_15_123337_add_display_mode_column_in_categories_table.php new file mode 100644 index 000000000..aff2f8b6e --- /dev/null +++ b/packages/Webkul/Category/src/Database/Migrations/2019_03_15_123337_add_display_mode_column_in_categories_table.php @@ -0,0 +1,32 @@ +string('display_mode')->default('products_and_description')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('categories', function (Blueprint $table) { + $table->dropColumn('display_mode'); + }); + } +} diff --git a/packages/Webkul/Category/src/Database/Migrations/2019_07_11_151210_add_locale_id_in_category_translations.php b/packages/Webkul/Category/src/Database/Migrations/2019_07_11_151210_add_locale_id_in_category_translations.php new file mode 100644 index 000000000..43978ec7b --- /dev/null +++ b/packages/Webkul/Category/src/Database/Migrations/2019_07_11_151210_add_locale_id_in_category_translations.php @@ -0,0 +1,38 @@ +integer('locale_id')->nullable()->unsigned(); + }); + + Schema::table('category_translations', function (Blueprint $table) { + $table->foreign('locale_id')->references('id')->on('locales')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('category_translations', function (Blueprint $table) { + $table->dropForeign(['locale_id']); + + $table->dropColumn('locale_id'); + }); + } +} diff --git a/packages/Webkul/Category/src/Database/Migrations/2019_07_31_143339_create_category_filterable_attributes_table.php b/packages/Webkul/Category/src/Database/Migrations/2019_07_31_143339_create_category_filterable_attributes_table.php new file mode 100644 index 000000000..3301581ad --- /dev/null +++ b/packages/Webkul/Category/src/Database/Migrations/2019_07_31_143339_create_category_filterable_attributes_table.php @@ -0,0 +1,33 @@ +integer('category_id')->unsigned(); + $table->integer('attribute_id')->unsigned(); + $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); + $table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('category_filterable_attributes'); + } +} diff --git a/packages/Webkul/Category/src/Database/Seeders/CategoryTableSeeder.php b/packages/Webkul/Category/src/Database/Seeders/CategoryTableSeeder.php new file mode 100755 index 000000000..b70fbaae0 --- /dev/null +++ b/packages/Webkul/Category/src/Database/Seeders/CategoryTableSeeder.php @@ -0,0 +1,25 @@ +delete(); + + $now = Carbon::now(); + + DB::table('categories')->insert([ + ['id' => '1','position' => '1','image' => NULL,'status' => '1','_lft' => '1','_rgt' => '14','parent_id' => NULL, 'created_at' => $now, 'updated_at' => $now] + ]); + + DB::table('category_translations')->insert([ + ['id' => '1','name' => 'Root','slug' => 'root','description' => 'Root','meta_title' => '','meta_description' => '','meta_keywords' => '','category_id' => '1','locale' => 'en'] + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/src/Database/Seeders/DatabaseSeeder.php b/packages/Webkul/Category/src/Database/Seeders/DatabaseSeeder.php new file mode 100755 index 000000000..c0f0edbc1 --- /dev/null +++ b/packages/Webkul/Category/src/Database/Seeders/DatabaseSeeder.php @@ -0,0 +1,18 @@ +call(CategoryTableSeeder::class); + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/src/Http/Controllers/CategoryController.php b/packages/Webkul/Category/src/Http/Controllers/CategoryController.php new file mode 100755 index 000000000..2b8c6a387 --- /dev/null +++ b/packages/Webkul/Category/src/Http/Controllers/CategoryController.php @@ -0,0 +1,227 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CategoryController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * CategoryRepository object + * + * @var Object + */ + protected $categoryRepository; + + /** + * AttributeRepository object + * + * @var Object + */ + protected $attributeRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Category\Repositories\CategoryRepository $categoryRepository + * @param \Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @return void + */ + public function __construct( + CategoryRepository $categoryRepository, + AttributeRepository $attributeRepository + ) + { + $this->categoryRepository = $categoryRepository; + + $this->attributeRepository = $attributeRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + $categories = $this->categoryRepository->getCategoryTree(null, ['id']); + + $attributes = $this->attributeRepository->findWhere(['is_filterable' => 1]); + + return view($this->_config['view'], compact('categories', 'attributes')); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'slug' => ['required', 'unique:category_translations,slug', new \Webkul\Core\Contracts\Validations\Slug], + 'name' => 'required', + 'image.*' => 'mimes:jpeg,jpg,bmp,png', + 'description' => 'required_if:display_mode,==,description_only,products_and_description' + ]); + + if (strtolower(request()->input('name')) == 'root') { + $categoryTransalation = new CategoryTranslation(); + + $result = $categoryTransalation->where('name', request()->input('name'))->get(); + + if(count($result) > 0) { + session()->flash('error', trans('admin::app.response.create-root-failure')); + + return redirect()->back(); + } + } + + $category = $this->categoryRepository->create(request()->all()); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Category'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $category = $this->categoryRepository->findOrFail($id); + + $categories = $this->categoryRepository->getCategoryTreeWithoutDescendant($id); + + $attributes = $this->attributeRepository->findWhere(['is_filterable' => 1]); + + return view($this->_config['view'], compact('category', 'categories', 'attributes')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $locale = request()->get('locale') ?: app()->getLocale(); + + $this->validate(request(), [ + $locale . '.slug' => ['required', new \Webkul\Core\Contracts\Validations\Slug, function ($attribute, $value, $fail) use ($id) { + if (! $this->categoryRepository->isSlugUnique($id, $value)) { + $fail(trans('admin::app.response.already-taken', ['name' => 'Category'])); + } + }], + $locale . '.name' => 'required', + 'image.*' => 'mimes:jpeg,jpg,bmp,png' + ]); + + $this->categoryRepository->update(request()->all(), $id); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Category'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $category = $this->categoryRepository->findOrFail($id); + + if(strtolower($category->name) == "root") { + session()->flash('warning', trans('admin::app.response.delete-category-root', ['name' => 'Category'])); + } else { + try { + Event:: fire('catalog.category.delete.before', $id); + + $this->categoryRepository->delete($id); + + Event::dispatch('catalog.category.delete.after', $id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Category'])); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Category'])); + } + } + + return response()->json(['message' => false], 400); + } + + /** + * Remove the specified resources from database + * + * @return response \Illuminate\Http\Response + */ + public function massDestroy() { + $suppressFlash = false; + + if (request()->isMethod('delete') || request()->isMethod('post')) { + $indexes = explode(',', request()->input('indexes')); + + foreach ($indexes as $key => $value) { + try { + Event::dispatch('catalog.category.delete.before', $value); + + $this->categoryRepository->delete($value); + + Event::dispatch('catalog.category.delete.after', $value); + } catch(\Exception $e) { + $suppressFlash = true; + + continue; + } + } + + if (! $suppressFlash) + session()->flash('success', trans('admin::app.datagrid.mass-ops.delete-success')); + else + session()->flash('info', trans('admin::app.datagrid.mass-ops.partial-action', ['resource' => 'Attribute Family'])); + + return redirect()->back(); + } else { + session()->flash('error', trans('admin::app.datagrid.mass-ops.method-error')); + + return redirect()->back(); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/src/Http/Controllers/Controller.php b/packages/Webkul/Category/src/Http/Controllers/Controller.php new file mode 100755 index 000000000..3b01976a2 --- /dev/null +++ b/packages/Webkul/Category/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ +image) + return; + + return Storage::url($this->image); + } + + /** + * Get image url for the category image. + */ + public function getImageUrlAttribute() + { + return $this->image_url(); + } + + /** + * The filterable attributes that belong to the category. + */ + public function filterableAttributes() + { + return $this->belongsToMany(AttributeProxy::modelClass(), 'category_filterable_attributes')->with('options'); + } + + /** + * Getting the root category of a category + * + * @return Category + */ + public function getRootCategory(): Category + { + return Category::where([ + ['parent_id', '=', null], + ['_lft', '<=', $this->_lft], + ['_rgt', '>=', $this->_rgt], + ])->first(); + } + + /** + * Returns all categories within the category's path + * + * @return Category[] + */ + public function getPathCategories(): array + { + $category = $this->findInTree(); + + $categories = [$category]; + + while (isset($category->parent)) { + $category = $category->parent; + $categories[] = $category; + } + + return array_reverse($categories); + } + + /** + * Finds and returns the category within a nested category tree + * will search in root category by default + * is used to minimize the numbers of sql queries for it only uses the already cached tree + * + * @param Category[] $categoryTree + * @return Category + */ + public function findInTree($categoryTree = null): Category + { + if (! $categoryTree) { + $categoryTree = app(CategoryRepository::class)->getVisibleCategoryTree($this->getRootCategory()->id); + } + + $category = $categoryTree->first(); + + if (! $category) { + throw new NotFoundHttpException('category not found in tree'); + } + + if ($category->id === $this->id) { + return $category; + } + return $this->findInTree($category->children); + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/src/Models/CategoryProxy.php b/packages/Webkul/Category/src/Models/CategoryProxy.php new file mode 100644 index 000000000..431dc2f85 --- /dev/null +++ b/packages/Webkul/Category/src/Models/CategoryProxy.php @@ -0,0 +1,10 @@ +id); + } + + /** + * Handle the Category "saved" event. + * + * @param Category $category + */ + public function saved($category) + { + foreach ($category->children as $child) { + $child->touch(); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/src/Providers/CategoryServiceProvider.php b/packages/Webkul/Category/src/Providers/CategoryServiceProvider.php new file mode 100755 index 000000000..0345ddf5c --- /dev/null +++ b/packages/Webkul/Category/src/Providers/CategoryServiceProvider.php @@ -0,0 +1,46 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + + CategoryProxy::observe(CategoryObserver::class); + + $this->registerEloquentFactoriesFrom(__DIR__ . '/../Database/Factories'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + + } + + /** + * Register factories. + * + * @param string $path + * @return void + */ + protected function registerEloquentFactoriesFrom($path): void + { + $this->app->make(EloquentFactory::class)->load($path); + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/src/Providers/ModuleServiceProvider.php b/packages/Webkul/Category/src/Providers/ModuleServiceProvider.php new file mode 100644 index 000000000..9ea41025f --- /dev/null +++ b/packages/Webkul/Category/src/Providers/ModuleServiceProvider.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CategoryRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + public function model() + { + return 'Webkul\Category\Contracts\Category'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + Event::dispatch('catalog.category.create.before'); + + if (isset($data['locale']) && $data['locale'] == 'all') { + $model = app()->make($this->model()); + + foreach (core()->getAllLocales() as $locale) { + foreach ($model->translatedAttributes as $attribute) { + if (isset($data[$attribute])) { + $data[$locale->code][$attribute] = $data[$attribute]; + $data[$locale->code]['locale_id'] = $locale->id; + } + } + } + } + + $category = $this->model->create($data); + + $this->uploadImages($data, $category); + + if (isset($data['attributes'])) { + $category->filterableAttributes()->sync($data['attributes']); + } + + Event::dispatch('catalog.category.create.after', $category); + + return $category; + } + + /** + * Specify category tree + * + * @param integer $id + * @return mixed + */ + public function getCategoryTree($id = null) + { + return $id + ? $this->model::orderBy('position', 'ASC')->where('id', '!=', $id)->get()->toTree() + : $this->model::orderBy('position', 'ASC')->get()->toTree(); + } + + /** + * Specify category tree + * + * @param integer $id + * @return mixed + */ + public function getCategoryTreeWithoutDescendant($id = null) + { + return $id + ? $this->model::orderBy('position', 'ASC')->where('id', '!=', $id)->whereNotDescendantOf($id)->get()->toTree() + : $this->model::orderBy('position', 'ASC')->get()->toTree(); + } + + /** + * Get root categories + * + * @return mixed + */ + public function getRootCategories() + { + return $this->getModel()->where('parent_id', NULL)->get(); + } + + /** + * get visible category tree + * + * @param integer $id + * @return mixed + */ + public function getVisibleCategoryTree($id = null) + { + static $categories = []; + + if(array_key_exists($id, $categories)) + return $categories[$id]; + + return $categories[$id] = $id + ? $this->model::orderBy('position', 'ASC')->where('status', 1)->descendantsOf($id)->toTree() + : $this->model::orderBy('position', 'ASC')->where('status', 1)->get()->toTree(); + } + + /** + * Checks slug is unique or not based on locale + * + * @param integer $id + * @param string $slug + * @return boolean + */ + public function isSlugUnique($id, $slug) + { + $exists = CategoryTranslation::where('category_id', '<>', $id) + ->where('slug', $slug) + ->limit(1) + ->select(DB::raw(1)) + ->exists(); + + return $exists ? false : true; + } + + /** + * Retrive category from slug + * + * @param string $slug + * @return mixed + */ + public function findBySlugOrFail($slug) + { + $category = $this->model->whereTranslation('slug', $slug)->first(); + + if ($category) { + return $category; + } + + throw (new ModelNotFoundException)->setModel( + get_class($this->model), $slug + ); + } + + /** + * @param string $urlPath + * + * @return mixed + */ + public function findByPath(string $urlPath) + { + return $this->model->whereTranslation('url_path', $urlPath)->first(); + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute = "id") + { + $category = $this->find($id); + + Event::dispatch('catalog.category.update.before', $id); + + $category->update($data); + + $this->uploadImages($data, $category); + + if (isset($data['attributes'])) { + $category->filterableAttributes()->sync($data['attributes']); + } + + Event::dispatch('catalog.category.update.after', $id); + + return $category; + } + + /** + * @param $id + * @return void + */ + public function delete($id) + { + Event::dispatch('catalog.category.delete.before', $id); + + parent::delete($id); + + Event::dispatch('catalog.category.delete.after', $id); + } + + /** + * @param array $data + * @param mixed $category + * @return void + */ + public function uploadImages($data, $category, $type = "image") + { + if (isset($data[$type])) { + $request = request(); + + foreach ($data[$type] as $imageId => $image) { + $file = $type . '.' . $imageId; + $dir = 'category/' . $category->id; + + if ($request->hasFile($file)) { + if ($category->{$type}) { + Storage::delete($category->{$type}); + } + + $category->{$type} = $request->file($file)->store($dir); + $category->save(); + } + } + } else { + if ($category->{$type}) { + Storage::delete($category->{$type}); + } + + $category->{$type} = null; + $category->save(); + } + } + + public function getPartial($columns = null) + { + $categories = $this->model->all(); + $trimmed = array(); + + foreach ($categories as $key => $category) { + if ($category->name != null || $category->name != "") { + $trimmed[$key] = [ + 'id' => $category->id, + 'name' => $category->name, + 'slug' => $category->slug + ]; + } + } + + return $trimmed; + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/src/resources/manifest.php b/packages/Webkul/Category/src/resources/manifest.php new file mode 100644 index 000000000..b3f21240d --- /dev/null +++ b/packages/Webkul/Category/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto Categories', + 'version' => '0.0.1' + ]; diff --git a/packages/Webkul/Checkout/.gitignore b/packages/Webkul/Checkout/.gitignore new file mode 100755 index 000000000..30bc16279 --- /dev/null +++ b/packages/Webkul/Checkout/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/packages/Webkul/Checkout/composer.json b/packages/Webkul/Checkout/composer.json new file mode 100755 index 000000000..4a930f8ab --- /dev/null +++ b/packages/Webkul/Checkout/composer.json @@ -0,0 +1,24 @@ +{ + "name": "bagisto/laravel-checkout", + "license": "MIT", + "authors": [ + { + "name": "Prashant Singh", + "email": "prashant.singh852@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\Checkout\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Checkout\\CheckoutServiceProvider" + ] + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php new file mode 100755 index 000000000..fcce552c9 --- /dev/null +++ b/packages/Webkul/Checkout/src/Cart.php @@ -0,0 +1,1021 @@ + + * @author Jitendra Singh + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Cart { + + /** + * CartRepository instance + * + * @var mixed + */ + protected $cartRepository; + + /** + * CartItemRepository instance + * + * @var mixed + */ + protected $cartItemRepository; + + /** + * CartAddressRepository instance + * + * @var mixed + */ + protected $cartAddressRepository; + + /** + * ProductRepository instance + * + * @var mixed + */ + protected $productRepository; + + /** + * TaxCategoryRepository instance + * + * @var mixed + */ + protected $taxCategoryRepository; + + /** + * WishlistRepository instance + * + * @var mixed + */ + protected $wishlistRepository; + + /** + * CustomerAddressRepository instance + * + * @var mixed + */ + protected $customerAddressRepository; + + /** + * Create a new controller instance. + * + * @param Webkul\Checkout\Repositories\CartRepository $cart + * @param Webkul\Checkout\Repositories\CartItemRepository $cartItem + * @param Webkul\Checkout\Repositories\CartAddressRepository $cartAddress + * @param Webkul\Product\Repositories\ProductRepository $product + * @param Webkul\Product\Repositories\TaxCategoryRepository $taxCategory + * @param Webkul\Product\Repositories\CustomerAddressRepository $customerAddress + * @param Webkul\Product\Repositories\CustomerAddressRepository $customerAddress + * @param Webkul\Discount\Repositories\CartRuleRepository $cartRule + * @param Webkul\Helpers\Discount $discount + * @return void + */ + public function __construct( + CartRepository $cartRepository, + CartItemRepository $cartItemRepository, + CartAddressRepository $cartAddressRepository, + ProductRepository $productRepository, + TaxCategoryRepository $taxCategoryRepository, + WishlistRepository $wishlistRepository, + CustomerAddressRepository $customerAddressRepository + ) + { + $this->cartRepository = $cartRepository; + + $this->cartItemRepository = $cartItemRepository; + + $this->cartAddressRepository = $cartAddressRepository; + + $this->productRepository = $productRepository; + + $this->taxCategoryRepository = $taxCategoryRepository; + + $this->wishlistRepository = $wishlistRepository; + + $this->customerAddressRepository = $customerAddressRepository; + } + + /** + * Return current logged in customer + * + * @return Customer|boolean + */ + public function getCurrentCustomer() + { + $guard = request()->has('token') ? 'api' : 'customer'; + + return auth()->guard($guard); + } + + /** + * Add Items in a cart with some cart and item details. + * + * @param integer $productId + * @param array $data + * @return Cart + */ + public function addProduct($productId, $data) + { + Event::dispatch('checkout.cart.add.before', $productId); + + $cart = $this->getCart(); + + if (! $cart && ! $cart = $this->create($data)) + return; + + $product = $this->productRepository->findOneByField('id', $productId); + + $cartProducts = $product->getTypeInstance()->prepareForCart($data); + + if (is_string($cartProducts)) { + $this->collectTotals(); + + throw new \Exception($cartProducts); + } else { + $parentCartItem = null; + + foreach ($cartProducts as $cartProduct) { + $cartItem = $this->getItemByProduct($cartProduct); + + if (isset($cartProduct['parent_id'])) + $cartProduct['parent_id'] = $parentCartItem->id; + + if (! $cartItem) { + $cartItem = $this->cartItemRepository->create(array_merge($cartProduct, ['cart_id' => $cart->id])); + } else { + if (isset($cartProduct['parent_id']) && $cartItem->parent_id != $parentCartItem->id) { + $cartItem = $this->cartItemRepository->create(array_merge($cartProduct, ['cart_id' => $cart->id])); + } else { + $cartItem = $this->cartItemRepository->update($cartProduct, $cartItem->id); + } + } + + if (! $parentCartItem) + $parentCartItem = $cartItem; + } + } + + Event::dispatch('checkout.cart.add.after', $cart); + + $this->collectTotals(); + + return $this->getCart(); + } + + /** + * Create new cart instance. + * + * @param array $data + * @return Cart|null + */ + public function create($data) + { + $cartData = [ + 'channel_id' => core()->getCurrentChannel()->id, + 'global_currency_code' => core()->getBaseCurrencyCode(), + 'base_currency_code' => core()->getBaseCurrencyCode(), + 'channel_currency_code' => core()->getChannelBaseCurrencyCode(), + 'cart_currency_code' => core()->getCurrentCurrencyCode(), + 'items_count' => 1 + ]; + + //Authentication details + if ($this->getCurrentCustomer()->check()) { + $cartData['customer_id'] = $this->getCurrentCustomer()->user()->id; + $cartData['is_guest'] = 0; + $cartData['customer_first_name'] = $this->getCurrentCustomer()->user()->first_name; + $cartData['customer_last_name'] = $this->getCurrentCustomer()->user()->last_name; + $cartData['customer_email'] = $this->getCurrentCustomer()->user()->email; + } else { + $cartData['is_guest'] = 1; + } + + $cart = $this->cartRepository->create($cartData); + + if (! $cart) { + session()->flash('error', trans('shop::app.checkout.cart.create-error')); + + return; + } + + $this->putCart($cart); + + return $cart; + } + + /** + * Update cart items information + * + * @param array $data + * + * @return string|boolean + */ + public function updateItems($data) + { + foreach ($data['qty'] as $itemId => $quantity) { + $item = $this->cartItemRepository->findOneByField('id', $itemId); + + if (! $item) + continue; + + if ($quantity <= 0) { + $this->removeItem($itemId); + + throw new \Exception(trans('shop::app.checkout.cart.quantity.illegal')); + } + + $item->quantity = $quantity; + + if (! $this->isItemHaveQuantity($item)) + throw new \Exception(trans('shop::app.checkout.cart.quantity.inventory_warning')); + + Event::dispatch('checkout.cart.update.before', $item); + + $this->cartItemRepository->update([ + 'quantity' => $quantity, + 'total' => core()->convertPrice($item->price * $quantity), + 'base_total' => $item->price * $quantity, + 'total_weight' => $item->weight * $quantity, + 'base_total_weight' => $item->weight * $quantity + ], $itemId); + + Event::dispatch('checkout.cart.update.after', $item); + } + + $this->collectTotals(); + + return true; + } + + /** + * Get cart item by product + * + * @param array $data + * @return CartItem|void + */ + public function getItemByProduct($data) + { + $items = $this->getCart()->all_items; + + foreach ($items as $item) { + if ($item->product->getTypeInstance()->compareOptions($item->additional, $data['additional'])) { + if (isset($data['additional']['parent_id'])) { + if ($item->parent->product->getTypeInstance()->compareOptions($item->parent->additional, request()->all())) + return $item; + } else { + return $item; + } + } + } + } + + /** + * Remove the item from the cart + * + * @param integer $itemId + * @return boolean + */ + public function removeItem($itemId) + { + Event::dispatch('checkout.cart.delete.before', $itemId); + + if (! $cart = $this->getCart()) + return false; + + $this->cartItemRepository->delete($itemId); + + //delete the cart instance if no items are there + if ($cart->items()->get()->count() == 0) { + $this->cartRepository->delete($cart->id); + + if (session()->has('cart')) { + session()->forget('cart'); + } + } + + Event::dispatch('checkout.cart.delete.after', $itemId); + + $this->collectTotals(); + + return true; + } + + /** + * This function handles when guest has some of cart products and then logs in. + * + * @return boolean + */ + public function mergeCart() + { + if (session()->has('cart')) { + $cart = $this->cartRepository->findOneWhere(['customer_id' => $this->getCurrentCustomer()->user()->id, 'is_active' => 1]); + + $guestCart = session()->get('cart'); + + //when the logged in customer is not having any of the cart instance previously and are active. + if (! $cart) { + $this->cartRepository->update([ + 'customer_id' => $this->getCurrentCustomer()->user()->id, + 'is_guest' => 0, + 'customer_first_name' => $this->getCurrentCustomer()->user()->first_name, + 'customer_last_name' => $this->getCurrentCustomer()->user()->last_name, + 'customer_email' => $this->getCurrentCustomer()->user()->email + ], $guestCart->id); + + session()->forget('cart'); + + return true; + } + + foreach ($guestCart->items as $key => $guestCartItem) { + + $found = false; + + foreach ($cart->items as $cartItem) { + if (! $cartItem->product->getTypeInstance()->compareOptions($cartItem->additional, $guestCartItem->additional)) + continue; + + $cartItem->quantity = $newQuantity = $cartItem->quantity + $guestCartItem->quantity; + + if (! $this->isItemHaveQuantity($cartItem)) { + $this->cartItemRepository->delete($guestCartItem->id); + + continue; + } + + $this->cartItemRepository->update([ + 'quantity' => $newQuantity, + 'total' => core()->convertPrice($cartItem->price * $newQuantity), + 'base_total' => $cartItem->price * $newQuantity, + 'total_weight' => $cartItem->weight * $newQuantity, + 'base_total_weight' => $cartItem->weight * $newQuantity + ], $cartItem->id); + + $guestCart->items->forget($key); + + $this->cartItemRepository->delete($guestCartItem->id); + + $found = true; + } + + if (! $found) { + $this->cartItemRepository->update([ + 'cart_id' => $cart->id + ], $guestCartItem->id); + + foreach ($guestCartItem->children as $child) { + $this->cartItemRepository->update([ + 'cart_id' => $cart->id + ], $child->id); + } + } + } + + $this->collectTotals(); + + $this->cartRepository->delete($guestCart->id); + + session()->forget('cart'); + } + + return true; + } + + /** + * Save cart + * + * @param Cart $cart + * @return void + */ + public function putCart($cart) + { + if (! $this->getCurrentCustomer()->check()) { + session()->put('cart', $cart); + } + } + + /** + * Returns cart + * + * @return Cart|null + */ + public function getCart() + { + $cart = null; + + if ($this->getCurrentCustomer()->check()) { + $cart = $this->cartRepository->findOneWhere([ + 'customer_id' => $this->getCurrentCustomer()->user()->id, + 'is_active' => 1 + ]); + } elseif (session()->has('cart')) { + $cart = $this->cartRepository->find(session()->get('cart')->id); + } + + return $cart && $cart->is_active ? $cart : null; + } + + /** + * Returns cart details in array + * + * @return array + */ + public function toArray() + { + $cart = $this->getCart(); + + $data = $cart->toArray(); + + $data['billing_address'] = $cart->billing_address->toArray(); + + if ($cart->haveStockableItems()) { + $data['shipping_address'] = $cart->shipping_address->toArray(); + + $data['selected_shipping_rate'] = $cart->selected_shipping_rate->toArray(); + } + + $data['payment'] = $cart->payment->toArray(); + + $data['items'] = $cart->items->toArray(); + + return $data; + } + + /** + * Save customer address + * + * @param array $data + * @return boolean + */ + public function saveCustomerAddress($data) + { + if (! $cart = $this->getCart()) + return false; + + $billingAddress = $data['billing']; + $billingAddress['cart_id'] = $cart->id; + + if (isset($data['billing']['address_id']) && $data['billing']['address_id']) { + $address = $this->customerAddressRepository->findOneWhere(['id'=> $data['billing']['address_id']])->toArray(); + + $billingAddress['first_name'] = $this->getCurrentCustomer()->user()->first_name; + $billingAddress['last_name'] = $this->getCurrentCustomer()->user()->last_name; + $billingAddress['email'] = $this->getCurrentCustomer()->user()->email; + $billingAddress['address1'] = $address['address1']; + $billingAddress['country'] = $address['country']; + $billingAddress['state'] = $address['state']; + $billingAddress['city'] = $address['city']; + $billingAddress['postcode'] = $address['postcode']; + $billingAddress['phone'] = $address['phone']; + } + + if (isset($data['billing']['save_as_address']) && $data['billing']['save_as_address']) { + $billingAddress['customer_id'] = $this->getCurrentCustomer()->user()->id; + $this->customerAddressRepository->create($billingAddress); + } + + if ($cart->haveStockableItems()) { + $shippingAddress = $data['shipping']; + $shippingAddress['cart_id'] = $cart->id; + + if (isset($data['shipping']['address_id']) && $data['shipping']['address_id']) { + $address = $this->customerAddressRepository->findOneWhere(['id'=> $data['shipping']['address_id']])->toArray(); + + $shippingAddress['first_name'] = $this->getCurrentCustomer()->user()->first_name; + $shippingAddress['last_name'] = $this->getCurrentCustomer()->user()->last_name; + $shippingAddress['email'] = $this->getCurrentCustomer()->user()->email; + $shippingAddress['address1'] = $address['address1']; + $shippingAddress['country'] = $address['country']; + $shippingAddress['state'] = $address['state']; + $shippingAddress['city'] = $address['city']; + $shippingAddress['postcode'] = $address['postcode']; + $shippingAddress['phone'] = $address['phone']; + } + + if (isset($data['shipping']['save_as_address']) && $data['shipping']['save_as_address']) { + $shippingAddress['customer_id'] = $this->getCurrentCustomer()->user()->id; + + $this->customerAddressRepository->create($shippingAddress); + } + } + + if ($billingAddressModel = $cart->billing_address) { + $this->cartAddressRepository->update($billingAddress, $billingAddressModel->id); + + if ($cart->haveStockableItems()) { + if ($shippingAddressModel = $cart->shipping_address) { + if (isset($billingAddress['use_for_shipping']) && $billingAddress['use_for_shipping']) { + $this->cartAddressRepository->update($billingAddress, $shippingAddressModel->id); + } else { + $this->cartAddressRepository->update($shippingAddress, $shippingAddressModel->id); + } + } else { + if (isset($billingAddress['use_for_shipping']) && $billingAddress['use_for_shipping']) { + $this->cartAddressRepository->create(array_merge($billingAddress, ['address_type' => 'shipping'])); + } else { + $this->cartAddressRepository->create(array_merge($shippingAddress, ['address_type' => 'shipping'])); + } + } + } + } else { + $this->cartAddressRepository->create(array_merge($billingAddress, ['address_type' => 'billing'])); + + if ($cart->haveStockableItems()) { + if (isset($billingAddress['use_for_shipping']) && $billingAddress['use_for_shipping']) { + $this->cartAddressRepository->create(array_merge($billingAddress, ['address_type' => 'shipping'])); + } else { + $this->cartAddressRepository->create(array_merge($shippingAddress, ['address_type' => 'shipping'])); + } + } + } + + if ($this->getCurrentCustomer()->check()) { + $cart->customer_email = $this->getCurrentCustomer()->user()->email; + $cart->customer_first_name = $this->getCurrentCustomer()->user()->first_name; + $cart->customer_last_name = $this->getCurrentCustomer()->user()->last_name; + } else { + $cart->customer_email = $cart->billing_address->email; + $cart->customer_first_name = $cart->billing_address->first_name; + $cart->customer_last_name = $cart->billing_address->last_name; + } + + $cart->save(); + + return true; + } + + /** + * Save shipping method for cart + * + * @param string $shippingMethodCode + * @return boolean + */ + public function saveShippingMethod($shippingMethodCode) + { + if (! $cart = $this->getCart()) + return false; + + $cart->shipping_method = $shippingMethodCode; + $cart->save(); + + return true; + } + + /** + * Save payment method for cart + * + * @param string $payment + * @return CartPayment + */ + public function savePaymentMethod($payment) + { + if (! $cart = $this->getCart()) + return false; + + if ($cartPayment = $cart->payment) + $cartPayment->delete(); + + $cartPayment = new CartPayment; + + $cartPayment->method = $payment['method']; + $cartPayment->cart_id = $cart->id; + $cartPayment->save(); + + return $cartPayment; + } + + /** + * Updates cart totals + * + * @return void + */ + public function collectTotals() + { + $validated = $this->validateItems(); + + if (! $validated) + return false; + + if (! $cart = $this->getCart()) + return false; + + Event::fire('checkout.cart.collect.totals.before', $cart); + + $this->calculateItemsTax(); + + $cart->grand_total = $cart->base_grand_total = 0; + $cart->sub_total = $cart->base_sub_total = 0; + $cart->tax_total = $cart->base_tax_total = 0; + $cart->discount_amount = $cart->base_discount_amount = 0; + + foreach ($cart->items()->get() as $item) { + $cart->discount_amount += $item->discount_amount; + $cart->base_discount_amount += $item->base_discount_amount; + + $cart->grand_total = (float) $cart->grand_total + $item->total + $item->tax_amount - $item->discount_amount; + $cart->base_grand_total = (float) $cart->base_grand_total + $item->base_total + $item->base_tax_amount - $item->base_discount_amount; + + $cart->sub_total = (float) $cart->sub_total + $item->total; + $cart->base_sub_total = (float) $cart->base_sub_total + $item->base_total; + + $cart->tax_total = (float) $cart->tax_total + $item->tax_amount; + $cart->base_tax_total = (float) $cart->base_tax_total + $item->base_tax_amount; + } + + if ($shipping = $cart->selected_shipping_rate) { + $cart->grand_total = (float) $cart->grand_total + $shipping->price - $shipping->discount_amount; + $cart->base_grand_total = (float) $cart->base_grand_total + $shipping->base_price - $shipping->base_discount_amount; + + $cart->discount_amount += $shipping->discount_amount; + $cart->base_discount_amount += $shipping->base_discount_amount; + } + + $quantities = 0; + + foreach ($cart->items as $item) { + $quantities = $quantities + $item->quantity; + } + + $cart->items_count = $cart->items->count(); + + $cart->items_qty = $quantities; + + $cart->save(); + + Event::fire('checkout.cart.collect.totals.after', $cart); + } + + /** + * To validate if the product information is changed by admin and the items have + * been added to the cart before it. + * + * @return boolean + */ + public function validateItems() + { + if (! $cart = $this->getCart()) + return; + + //rare case of accident-->used when there are no items. + if (count($cart->items) == 0) { + $this->cartRepository->delete($cart->id); + + return false; + } else { + foreach ($cart->items as $item) { + $item->product->getTypeInstance()->validateCartItem($item); + + $price = ! is_null($item->custom_price) ? $item->custom_price : $item->base_price; + + $this->cartItemRepository->update([ + 'price' => core()->convertPrice($price), + 'base_price' => $price, + 'total' => core()->convertPrice($price * $item->quantity), + 'base_total' => $price * $item->quantity, + ], $item->id); + } + + return true; + } + } + + /** + * Calculates cart items tax + * + * @return void + */ + public function calculateItemsTax() + { + if (! $cart = $this->getCart()) + return false; + + if (! $cart->shipping_address && ! $cart->billing_address) + return; + + foreach ($cart->items()->get() as $item) { + $taxCategory = $this->taxCategoryRepository->find($item->product->tax_category_id); + + if (! $taxCategory) + continue; + + if ($item->product->getTypeInstance()->isStockable()) { + $address = $cart->shipping_address; + } else { + $address = $cart->billing_address; + } + + $taxRates = $taxCategory->tax_rates()->where([ + 'country' => $address->country, + ])->orderBy('tax_rate', 'desc')->get(); + + if ($taxRates->count()) { + foreach ($taxRates as $rate) { + $haveTaxRate = false; + + if ($rate->state != '' && $rate->state != $address->state) + continue; + + if (! $rate->is_zip) { + if ($rate->zip_code == '*' || $rate->zip_code == $address->postcode) + $haveTaxRate = true; + } else { + if ($address->postcode >= $rate->zip_from && $address->postcode <= $rate->zip_to) + $haveTaxRate = true; + } + + if ($haveTaxRate) { + $item->tax_percent = $rate->tax_rate; + $item->tax_amount = ($item->total * $rate->tax_rate) / 100; + $item->base_tax_amount = ($item->base_total * $rate->tax_rate) / 100; + + $item->save(); + break; + } + } + } else { + $item->tax_percent = 0; + $item->tax_amount = 0; + $item->base_tax_amount = 0; + + $item->save(); + } + } + } + + /** + * Checks if cart has any error + * + * @return boolean + */ + public function hasError() + { + if (! $this->getCart()) + return true; + + if (! $this->isItemsHaveSufficientQuantity()) + return true; + + return false; + } + + /** + * Checks if all cart items have sufficient quantity. + * + * @return boolean + */ + public function isItemsHaveSufficientQuantity() + { + foreach ($this->getCart()->items as $item) { + if (! $this->isItemHaveQuantity($item)) + return false; + } + + return true; + } + + /** + * Checks if all cart items have sufficient quantity. + * + * @param CartItem $item + * @return boolean + */ + public function isItemHaveQuantity($item) + { + return $item->product->getTypeInstance()->isItemHaveQuantity($item); + } + + /** + * Deactivates current cart + * + * @return void + */ + public function deActivateCart() + { + if ($cart = $this->getCart()) { + $this->cartRepository->update(['is_active' => false], $cart->id); + + if (session()->has('cart')) { + session()->forget('cart'); + } + } + } + + /** + * Validate order before creation + * + * @return array + */ + public function prepareDataForOrder() + { + $data = $this->toArray(); + + $finalData = [ + 'cart_id' => $this->getCart()->id, + 'customer_id' => $data['customer_id'], + 'is_guest' => $data['is_guest'], + 'customer_email' => $data['customer_email'], + 'customer_first_name' => $data['customer_first_name'], + 'customer_last_name' => $data['customer_last_name'], + 'customer' => $this->getCurrentCustomer()->check() ? $this->getCurrentCustomer()->user() : null, + 'total_item_count' => $data['items_count'], + 'total_qty_ordered' => $data['items_qty'], + 'base_currency_code' => $data['base_currency_code'], + 'channel_currency_code' => $data['channel_currency_code'], + 'order_currency_code' => $data['cart_currency_code'], + 'grand_total' => $data['grand_total'], + 'base_grand_total' => $data['base_grand_total'], + 'sub_total' => $data['sub_total'], + 'base_sub_total' => $data['base_sub_total'], + 'tax_amount' => $data['tax_total'], + 'base_tax_amount' => $data['base_tax_total'], + 'coupon_code' => $data['coupon_code'], + 'applied_cart_rule_ids' => $data['applied_cart_rule_ids'], + 'discount_amount' => $data['discount_amount'], + 'base_discount_amount' => $data['base_discount_amount'], + 'billing_address' => Arr::except($data['billing_address'], ['id', 'cart_id']), + 'payment' => Arr::except($data['payment'], ['id', 'cart_id']), + 'channel' => core()->getCurrentChannel(), + ]; + + if ($this->getCart()->haveStockableItems()) { + $finalData = array_merge($finalData, [ + 'shipping_method' => $data['selected_shipping_rate']['method'], + 'shipping_title' => $data['selected_shipping_rate']['carrier_title'] . ' - ' . $data['selected_shipping_rate']['method_title'], + 'shipping_description' => $data['selected_shipping_rate']['method_description'], + 'shipping_amount' => $data['selected_shipping_rate']['price'], + 'base_shipping_amount' => $data['selected_shipping_rate']['base_price'], + 'shipping_address' => Arr::except($data['shipping_address'], ['id', 'cart_id']), + 'shipping_discount_amount' => $data['selected_shipping_rate']['discount_amount'], + 'base_shipping_discount_amount' => $data['selected_shipping_rate']['base_discount_amount'], + ]); + } + + foreach ($data['items'] as $item) { + $finalData['items'][] = $this->prepareDataForOrderItem($item); + } + + return $finalData; + } + + /** + * Prepares data for order item + * + * @param array $data + * @return array + */ + public function prepareDataForOrderItem($data) + { + $finalData = [ + 'product' => $this->productRepository->find($data['product_id']), + 'sku' => $data['sku'], + 'type' => $data['type'], + 'name' => $data['name'], + 'weight' => $data['weight'], + 'total_weight' => $data['total_weight'], + 'qty_ordered' => $data['quantity'], + 'price' => $data['price'], + 'base_price' => $data['base_price'], + 'total' => $data['total'], + 'base_total' => $data['base_total'], + 'tax_percent' => $data['tax_percent'], + 'tax_amount' => $data['tax_amount'], + 'base_tax_amount' => $data['base_tax_amount'], + 'discount_percent' => $data['discount_percent'], + 'discount_amount' => $data['discount_amount'], + 'base_discount_amount' => $data['base_discount_amount'], + 'additional' => $data['additional'], + ]; + + if (isset($data['children']) && $data['children']) { + foreach ($data['children'] as $child) { + $child['quantity'] = $child['quantity'] ? $child['quantity'] * $data['quantity'] : $child['quantity']; + + $finalData['children'][] = $this->prepareDataForOrderItem($child); + } + } + + return $finalData; + } + + /** + * Move a wishlist item to cart + * + * @param WishlistItem $wishlistItem + * @return boolean + */ + public function moveToCart($wishlistItem) + { + if (! $wishlistItem->product->getTypeInstance()->canBeMovedFromWishlistToCart($wishlistItem)) + return false; + + if (! $wishlistItem->additional) + $wishlistItem->additional = ['product_id' => $wishlistItem->product_id]; + + request()->merge($wishlistItem->additional); + + $result = $this->addProduct($wishlistItem->product_id, $wishlistItem->additional); + + if ($result) { + $this->wishlistRepository->delete($wishlistItem->id); + + return true; + } + + return false; + } + + /** + * Function to move a already added product to wishlist will run only on customer authentication. + * + * @param integer $itemId + * @return boolean|void + */ + public function moveToWishlist($itemId) + { + $cart = $this->getCart(); + + $cartItem = $cart->items()->find($itemId); + + if (! $cartItem) + return false; + + $wishlistItems = $this->wishlistRepository->findWhere([ + 'customer_id' => $this->getCurrentCustomer()->user()->id, + 'product_id' => $cartItem->product_id + ]); + + $found = false; + + foreach ($wishlistItems as $wishlistItem) { + if ($cartItem->product->getTypeInstance()->compareOptions($cartItem->additional, $wishlistItem->item_options)) + $found = true; + } + + if (! $found) { + $this->wishlistRepository->create([ + 'channel_id' => $cart->channel_id, + 'customer_id' => $this->getCurrentCustomer()->user()->id, + 'product_id' => $cartItem->product_id, + 'additional' => $cartItem->additional + ]); + } + + $result = $this->cartItemRepository->delete($itemId); + + if (! $cart->items()->count()) + $this->cartRepository->delete($cart->id); + + $this->collectTotals(); + + return true; + } + + /** + * Set coupon code to the cart + * + * @param string $code + * @return Cart + */ + public function setCouponCode($code) + { + $cart = $this->getCart(); + + $cart->coupon_code = $code; + + $cart->save(); + + return $this; + } + + /** + * Remove coupon code from cart + * + * @return Cart + */ + public function removeCouponCode() + { + $cart = $this->getCart(); + + $cart->coupon_code = null; + + $cart->save(); + + return $this; + } +} \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/Contracts/Cart.php b/packages/Webkul/Checkout/src/Contracts/Cart.php new file mode 100644 index 000000000..ca0c5f3e3 --- /dev/null +++ b/packages/Webkul/Checkout/src/Contracts/Cart.php @@ -0,0 +1,7 @@ +increments('id'); + + $table->string('customer_email')->nullable(); + $table->string('customer_first_name')->nullable(); + $table->string('customer_last_name')->nullable(); + + $table->string('shipping_method')->nullable(); + $table->string('coupon_code')->nullable(); + $table->boolean('is_gift')->default(0); + $table->integer('items_count')->nullable(); + $table->decimal('items_qty', 12, 4)->nullable(); + $table->decimal('exchange_rate', 12, 4)->nullable(); + + $table->string('global_currency_code')->nullable(); + $table->string('base_currency_code')->nullable(); + $table->string('channel_currency_code')->nullable(); + $table->string('cart_currency_code')->nullable(); + + $table->decimal('grand_total', 12, 4)->default(0)->nullable(); + $table->decimal('base_grand_total', 12, 4)->default(0)->nullable(); + + $table->decimal('sub_total', 12, 4)->default(0)->nullable(); + $table->decimal('base_sub_total', 12, 4)->default(0)->nullable(); + + $table->decimal('tax_total', 12, 4)->default(0)->nullable(); + $table->decimal('base_tax_total', 12, 4)->default(0)->nullable(); + + $table->decimal('discount', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount', 12, 4)->default(0)->nullable(); + + $table->string('checkout_method')->nullable(); + $table->boolean('is_guest')->nullable(); + $table->boolean('is_active')->nullable()->default(1); + $table->dateTime('conversion_time')->nullable(); + + $table->integer('customer_id')->unsigned()->nullable(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); + $table->integer('channel_id')->unsigned(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart'); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2018_09_05_150915_create_cart_items_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2018_09_05_150915_create_cart_items_table.php new file mode 100755 index 000000000..5d6a90cae --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2018_09_05_150915_create_cart_items_table.php @@ -0,0 +1,68 @@ +increments('id'); + $table->integer('quantity')->unsigned()->default(0); + $table->string('sku')->nullable(); + $table->string('type')->nullable(); + $table->string('name')->nullable(); + $table->string('coupon_code')->nullable(); + $table->decimal('weight', 12,4)->default(1); + $table->decimal('total_weight', 12,4)->default(0); + $table->decimal('base_total_weight', 12,4)->default(0); + + $table->decimal('price', 12,4)->default(1); + $table->decimal('base_price', 12,4)->default(0); + $table->decimal('custom_price', 12,4)->default(0); + + $table->decimal('total', 12,4)->default(0); + $table->decimal('base_total', 12,4)->default(0); + + $table->decimal('tax_percent', 12, 4)->default(0)->nullable(); + $table->decimal('tax_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_tax_amount', 12, 4)->default(0)->nullable(); + + $table->decimal('discount_percent', 12,4)->default(0); + $table->decimal('discount_amount', 12,4)->default(0); + $table->decimal('base_discount_amount', 12,4)->default(0); + + $table->json('additional')->nullable(); + + $table->integer('parent_id')->unsigned()->nullable(); + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + $table->integer('cart_id')->unsigned(); + $table->foreign('cart_id')->references('id')->on('cart')->onDelete('cascade'); + $table->integer('tax_category_id')->unsigned()->nullable(); + $table->foreign('tax_category_id')->references('id')->on('tax_categories'); + $table->timestamps(); + }); + + Schema::table('cart_items', function (Blueprint $table) { + $table->foreign('parent_id')->references('id')->on('cart_items')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart_items'); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2018_09_19_092845_create_cart_address.php b/packages/Webkul/Checkout/src/Database/Migrations/2018_09_19_092845_create_cart_address.php new file mode 100755 index 000000000..b0825103a --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2018_09_19_092845_create_cart_address.php @@ -0,0 +1,46 @@ +increments('id'); + $table->string('first_name'); + $table->string('last_name'); + $table->string('email'); + $table->string('address1'); + $table->string('address2')->nullable(); + $table->string('country'); + $table->string('state'); + $table->string('city'); + $table->integer('postcode'); + $table->string('phone'); + $table->string('address_type'); + $table->integer('cart_id')->nullable()->unsigned(); + $table->foreign('cart_id')->references('id')->on('cart')->onDelete('cascade'); + $table->integer('customer_id')->nullable()->unsigned(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart_address'); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2018_09_19_093453_create_cart_payment.php b/packages/Webkul/Checkout/src/Database/Migrations/2018_09_19_093453_create_cart_payment.php new file mode 100755 index 000000000..5a175add1 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2018_09_19_093453_create_cart_payment.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('method'); + $table->string('method_title')->nullable(); + $table->integer('cart_id')->nullable()->unsigned(); + $table->foreign('cart_id')->references('id')->on('cart')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart_payment'); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2018_09_19_093508_create_cart_shipping_rates_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2018_09_19_093508_create_cart_shipping_rates_table.php new file mode 100755 index 000000000..9588f961b --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2018_09_19_093508_create_cart_shipping_rates_table.php @@ -0,0 +1,40 @@ +increments('id'); + $table->string('carrier'); + $table->string('carrier_title'); + $table->string('method'); + $table->string('method_title'); + $table->string('method_description')->nullable(); + $table->double('price')->default(0)->nullable(); + $table->double('base_price')->default(0)->nullable(); + $table->integer('cart_address_id')->nullable()->unsigned(); + $table->foreign('cart_address_id')->references('id')->on('cart_address')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart_shipping_rates'); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2018_11_21_144411_create_cart_item_inventories_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2018_11_21_144411_create_cart_item_inventories_table.php new file mode 100755 index 000000000..fd74ea4f6 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2018_11_21_144411_create_cart_item_inventories_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->integer('qty')->unsigned()->default(0); + $table->integer('inventory_source_id')->unsigned()->nullable(); + $table->integer('cart_item_id')->unsigned()->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cart_item_inventories'); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_05_22_165833_update_zipcode_column_type_to_varchar_in_cart_address_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_05_22_165833_update_zipcode_column_type_to_varchar_in_cart_address_table.php new file mode 100644 index 000000000..2deda260e --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_05_22_165833_update_zipcode_column_type_to_varchar_in_cart_address_table.php @@ -0,0 +1,32 @@ +string('postcode')->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('cart_address', function (Blueprint $table) { + $table->integer('postcode')->change(); + }); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_05_23_184029_rename_discount_columns_in_cart_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_05_23_184029_rename_discount_columns_in_cart_table.php new file mode 100644 index 000000000..44546ded3 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_05_23_184029_rename_discount_columns_in_cart_table.php @@ -0,0 +1,34 @@ +renameColumn('discount', 'discount_amount'); + $table->renameColumn('base_discount', 'base_discount_amount'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('cart', function (Blueprint $table) { + $table->renameColumn('discount_amount', 'discount'); + $table->renameColumn('base_discount_amount', 'base_discount'); + }); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_06_06_195905_update_custom_price_to_nullable_in_cart_items.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_06_06_195905_update_custom_price_to_nullable_in_cart_items.php new file mode 100644 index 000000000..58d2dac96 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_06_06_195905_update_custom_price_to_nullable_in_cart_items.php @@ -0,0 +1,40 @@ +dropColumn('custom_price'); + }); + + Schema::table('cart_items', function (Blueprint $table) { + $table->decimal('custom_price', 12,4)->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('cart_items', function (Blueprint $table) { + $table->dropColumn('custom_price'); + }); + + Schema::table('cart_items', function (Blueprint $table) { + $table->decimal('custom_price', 12,4)->default(0); + }); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_06_21_130512_update_weight_column_deafult_value_in_cart_items_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_06_21_130512_update_weight_column_deafult_value_in_cart_items_table.php new file mode 100644 index 000000000..a57076dba --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_06_21_130512_update_weight_column_deafult_value_in_cart_items_table.php @@ -0,0 +1,32 @@ +decimal('weight', 12,4)->default(0)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('cart_items', function (Blueprint $table) { + $table->decimal('weight', 12,4)->default(1)->change(); + }); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_10_24_173437_change_postcode_column_type_in_cart_address_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_10_24_173437_change_postcode_column_type_in_cart_address_table.php new file mode 100644 index 000000000..031f02735 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_10_24_173437_change_postcode_column_type_in_cart_address_table.php @@ -0,0 +1,32 @@ +string('postcode')->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('cart_address', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_11_25_171136_add_applied_cart_rule_ids_column_in_cart_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_11_25_171136_add_applied_cart_rule_ids_column_in_cart_table.php new file mode 100644 index 000000000..b6423d3be --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_11_25_171136_add_applied_cart_rule_ids_column_in_cart_table.php @@ -0,0 +1,32 @@ +string('applied_cart_rule_ids')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('cart', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_11_25_171208_add_applied_cart_rule_ids_column_in_cart_items_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_11_25_171208_add_applied_cart_rule_ids_column_in_cart_items_table.php new file mode 100644 index 000000000..cb22375bf --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_11_25_171208_add_applied_cart_rule_ids_column_in_cart_items_table.php @@ -0,0 +1,32 @@ +string('applied_cart_rule_ids')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('cart_items', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Checkout/src/Database/Migrations/2019_11_30_165644_add_discount_columns_in_cart_shipping_rates_table.php b/packages/Webkul/Checkout/src/Database/Migrations/2019_11_30_165644_add_discount_columns_in_cart_shipping_rates_table.php new file mode 100644 index 000000000..8c7b48e44 --- /dev/null +++ b/packages/Webkul/Checkout/src/Database/Migrations/2019_11_30_165644_add_discount_columns_in_cart_shipping_rates_table.php @@ -0,0 +1,33 @@ +decimal('discount_amount', 12, 4)->default(0); + $table->decimal('base_discount_amount', 12, 4)->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('cart_shipping_rates', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Checkout/src/Facades/Cart.php b/packages/Webkul/Checkout/src/Facades/Cart.php new file mode 100755 index 000000000..bc4c52c07 --- /dev/null +++ b/packages/Webkul/Checkout/src/Facades/Cart.php @@ -0,0 +1,18 @@ +get('billing')['address_id'])) { + $this->rules = [ + 'billing.address_id' => ['required'], + ]; + } else { + $this->rules = [ + 'billing.first_name' => ['required'], + 'billing.last_name' => ['required'], + 'billing.email' => ['required'], + 'billing.address1' => ['required'], + 'billing.city' => ['required'], + 'billing.state' => ['required'], + 'billing.postcode' => ['required'], + 'billing.phone' => ['required'], + 'billing.country' => ['required'] + ]; + } + + if (isset($this->get('billing')['use_for_shipping']) && !$this->get('billing')['use_for_shipping']) { + if (isset($this->get('shipping')['address_id'])) { + $this->rules = array_merge($this->rules, [ + 'shipping.address_id' => ['required'], + ]); + } else { + $this->rules = array_merge($this->rules, [ + 'shipping.first_name' => ['required'], + 'shipping.last_name' => ['required'], + 'shipping.email' => ['required'], + 'shipping.address1' => ['required'], + 'shipping.city' => ['required'], + 'shipping.state' => ['required'], + 'shipping.postcode' => ['required'], + 'shipping.phone' => ['required'], + 'shipping.country' => ['required'] + ]); + } + } + + return $this->rules; + } +} diff --git a/packages/Webkul/Checkout/src/Http/helpers.php b/packages/Webkul/Checkout/src/Http/helpers.php new file mode 100755 index 000000000..ded8b05f1 --- /dev/null +++ b/packages/Webkul/Checkout/src/Http/helpers.php @@ -0,0 +1,10 @@ +make(Cart::class); + } + } +?> \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/Listeners/CustomerEventsHandler.php b/packages/Webkul/Checkout/src/Listeners/CustomerEventsHandler.php new file mode 100755 index 000000000..9aa1af366 --- /dev/null +++ b/packages/Webkul/Checkout/src/Listeners/CustomerEventsHandler.php @@ -0,0 +1,32 @@ +listen('customer.after.login', 'Webkul\Checkout\Listeners\CustomerEventsHandler@onCustomerLogin'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/Models/Cart.php b/packages/Webkul/Checkout/src/Models/Cart.php new file mode 100755 index 000000000..9088531fa --- /dev/null +++ b/packages/Webkul/Checkout/src/Models/Cart.php @@ -0,0 +1,132 @@ +hasMany(CartItemProxy::modelClass())->whereNull('parent_id'); + } + + /** + * To get all the associated items with the cart instance even the parent and child items of configurable products + */ + public function all_items() { + return $this->hasMany(CartItemProxy::modelClass()); + } + + /** + * Get the addresses for the cart. + */ + public function addresses() + { + return $this->hasMany(CartAddressProxy::modelClass()); + } + + /** + * Get the biling address for the cart. + */ + public function billing_address() + { + return $this->addresses()->where('address_type', 'billing'); + } + + /** + * Get billing address for the cart. + */ + public function getBillingAddressAttribute() + { + return $this->billing_address()->first(); + } + + /** + * Get the shipping address for the cart. + */ + public function shipping_address() + { + return $this->addresses()->where('address_type', 'shipping'); + } + + /** + * Get shipping address for the cart. + */ + public function getShippingAddressAttribute() + { + return $this->shipping_address()->first(); + } + + /** + * Get the shipping rates for the cart. + */ + public function shipping_rates() + { + return $this->hasManyThrough(CartShippingRateProxy::modelClass(), CartAddressProxy::modelClass(), 'cart_id', 'cart_address_id'); + } + + /** + * Get all of the attributes for the attribute groups. + */ + public function selected_shipping_rate() + { + return $this->shipping_rates()->where('method', $this->shipping_method); + } + + /** + * Get all of the attributes for the attribute groups. + */ + public function getSelectedShippingRateAttribute() + { + return $this->selected_shipping_rate()->where('method', $this->shipping_method)->first(); + } + + /** + * Get the payment associated with the cart. + */ + public function payment() + { + return $this->hasOne(CartPaymentProxy::modelClass()); + } + + /** + * Checks if cart have stockable items + * + * @return boolean + */ + public function haveStockableItems() + { + foreach ($this->items as $item) { + if ($item->product->isStockable()) + return true; + } + + return false; + } + + /** + * Checks if cart have downloadable items + * + * @return boolean + */ + public function haveDownloadableItems() + { + foreach ($this->items as $item) { + if ($item->type == 'downloadable') + return true; + } + + return false; + } +} \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/Models/CartAddress.php b/packages/Webkul/Checkout/src/Models/CartAddress.php new file mode 100755 index 000000000..1434b838c --- /dev/null +++ b/packages/Webkul/Checkout/src/Models/CartAddress.php @@ -0,0 +1,29 @@ +hasMany(CartShippingRateProxy::modelClass()); + } + + /** + * Get all of the attributes for the attribute groups. + */ + public function getNameAttribute() + { + return $this->first_name . ' ' . $this->last_name; + } +} \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/Models/CartAddressProxy.php b/packages/Webkul/Checkout/src/Models/CartAddressProxy.php new file mode 100644 index 000000000..7ae3f6b44 --- /dev/null +++ b/packages/Webkul/Checkout/src/Models/CartAddressProxy.php @@ -0,0 +1,10 @@ + 'array', + ]; + + protected $guarded = ['id', 'created_at', 'updated_at']; + + public function product() + { + return $this->hasOne(ProductProxy::modelClass(), 'id', 'product_id'); + } + + /** + * The Product Flat that belong to the product. + */ + public function product_flat() + { + return (ProductFlatProxy::modelClass()) + ::where('product_flat.product_id', $this->product_id) + ->where('product_flat.locale', app()->getLocale()) + ->where('product_flat.channel', core()->getCurrentChannelCode()) + ->select('product_flat.*'); + } + + /** + * Get all of the attributes for the attribute groups. + */ + public function getProductFlatAttribute() + { + return $this->product_flat()->first(); + } + + public function cart() + { + return $this->hasOne(CartProxy::modelClass(), 'id', 'cart_id'); + } + + /** + * Get the child item. + */ + public function child() + { + return $this->belongsTo(static::class, 'id', 'parent_id'); + } + + /** + * Get the parent item record associated with the cart item. + */ + public function parent() + { + return $this->belongsTo(self::class, 'parent_id'); + } + + /** + * Get the children items. + */ + public function children() + { + return $this->hasMany(self::class, 'parent_id'); + } +} diff --git a/packages/Webkul/Checkout/src/Models/CartItemProxy.php b/packages/Webkul/Checkout/src/Models/CartItemProxy.php new file mode 100644 index 000000000..ac5af959c --- /dev/null +++ b/packages/Webkul/Checkout/src/Models/CartItemProxy.php @@ -0,0 +1,10 @@ +belongsTo(CartAddressProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/Models/CartShippingRateProxy.php b/packages/Webkul/Checkout/src/Models/CartShippingRateProxy.php new file mode 100644 index 000000000..3ba6db1b1 --- /dev/null +++ b/packages/Webkul/Checkout/src/Models/CartShippingRateProxy.php @@ -0,0 +1,10 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + + $this->app->register(ModuleServiceProvider::class); + + $this->app->register(EventServiceProvider::class); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + $this->registerFacades(); + } + + /** + * Register Bouncer as a singleton. + * + * @return void + */ + protected function registerFacades() + { + //to make the cart facade and bind the + //alias to the class needed to be called. + $loader = AliasLoader::getInstance(); + + $loader->alias('cart', Cart::class); + + $this->app->singleton('cart', function () { + return new cart(); + }); + + $this->app->bind('cart', 'Webkul\Checkout\Cart'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/Providers/EventServiceProvider.php b/packages/Webkul/Checkout/src/Providers/EventServiceProvider.php new file mode 100644 index 000000000..f34647dd5 --- /dev/null +++ b/packages/Webkul/Checkout/src/Providers/EventServiceProvider.php @@ -0,0 +1,17 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class CartAddressRepository extends Repository +{ + /** + * Specify Model class name + * + * @return Mixed + */ + function model() + { + return 'Webkul\Checkout\Contracts\CartAddress'; + } +} \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/Repositories/CartItemRepository.php b/packages/Webkul/Checkout/src/Repositories/CartItemRepository.php new file mode 100755 index 000000000..2c33af0b9 --- /dev/null +++ b/packages/Webkul/Checkout/src/Repositories/CartItemRepository.php @@ -0,0 +1,47 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class CartItemRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + + function model() + { + return 'Webkul\Checkout\Contracts\CartItem'; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + + public function update(array $data, $id, $attribute = "id") + { + $item = $this->find($id); + + $item->update($data); + + return $item; + } + + public function getProduct($cartItemId) + { + return $this->model->find($cartItemId)->product->id; + } +} \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/Repositories/CartRepository.php b/packages/Webkul/Checkout/src/Repositories/CartRepository.php new file mode 100755 index 000000000..1b6805df9 --- /dev/null +++ b/packages/Webkul/Checkout/src/Repositories/CartRepository.php @@ -0,0 +1,68 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class CartRepository extends Repository +{ + /** + * Specify Model class name + * + * @return Mixed + */ + + function model() + { + return 'Webkul\Checkout\Contracts\Cart'; + } + + /** + * @param array $data + * @return Mixed + */ + + public function create(array $data) + { + $cart = $this->model->create($data); + + return $cart; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return Mixed + */ + public function update(array $data, $id, $attribute = "id") + { + $cart = $this->find($id); + + $cart->update($data); + + return $cart; + } + + /** + * Method to detach + * associations. + * + * Use this only with + * guest cart only. + * + * @return Mixed + */ + public function deleteParent($cart_id) { + $cart = $this->model->find($cart_id); + + return $this->model->destroy($cart_id); + } +} \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/resources/manifest.php b/packages/Webkul/Checkout/src/resources/manifest.php new file mode 100644 index 000000000..c75b737bd --- /dev/null +++ b/packages/Webkul/Checkout/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto Checkout', + 'version' => '0.0.1' + ]; diff --git a/packages/Webkul/Core/.gitignore b/packages/Webkul/Core/.gitignore new file mode 100755 index 000000000..30bc16279 --- /dev/null +++ b/packages/Webkul/Core/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/packages/Webkul/Core/composer.json b/packages/Webkul/Core/composer.json new file mode 100755 index 000000000..65bf9dd71 --- /dev/null +++ b/packages/Webkul/Core/composer.json @@ -0,0 +1,27 @@ +{ + "name": "bagisto/laravel-core", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": { + "propaganistas/laravel-intl": "^2.0" + }, + "autoload": { + "psr-4": { + "Webkul\\Core\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Core\\Providers\\CoreServiceProvider" + ], + "aliases": { } + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Core/src/Config/concord.php b/packages/Webkul/Core/src/Config/concord.php new file mode 100644 index 000000000..24c40b47a --- /dev/null +++ b/packages/Webkul/Core/src/Config/concord.php @@ -0,0 +1,26 @@ + [ + /** + * Example: + * VendorA\ModuleX\Providers\ModuleServiceProvider::class, + * VendorB\ModuleY\Providers\ModuleServiceProvider::class + * + */ + + \Webkul\Attribute\Providers\ModuleServiceProvider::class, + \Webkul\Category\Providers\ModuleServiceProvider::class, + \Webkul\Checkout\Providers\ModuleServiceProvider::class, + \Webkul\Core\Providers\ModuleServiceProvider::class, + \Webkul\Customer\Providers\ModuleServiceProvider::class, + \Webkul\Inventory\Providers\ModuleServiceProvider::class, + \Webkul\Product\Providers\ModuleServiceProvider::class, + \Webkul\Sales\Providers\ModuleServiceProvider::class, + \Webkul\Tax\Providers\ModuleServiceProvider::class, + \Webkul\User\Providers\ModuleServiceProvider::class, + \Webkul\CatalogRule\Providers\ModuleServiceProvider::class, + \Webkul\CartRule\Providers\ModuleServiceProvider::class, + \Webkul\CMS\Providers\ModuleServiceProvider::class + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Core/src/Contracts/Channel.php b/packages/Webkul/Core/src/Contracts/Channel.php new file mode 100644 index 000000000..1495f5f92 --- /dev/null +++ b/packages/Webkul/Core/src/Contracts/Channel.php @@ -0,0 +1,7 @@ +channelRepository = $channelRepository; + + $this->currencyRepository = $currencyRepository; + + $this->exchangeRateRepository = $exchangeRateRepository; + + $this->countryRepository = $countryRepository; + + $this->countryStateRepository = $countryStateRepository; + + $this->localeRepository = $localeRepository; + + $this->coreConfigRepository = $coreConfigRepository; + } + + /** + * Returns all channels + * + * @return Collection + */ + public function getAllChannels() + { + static $channels; + + if ($channels) + return $channels; + + return $channels = $this->channelRepository->all(); + } + + /** + * Returns currenct channel models + * + * @return mixed + */ + public function getCurrentChannel() + { + static $channel; + + if ($channel) + return $channel; + + $channel = $this->channelRepository->findWhereIn('hostname', [ + request()->getHttpHost(), + 'http://' . request()->getHttpHost(), + 'https://' . request()->getHttpHost() + ])->first(); + + if (! $channel) + $channel = $this->channelRepository->first(); + + return $channel; + } + + /** + * Returns currenct channel code + * + * @return string + */ + public function getCurrentChannelCode() + { + static $channelCode; + + if ($channelCode) + return $channelCode; + + return ($channel = $this->getCurrentChannel()) ? $channelCode = $channel->code : ''; + } + + /** + * Returns default channel models + * + * @return mixed + */ + public function getDefaultChannel() + { + static $channel; + + if ($channel) + return $channel; + + return $channel = $this->channelRepository->first(); + } + + /** + * Returns default channel code + * + * @return string + */ + public function getDefaultChannelCode() + { + static $channelCode; + + if ($channelCode) + return $channelCode; + + return ($channel = $this->getDefaultChannel()) ? $channelCode = $channel->code : ''; + } + + /** + * Returns all locales + * + * @return Collection + */ + public function getAllLocales() + { + static $locales; + + if ($locales) + return $locales; + + return $locales = $this->localeRepository->all(); + } + + /** + * Returns current locale + * + * @return Object + */ + public function getCurrentLocale() + { + static $locale; + + if ($locale) + return $locale; + + $locale = $this->localeRepository->findOneByField('code', app()->getLocale()); + + if(!$locale) { + $locale = $this->localeRepository->findOneByField('code', config('app.fallback_locale')); + } + + return $locale; + } + + /** + * Returns all currencies + * + * @return Collection + */ + public function getAllCurrencies() + { + static $currencies; + + if ($currencies) + return $currencies; + + return $currencies = $this->currencyRepository->all(); + } + + /** + * Returns base channel's currency model + * + * @return mixed + */ + public function getBaseCurrency() + { + static $currency; + + if ($currency) + return $currency; + + $baseCurrency = $this->currencyRepository->findOneByField('code', config('app.currency')); + + if (! $baseCurrency) + $baseCurrency = $this->currencyRepository->first(); + + return $currency = $baseCurrency; + } + + /** + * Returns base channel's currency code + * + * @return string + */ + public function getBaseCurrencyCode() + { + static $currencyCode; + + if ($currencyCode) + return $currencyCode; + + return ($currency = $this->getBaseCurrency()) ? $currencyCode = $currency->code : ''; + } + + /** + * Returns base channel's currency model + * + * @return mixed + */ + public function getChannelBaseCurrency() + { + static $currency; + + if ($currency) + return $currency; + + $currenctChannel = $this->getCurrentChannel(); + + return $currency = $currenctChannel->base_currency; + } + + /** + * Returns base channel's currency code + * + * @return string + */ + public function getChannelBaseCurrencyCode() + { + static $currencyCode; + + if ($currencyCode) + return $currencyCode; + + return ($currency = $this->getChannelBaseCurrency()) ? $currencyCode = $currency->code : ''; + } + + /** + * Returns current channel's currency model + * + * @return mixed + */ + public function getCurrentCurrency() + { + static $currency; + + if ($currency) + return $currency; + + if ($currencyCode = session()->get('currency')) { + if ($currency = $this->currencyRepository->findOneByField('code', $currencyCode)) + return $currency; + } + + return $currency = $this->getChannelBaseCurrency(); + } + + /** + * Returns current channel's currency code + * + * @return string + */ + public function getCurrentCurrencyCode() + { + static $currencyCode; + + if ($currencyCode) + return $currencyCode; + + return ($currency = $this->getCurrentCurrency()) ? $currencyCode = $currency->code : ''; + } + + /** + * Converts price + * + * @param float $amount + * @param string $targetCurrencyCode + * @return string + */ + public function convertPrice($amount, $targetCurrencyCode = null) + { + $targetCurrency = ! $targetCurrencyCode + ? $this->getCurrentCurrency() + : $this->currencyRepository->findOneByField('code', $targetCurrencyCode); + + if (! $targetCurrency) + return $amount; + + $exchangeRate = $this->exchangeRateRepository->findOneWhere([ + 'target_currency' => $targetCurrency->id, + ]); + + if (null === $exchangeRate || ! $exchangeRate->rate) + return $amount; + + return (float) $amount * $exchangeRate->rate; + } + + /** + * Converts to base price + * + * @param float $amount + * @param string $targetCurrencyCode + * @return string + */ + public function convertToBasePrice($amount, $targetCurrencyCode = null) + { + $targetCurrency = ! $targetCurrencyCode + ? $this->getCurrentCurrency() + : $this->currencyRepository->findOneByField('code', $targetCurrencyCode); + + if (! $targetCurrency) + return $amount; + + $exchangeRate = $this->exchangeRateRepository->findOneWhere([ + 'target_currency' => $targetCurrency->id, + ]); + + if (null === $exchangeRate || ! $exchangeRate->rate) + return $amount; + + return (float) $amount / $exchangeRate->rate; + } + + /** + * Format and convert price with currency symbol + * + * @param float $price + * @return string + */ + public function currency($amount = 0) + { + if (is_null($amount)) + $amount = 0; + + return $this->formatPrice($this->convertPrice($amount), $this->getCurrentCurrency()->code); + } + + /** + * Return currency symbol from currency code + * + * @param float $price + * @return string + */ + public function currencySymbol($code) + { + $formatter = new \NumberFormatter(app()->getLocale() . '@currency=' . $code, \NumberFormatter::CURRENCY); + + return $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL); + } + + /** + * Format and convert price with currency symbol + * + * @param float $price + * @return string + */ + public function formatPrice($price, $currencyCode) + { + if (is_null($price)) + $price = 0; + + $formater = new \NumberFormatter( app()->getLocale(), \NumberFormatter::CURRENCY ); + + if ($symbol = $this->getCurrentCurrency()->symbol) { + if ($this->currencySymbol($currencyCode) == $symbol) { + return $formater->formatCurrency($price, $currencyCode); + } else { + $formater->setSymbol(\NumberFormatter::CURRENCY_SYMBOL, $symbol); + + return $formater->format($this->convertPrice($price)); + } + } else { + return $formater->formatCurrency($price, $currencyCode); + } + } + + /** + * Format and convert price with currency symbol + * + * @return array + */ + public function getAccountJsSymbols() + { + $formater = new \NumberFormatter( app()->getLocale(), \NumberFormatter::CURRENCY ); + + $pattern = $formater->getPattern(); + + $pattern = str_replace("¤", "%s", $pattern); + + $pattern = str_replace("#,##0.00", "%v", $pattern); + + return [ + 'symbol' => core()->currencySymbol(core()->getCurrentCurrencyCode()), + 'decimal' => $formater->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL), + 'format' => $pattern + ]; + } + + /** + * Format price with base currency symbol + * + * @param float $price + * @return string + */ + public function formatBasePrice($price) + { + if (is_null($price)) + $price = 0; + + $formater = new \NumberFormatter( app()->getLocale(), \NumberFormatter::CURRENCY ); + + if ($symbol = $this->getBaseCurrency()->symbol) { + if ($this->currencySymbol($this->getBaseCurrencyCode()) == $symbol) { + return $formater->formatCurrency($price, $this->getBaseCurrencyCode()); + } else { + $formater->setSymbol(\NumberFormatter::CURRENCY_SYMBOL, $symbol); + + return $formater->format($this->convertPrice($price)); + } + } else { + return $formater->formatCurrency($price, $this->getBaseCurrencyCode()); + } + } + + /** + * Checks if current date of the given channel (in the channel timezone) is within the range + * + * @param int|string|Channel $channel + * @param string|null $dateFrom + * @param string|null $dateTo + * @return bool + */ + public function isChannelDateInInterval($dateFrom = null, $dateTo = null) + { + $channel = $this->getCurrentChannel(); + + $channelTimeStamp = $this->channelTimeStamp($channel); + + $fromTimeStamp = strtotime($dateFrom); + + $toTimeStamp = strtotime($dateTo); + + if ($dateTo) { + $toTimeStamp += 86400; + } + + if (! $this->is_empty_date($dateFrom) && $channelTimeStamp < $fromTimeStamp) { + $result = false; + } elseif (! $this->is_empty_date($dateTo) && $channelTimeStamp > $toTimeStamp) { + $result = false; + } else { + $result = true; + } + + return $result; + } + + /** + * Get channel timestamp + * Timstamp will be builded with channel timezone settings + * + * @param mixed $channel + * @return int + */ + public function channelTimeStamp($channel) + { + $timezone = $channel->timezone; + + $currentTimezone = @date_default_timezone_get(); + + @date_default_timezone_set($timezone); + + $date = date('Y-m-d H:i:s'); + + @date_default_timezone_set($currentTimezone); + + return strtotime($date); + } + + /** + * Check whether sql date is empty + * + * @param string $date + * @return boolean + */ + function is_empty_date($date) + { + return preg_replace('#[ 0:-]#', '', $date) === ''; + } + + /** + * Format date using current channel. + * + * @param date|null $date + * @param string $format + * @return string + */ + public function formatDate($date = null, $format = 'd-m-Y H:i:s') + { + $channel = $this->getCurrentChannel(); + + if (is_null($date)) { + $date = Carbon::now(); + } + + $date->setTimezone($channel->timezone); + + return $date->format($format); + } + + /** + * Retrieve information from payment configuration + * + * @param string $field + * @param int|string|null $channelId + * + * @return mixed + */ + public function getConfigData($field, $channel = null, $locale = null) + { + if (null === $channel) { + $channel = request()->get('channel') ?: ($this->getCurrentChannelCode() ?: $this->getDefaultChannelCode()); + } + + if (null === $locale) { + $locale = request()->get('locale') ?: app()->getLocale(); + } + + $fields = $this->getConfigField($field); + + $channel_based = false; + $locale_based = false; + + if (isset($fields['channel_based']) && $fields['channel_based']) { + $channel_based = true; + } + + if (isset($fields['locale_based']) && $fields['locale_based']) { + $locale_based = true; + } + + if (isset($fields['channel_based']) && $fields['channel_based']) { + if (isset($fields['locale_based']) && $fields['locale_based']) { + $coreConfigValue = $this->coreConfigRepository->findOneWhere([ + 'code' => $field, + 'channel_code' => $channel, + 'locale_code' => $locale + ]); + } else { + $coreConfigValue = $this->coreConfigRepository->findOneWhere([ + 'code' => $field, + 'channel_code' => $channel, + ]); + } + } else { + if (isset($fields['locale_based']) && $fields['locale_based']) { + $coreConfigValue = $this->coreConfigRepository->findOneWhere([ + 'code' => $field, + 'locale_code' => $locale + ]); + } else { + $coreConfigValue = $this->coreConfigRepository->findOneWhere([ + 'code' => $field + ]); + } + } + + if (! $coreConfigValue) { + $fields = explode(".", $field); + array_shift($fields); + $field = implode(".", $fields); + + return Config::get($field); + } + + return $coreConfigValue->value; + } + + /** + * Retrieve a group of information from the core config table + * + * @return array + */ + public function retrieveGroupConfig($criteria) + { + return $criteria; + } + + /** + * Retrieve all countries + * + * @return Collection + */ + public function countries() + { + return $this->countryRepository->all(); + } + + /** + * Returns country name by code + * + * @param string $code + * @return string + */ + public function country_name($code) + { + $country = $this->countryRepository->findOneByField('code', $code); + + return $country ? $country->name : ''; + } + + /** + * Retrieve all country states + * + * @return Collection + */ + public function states($countryCode) + { + return $this->countryStateRepository->findByField('country_code', $countryCode); + } + + /** + * Retrieve all grouped states by country code + * + * @return Collection + */ + public function groupedStatesByCountries() + { + $collection = []; + + foreach ($this->countryStateRepository->all() as $state) { + $collection[$state->country_code][] = $state->toArray(); + } + + return $collection; + } + + /** + * Retrieve all grouped states by country code + * + * @return Collection + */ + public function findStateByCountryCode($countryCode = null, $stateCode = null) + { + $collection = array(); + + $collection = $this->countryStateRepository->findByField(['country_code' => $countryCode, 'code' => $stateCode]); + + if (count($collection)) { + return $collection->first(); + } else { + return false; + } + } + + /** + * Returns time intervals + * + * @return array + */ + public function getTimeInterval($startDate, $endDate) { + $timeIntervals = []; + + $totalDays = $startDate->diffInDays($endDate) + 1; + $totalMonths = $startDate->diffInMonths($endDate) + 1; + + $startWeekDay = Carbon::createFromTimeString($this->xWeekRange($startDate, 0) . ' 00:00:01'); + $endWeekDay = Carbon::createFromTimeString($this->xWeekRange($endDate, 1) . ' 23:59:59'); + $totalWeeks = $startWeekDay->diffInWeeks($endWeekDay); + + if ($totalMonths > 5) { + for ($i = 0; $i < $totalMonths; $i++) { + $date = clone $startDate; + $date->addMonths($i); + + $start = Carbon::createFromTimeString($date->format('Y-m-d') . ' 00:00:01'); + $end = $totalMonths - 1 == $i + ? $endDate + : Carbon::createFromTimeString($date->format('Y-m-d') . ' 23:59:59'); + + $timeIntervals[] = ['start' => $start, 'end' => $end, 'formatedDate' => $date->format('M')]; + } + } else if ($totalWeeks > 6) { + for ($i = 0; $i < $totalWeeks; $i++) { + $date = clone $startDate; + $date->addWeeks($i); + + $start = $i == 0 + ? $startDate + : Carbon::createFromTimeString($this->xWeekRange($date, 0) . ' 00:00:01'); + $end = $totalWeeks - 1 == $i + ? $endDate + : Carbon::createFromTimeString($this->xWeekRange($date, 1) . ' 23:59:59'); + + $timeIntervals[] = ['start' => $start, 'end' => $end, 'formatedDate' => $date->format('d M')]; + } + } else { + for ($i = 0; $i < $totalDays; $i++) { + $date = clone $startDate; + $date->addDays($i); + + $start = Carbon::createFromTimeString($date->format('Y-m-d') . ' 00:00:01'); + $end = Carbon::createFromTimeString($date->format('Y-m-d') . ' 23:59:59'); + + $timeIntervals[] = ['start' => $start, 'end' => $end, 'formatedDate' => $date->format('d M')]; + } + } + + return $timeIntervals; + } + + /** + * @return string + */ + public function xWeekRange($date, $day) { + $ts = strtotime($date); + + if (! $day) { + $start = (date('D', $ts) == 'Sun') ? $ts : strtotime('last sunday', $ts); + + return date('Y-m-d', $start); + } else { + $end = (date('D', $ts) == 'Sat') ? $ts : strtotime('next saturday', $ts); + + return date('Y-m-d', $end); + } + } + + /** + * Method to sort through the acl items and put them in order + * + * @return void + */ + public function sortItems($items) { + foreach ($items as &$item) { + if (count($item['children'])) { + $item['children'] = $this->sortItems($item['children']); + } + } + + usort($items, function($a, $b) { + if ($a['sort'] == $b['sort']) { + return 0; + } + + return ($a['sort'] < $b['sort']) ? -1 : 1; + }); + + return $this->convertToAssociativeArray($items); + } + + /** + * @param string $fieldName + * @return array + */ + public function getConfigField($fieldName) { + foreach (config('core') as $coreData) { + if (isset($coreData['fields'])) { + foreach ($coreData['fields'] as $field) { + $name = $coreData['key'] . '.' . $field['name']; + + if ($name == $fieldName ) { + return $field; + } + } + } + } + } + + public function convertToAssociativeArray($items) + { + foreach ($items as $key1 => $level1) { + unset($items[$key1]); + $items[$level1['key']] = $level1; + + if (count($level1['children'])) { + foreach ($level1['children'] as $key2 => $level2) { + $temp2 = explode('.', $level2['key']); + $finalKey2 = end($temp2); + unset($items[$level1['key']]['children'][$key2]); + $items[$level1['key']]['children'][$finalKey2] = $level2; + + if (count($level2['children'])) { + foreach ($level2['children'] as $key3 => $level3) { + $temp3 = explode('.', $level3['key']); + $finalKey3 = end($temp3); + unset($items[$level1['key']]['children'][$finalKey2]['children'][$key3]); + $items[$level1['key']]['children'][$finalKey2]['children'][$finalKey3] = $level3; + } + } + + } + } + } + + return $items; + } + + public function array_set(&$array, $key, $value) + { + if (is_null($key)) { + return $array = $value; + } + + $keys = explode('.', $key); + $count = count($keys); + + while (count($keys) > 1) { + $key = array_shift($keys); + + if (! isset($array[$key]) || ! is_array($array[$key])) { + $array[$key] = []; + } + + $array = &$array[$key]; + } + + $finalKey = array_shift($keys); + if (isset($array[$finalKey])) { + $array[$finalKey] = $this->arrayMerge($array[$finalKey], $value); + } else { + $array[$finalKey] = $value; + } + + return $array; + } + + protected function arrayMerge(array &$array1, array &$array2) + { + $merged = $array1; + foreach ($array2 as $key => &$value) { + if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { + $merged[$key] = $this->arrayMerge($merged[$key], $value); + } else { + $merged[$key] = $value; + } + } + + return $merged; + } + + public function convertEmptyStringsToNull($array) + { + foreach ($array as $key => $value) { + if ($value == "" || $value == "null") { + $array[$key] = null; + } + } + + return $array; + } + + /** + * Create singletom object through single facade + * + * @param string $className + * @return object + */ + public function getSingletonInstance($className) + { + static $instance = []; + + if (array_key_exists($className, $instance)) + return $instance[$className]; + + return $instance[$className] = app($className); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Data/countries.json b/packages/Webkul/Core/src/Data/countries.json new file mode 100755 index 000000000..c57294c51 --- /dev/null +++ b/packages/Webkul/Core/src/Data/countries.json @@ -0,0 +1,1277 @@ +[ + { + "id":1, + "code":"AF", + "name":"Afghanistan" + }, + { + "id":2, + "code":"AX", + "name":"\u00c5land Islands" + }, + { + "id":3, + "code":"AL", + "name":"Albania" + }, + { + "id":4, + "code":"DZ", + "name":"Algeria" + }, + { + "id":5, + "code":"AS", + "name":"American Samoa" + }, + { + "id":6, + "code":"AD", + "name":"Andorra" + }, + { + "id":7, + "code":"AO", + "name":"Angola" + }, + { + "id":8, + "code":"AI", + "name":"Anguilla" + }, + { + "id":9, + "code":"AQ", + "name":"Antarctica" + }, + { + "id":10, + "code":"AG", + "name":"Antigua & Barbuda" + }, + { + "id":11, + "code":"AR", + "name":"Argentina" + }, + { + "id":12, + "code":"AM", + "name":"Armenia" + }, + { + "id":13, + "code":"AW", + "name":"Aruba" + }, + { + "id":14, + "code":"AC", + "name":"Ascension Island" + }, + { + "id":15, + "code":"AU", + "name":"Australia" + }, + { + "id":16, + "code":"AT", + "name":"Austria" + }, + { + "id":17, + "code":"AZ", + "name":"Azerbaijan" + }, + { + "id":18, + "code":"BS", + "name":"Bahamas" + }, + { + "id":19, + "code":"BH", + "name":"Bahrain" + }, + { + "id":20, + "code":"BD", + "name":"Bangladesh" + }, + { + "id":21, + "code":"BB", + "name":"Barbados" + }, + { + "id":22, + "code":"BY", + "name":"Belarus" + }, + { + "id":23, + "code":"BE", + "name":"Belgium" + }, + { + "id":24, + "code":"BZ", + "name":"Belize" + }, + { + "id":25, + "code":"BJ", + "name":"Benin" + }, + { + "id":26, + "code":"BM", + "name":"Bermuda" + }, + { + "id":27, + "code":"BT", + "name":"Bhutan" + }, + { + "id":28, + "code":"BO", + "name":"Bolivia" + }, + { + "id":29, + "code":"BA", + "name":"Bosnia & Herzegovina" + }, + { + "id":30, + "code":"BW", + "name":"Botswana" + }, + { + "id":31, + "code":"BR", + "name":"Brazil" + }, + { + "id":32, + "code":"IO", + "name":"British Indian Ocean Territory" + }, + { + "id":33, + "code":"VG", + "name":"British Virgin Islands" + }, + { + "id":34, + "code":"BN", + "name":"Brunei" + }, + { + "id":35, + "code":"BG", + "name":"Bulgaria" + }, + { + "id":36, + "code":"BF", + "name":"Burkina Faso" + }, + { + "id":37, + "code":"BI", + "name":"Burundi" + }, + { + "id":38, + "code":"KH", + "name":"Cambodia" + }, + { + "id":39, + "code":"CM", + "name":"Cameroon" + }, + { + "id":40, + "code":"CA", + "name":"Canada" + }, + { + "id":41, + "code":"IC", + "name":"Canary Islands" + }, + { + "id":42, + "code":"CV", + "name":"Cape Verde" + }, + { + "id":43, + "code":"BQ", + "name":"Caribbean Netherlands" + }, + { + "id":44, + "code":"KY", + "name":"Cayman Islands" + }, + { + "id":45, + "code":"CF", + "name":"Central African Republic" + }, + { + "id":46, + "code":"EA", + "name":"Ceuta & Melilla" + }, + { + "id":47, + "code":"TD", + "name":"Chad" + }, + { + "id":48, + "code":"CL", + "name":"Chile" + }, + { + "id":49, + "code":"CN", + "name":"China" + }, + { + "id":50, + "code":"CX", + "name":"Christmas Island" + }, + { + "id":51, + "code":"CC", + "name":"Cocos (Keeling) Islands" + }, + { + "id":52, + "code":"CO", + "name":"Colombia" + }, + { + "id":53, + "code":"KM", + "name":"Comoros" + }, + { + "id":54, + "code":"CG", + "name":"Congo - Brazzaville" + }, + { + "id":55, + "code":"CD", + "name":"Congo - Kinshasa" + }, + { + "id":56, + "code":"CK", + "name":"Cook Islands" + }, + { + "id":57, + "code":"CR", + "name":"Costa Rica" + }, + { + "id":58, + "code":"CI", + "name":"C\u00f4te d\u2019Ivoire" + }, + { + "id":59, + "code":"HR", + "name":"Croatia" + }, + { + "id":60, + "code":"CU", + "name":"Cuba" + }, + { + "id":61, + "code":"CW", + "name":"Cura\u00e7ao" + }, + { + "id":62, + "code":"CY", + "name":"Cyprus" + }, + { + "id":63, + "code":"CZ", + "name":"Czechia" + }, + { + "id":64, + "code":"DK", + "name":"Denmark" + }, + { + "id":65, + "code":"DG", + "name":"Diego Garcia" + }, + { + "id":66, + "code":"DJ", + "name":"Djibouti" + }, + { + "id":67, + "code":"DM", + "name":"Dominica" + }, + { + "id":68, + "code":"DO", + "name":"Dominican Republic" + }, + { + "id":69, + "code":"EC", + "name":"Ecuador" + }, + { + "id":70, + "code":"EG", + "name":"Egypt" + }, + { + "id":71, + "code":"SV", + "name":"El Salvador" + }, + { + "id":72, + "code":"GQ", + "name":"Equatorial Guinea" + }, + { + "id":73, + "code":"ER", + "name":"Eritrea" + }, + { + "id":74, + "code":"EE", + "name":"Estonia" + }, + { + "id":75, + "code":"ET", + "name":"Ethiopia" + }, + { + "id":76, + "code":"EZ", + "name":"Eurozone" + }, + { + "id":77, + "code":"FK", + "name":"Falkland Islands" + }, + { + "id":78, + "code":"FO", + "name":"Faroe Islands" + }, + { + "id":79, + "code":"FJ", + "name":"Fiji" + }, + { + "id":80, + "code":"FI", + "name":"Finland" + }, + { + "id":81, + "code":"FR", + "name":"France" + }, + { + "id":82, + "code":"GF", + "name":"French Guiana" + }, + { + "id":83, + "code":"PF", + "name":"French Polynesia" + }, + { + "id":84, + "code":"TF", + "name":"French Southern Territories" + }, + { + "id":85, + "code":"GA", + "name":"Gabon" + }, + { + "id":86, + "code":"GM", + "name":"Gambia" + }, + { + "id":87, + "code":"GE", + "name":"Georgia" + }, + { + "id":88, + "code":"DE", + "name":"Germany" + }, + { + "id":89, + "code":"GH", + "name":"Ghana" + }, + { + "id":90, + "code":"GI", + "name":"Gibraltar" + }, + { + "id":91, + "code":"GR", + "name":"Greece" + }, + { + "id":92, + "code":"GL", + "name":"Greenland" + }, + { + "id":93, + "code":"GD", + "name":"Grenada" + }, + { + "id":94, + "code":"GP", + "name":"Guadeloupe" + }, + { + "id":95, + "code":"GU", + "name":"Guam" + }, + { + "id":96, + "code":"GT", + "name":"Guatemala" + }, + { + "id":97, + "code":"GG", + "name":"Guernsey" + }, + { + "id":98, + "code":"GN", + "name":"Guinea" + }, + { + "id":99, + "code":"GW", + "name":"Guinea-Bissau" + }, + { + "id":100, + "code":"GY", + "name":"Guyana" + }, + { + "id":101, + "code":"HT", + "name":"Haiti" + }, + { + "id":102, + "code":"HN", + "name":"Honduras" + }, + { + "id":103, + "code":"HK", + "name":"Hong Kong SAR China" + }, + { + "id":104, + "code":"HU", + "name":"Hungary" + }, + { + "id":105, + "code":"IS", + "name":"Iceland" + }, + { + "id":106, + "code":"IN", + "name":"India" + }, + { + "id":107, + "code":"ID", + "name":"Indonesia" + }, + { + "id":108, + "code":"IR", + "name":"Iran" + }, + { + "id":109, + "code":"IQ", + "name":"Iraq" + }, + { + "id":110, + "code":"IE", + "name":"Ireland" + }, + { + "id":111, + "code":"IM", + "name":"Isle of Man" + }, + { + "id":112, + "code":"IL", + "name":"Israel" + }, + { + "id":113, + "code":"IT", + "name":"Italy" + }, + { + "id":114, + "code":"JM", + "name":"Jamaica" + }, + { + "id":115, + "code":"JP", + "name":"Japan" + }, + { + "id":116, + "code":"JE", + "name":"Jersey" + }, + { + "id":117, + "code":"JO", + "name":"Jordan" + }, + { + "id":118, + "code":"KZ", + "name":"Kazakhstan" + }, + { + "id":119, + "code":"KE", + "name":"Kenya" + }, + { + "id":120, + "code":"KI", + "name":"Kiribati" + }, + { + "id":121, + "code":"XK", + "name":"Kosovo" + }, + { + "id":122, + "code":"KW", + "name":"Kuwait" + }, + { + "id":123, + "code":"KG", + "name":"Kyrgyzstan" + }, + { + "id":124, + "code":"LA", + "name":"Laos" + }, + { + "id":125, + "code":"LV", + "name":"Latvia" + }, + { + "id":126, + "code":"LB", + "name":"Lebanon" + }, + { + "id":127, + "code":"LS", + "name":"Lesotho" + }, + { + "id":128, + "code":"LR", + "name":"Liberia" + }, + { + "id":129, + "code":"LY", + "name":"Libya" + }, + { + "id":130, + "code":"LI", + "name":"Liechtenstein" + }, + { + "id":131, + "code":"LT", + "name":"Lithuania" + }, + { + "id":132, + "code":"LU", + "name":"Luxembourg" + }, + { + "id":133, + "code":"MO", + "name":"Macau SAR China" + }, + { + "id":134, + "code":"MK", + "name":"Macedonia" + }, + { + "id":135, + "code":"MG", + "name":"Madagascar" + }, + { + "id":136, + "code":"MW", + "name":"Malawi" + }, + { + "id":137, + "code":"MY", + "name":"Malaysia" + }, + { + "id":138, + "code":"MV", + "name":"Maldives" + }, + { + "id":139, + "code":"ML", + "name":"Mali" + }, + { + "id":140, + "code":"MT", + "name":"Malta" + }, + { + "id":141, + "code":"MH", + "name":"Marshall Islands" + }, + { + "id":142, + "code":"MQ", + "name":"Martinique" + }, + { + "id":143, + "code":"MR", + "name":"Mauritania" + }, + { + "id":144, + "code":"MU", + "name":"Mauritius" + }, + { + "id":145, + "code":"YT", + "name":"Mayotte" + }, + { + "id":146, + "code":"MX", + "name":"Mexico" + }, + { + "id":147, + "code":"FM", + "name":"Micronesia" + }, + { + "id":148, + "code":"MD", + "name":"Moldova" + }, + { + "id":149, + "code":"MC", + "name":"Monaco" + }, + { + "id":150, + "code":"MN", + "name":"Mongolia" + }, + { + "id":151, + "code":"ME", + "name":"Montenegro" + }, + { + "id":152, + "code":"MS", + "name":"Montserrat" + }, + { + "id":153, + "code":"MA", + "name":"Morocco" + }, + { + "id":154, + "code":"MZ", + "name":"Mozambique" + }, + { + "id":155, + "code":"MM", + "name":"Myanmar (Burma)" + }, + { + "id":156, + "code":"NA", + "name":"Namibia" + }, + { + "id":157, + "code":"NR", + "name":"Nauru" + }, + { + "id":158, + "code":"NP", + "name":"Nepal" + }, + { + "id":159, + "code":"NL", + "name":"Netherlands" + }, + { + "id":160, + "code":"NC", + "name":"New Caledonia" + }, + { + "id":161, + "code":"NZ", + "name":"New Zealand" + }, + { + "id":162, + "code":"NI", + "name":"Nicaragua" + }, + { + "id":163, + "code":"NE", + "name":"Niger" + }, + { + "id":164, + "code":"NG", + "name":"Nigeria" + }, + { + "id":165, + "code":"NU", + "name":"Niue" + }, + { + "id":166, + "code":"NF", + "name":"Norfolk Island" + }, + { + "id":167, + "code":"KP", + "name":"North Korea" + }, + { + "id":168, + "code":"MP", + "name":"Northern Mariana Islands" + }, + { + "id":169, + "code":"NO", + "name":"Norway" + }, + { + "id":170, + "code":"OM", + "name":"Oman" + }, + { + "id":171, + "code":"PK", + "name":"Pakistan" + }, + { + "id":172, + "code":"PW", + "name":"Palau" + }, + { + "id":173, + "code":"PS", + "name":"Palestinian Territories" + }, + { + "id":174, + "code":"PA", + "name":"Panama" + }, + { + "id":175, + "code":"PG", + "name":"Papua New Guinea" + }, + { + "id":176, + "code":"PY", + "name":"Paraguay" + }, + { + "id":177, + "code":"PE", + "name":"Peru" + }, + { + "id":178, + "code":"PH", + "name":"Philippines" + }, + { + "id":179, + "code":"PN", + "name":"Pitcairn Islands" + }, + { + "id":180, + "code":"PL", + "name":"Poland" + }, + { + "id":181, + "code":"PT", + "name":"Portugal" + }, + { + "id":182, + "code":"PR", + "name":"Puerto Rico" + }, + { + "id":183, + "code":"QA", + "name":"Qatar" + }, + { + "id":184, + "code":"RE", + "name":"R\u00e9union" + }, + { + "id":185, + "code":"RO", + "name":"Romania" + }, + { + "id":186, + "code":"RU", + "name":"Russia" + }, + { + "id":187, + "code":"RW", + "name":"Rwanda" + }, + { + "id":188, + "code":"WS", + "name":"Samoa" + }, + { + "id":189, + "code":"SM", + "name":"San Marino" + }, + { + "id":190, + "code":"ST", + "name":"S\u00e3o Tom\u00e9 & Pr\u00edncipe" + }, + { + "id":191, + "code":"SA", + "name":"Saudi Arabia" + }, + { + "id":192, + "code":"SN", + "name":"Senegal" + }, + { + "id":193, + "code":"RS", + "name":"Serbia" + }, + { + "id":194, + "code":"SC", + "name":"Seychelles" + }, + { + "id":195, + "code":"SL", + "name":"Sierra Leone" + }, + { + "id":196, + "code":"SG", + "name":"Singapore" + }, + { + "id":197, + "code":"SX", + "name":"Sint Maarten" + }, + { + "id":198, + "code":"SK", + "name":"Slovakia" + }, + { + "id":199, + "code":"SI", + "name":"Slovenia" + }, + { + "id":200, + "code":"SB", + "name":"Solomon Islands" + }, + { + "id":201, + "code":"SO", + "name":"Somalia" + }, + { + "id":202, + "code":"ZA", + "name":"South Africa" + }, + { + "id":203, + "code":"GS", + "name":"South Georgia & South Sandwich Islands" + }, + { + "id":204, + "code":"KR", + "name":"South Korea" + }, + { + "id":205, + "code":"SS", + "name":"South Sudan" + }, + { + "id":206, + "code":"ES", + "name":"Spain" + }, + { + "id":207, + "code":"LK", + "name":"Sri Lanka" + }, + { + "id":208, + "code":"BL", + "name":"St. Barth\u00e9lemy" + }, + { + "id":209, + "code":"SH", + "name":"St. Helena" + }, + { + "id":210, + "code":"KN", + "name":"St. Kitts & Nevis" + }, + { + "id":211, + "code":"LC", + "name":"St. Lucia" + }, + { + "id":212, + "code":"MF", + "name":"St. Martin" + }, + { + "id":213, + "code":"PM", + "name":"St. Pierre & Miquelon" + }, + { + "id":214, + "code":"VC", + "name":"St. Vincent & Grenadines" + }, + { + "id":215, + "code":"SD", + "name":"Sudan" + }, + { + "id":216, + "code":"SR", + "name":"Suriname" + }, + { + "id":217, + "code":"SJ", + "name":"Svalbard & Jan Mayen" + }, + { + "id":218, + "code":"SZ", + "name":"Swaziland" + }, + { + "id":219, + "code":"SE", + "name":"Sweden" + }, + { + "id":220, + "code":"CH", + "name":"Switzerland" + }, + { + "id":221, + "code":"SY", + "name":"Syria" + }, + { + "id":222, + "code":"TW", + "name":"Taiwan" + }, + { + "id":223, + "code":"TJ", + "name":"Tajikistan" + }, + { + "id":224, + "code":"TZ", + "name":"Tanzania" + }, + { + "id":225, + "code":"TH", + "name":"Thailand" + }, + { + "id":226, + "code":"TL", + "name":"Timor-Leste" + }, + { + "id":227, + "code":"TG", + "name":"Togo" + }, + { + "id":228, + "code":"TK", + "name":"Tokelau" + }, + { + "id":229, + "code":"TO", + "name":"Tonga" + }, + { + "id":230, + "code":"TT", + "name":"Trinidad & Tobago" + }, + { + "id":231, + "code":"TA", + "name":"Tristan da Cunha" + }, + { + "id":232, + "code":"TN", + "name":"Tunisia" + }, + { + "id":233, + "code":"TR", + "name":"Turkey" + }, + { + "id":234, + "code":"TM", + "name":"Turkmenistan" + }, + { + "id":235, + "code":"TC", + "name":"Turks & Caicos Islands" + }, + { + "id":236, + "code":"TV", + "name":"Tuvalu" + }, + { + "id":237, + "code":"UM", + "name":"U.S. Outlying Islands" + }, + { + "id":238, + "code":"VI", + "name":"U.S. Virgin Islands" + }, + { + "id":239, + "code":"UG", + "name":"Uganda" + }, + { + "id":240, + "code":"UA", + "name":"Ukraine" + }, + { + "id":241, + "code":"AE", + "name":"United Arab Emirates" + }, + { + "id":242, + "code":"GB", + "name":"United Kingdom" + }, + { + "id":243, + "code":"UN", + "name":"United Nations" + }, + { + "id":244, + "code":"US", + "name":"United States" + }, + { + "id":245, + "code":"UY", + "name":"Uruguay" + }, + { + "id":246, + "code":"UZ", + "name":"Uzbekistan" + }, + { + "id":247, + "code":"VU", + "name":"Vanuatu" + }, + { + "id":248, + "code":"VA", + "name":"Vatican City" + }, + { + "id":249, + "code":"VE", + "name":"Venezuela" + }, + { + "id":250, + "code":"VN", + "name":"Vietnam" + }, + { + "id":251, + "code":"WF", + "name":"Wallis & Futuna" + }, + { + "id":252, + "code":"EH", + "name":"Western Sahara" + }, + { + "id":253, + "code":"YE", + "name":"Yemen" + }, + { + "id":254, + "code":"ZM", + "name":"Zambia" + }, + { + "id":255, + "code":"ZW", + "name":"Zimbabwe" + } +] \ No newline at end of file diff --git a/packages/Webkul/Core/src/Data/currency_symbols.json b/packages/Webkul/Core/src/Data/currency_symbols.json new file mode 100644 index 000000000..9ead0f85b --- /dev/null +++ b/packages/Webkul/Core/src/Data/currency_symbols.json @@ -0,0 +1,1064 @@ +{ + "USD": { + "symbol": "$", + "name": "US Dollar", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "USD", + "name_plural": "US dollars" + }, + "CAD": { + "symbol": "CA$", + "name": "Canadian Dollar", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "CAD", + "name_plural": "Canadian dollars" + }, + "EUR": { + "symbol": "€", + "name": "Euro", + "symbol_native": "€", + "decimal_digits": 2, + "rounding": 0, + "code": "EUR", + "name_plural": "euros" + }, + "AED": { + "symbol": "AED", + "name": "United Arab Emirates Dirham", + "symbol_native": "د.إ.‏", + "decimal_digits": 2, + "rounding": 0, + "code": "AED", + "name_plural": "UAE dirhams" + }, + "AFN": { + "symbol": "Af", + "name": "Afghan Afghani", + "symbol_native": "؋", + "decimal_digits": 0, + "rounding": 0, + "code": "AFN", + "name_plural": "Afghan Afghanis" + }, + "ALL": { + "symbol": "ALL", + "name": "Albanian Lek", + "symbol_native": "Lek", + "decimal_digits": 0, + "rounding": 0, + "code": "ALL", + "name_plural": "Albanian lekë" + }, + "AMD": { + "symbol": "AMD", + "name": "Armenian Dram", + "symbol_native": "դր.", + "decimal_digits": 0, + "rounding": 0, + "code": "AMD", + "name_plural": "Armenian drams" + }, + "ARS": { + "symbol": "AR$", + "name": "Argentine Peso", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "ARS", + "name_plural": "Argentine pesos" + }, + "AUD": { + "symbol": "AU$", + "name": "Australian Dollar", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "AUD", + "name_plural": "Australian dollars" + }, + "AZN": { + "symbol": "man.", + "name": "Azerbaijani Manat", + "symbol_native": "ман.", + "decimal_digits": 2, + "rounding": 0, + "code": "AZN", + "name_plural": "Azerbaijani manats" + }, + "BAM": { + "symbol": "KM", + "name": "Bosnia-Herzegovina Convertible Mark", + "symbol_native": "KM", + "decimal_digits": 2, + "rounding": 0, + "code": "BAM", + "name_plural": "Bosnia-Herzegovina convertible marks" + }, + "BDT": { + "symbol": "Tk", + "name": "Bangladeshi Taka", + "symbol_native": "৳", + "decimal_digits": 2, + "rounding": 0, + "code": "BDT", + "name_plural": "Bangladeshi takas" + }, + "BGN": { + "symbol": "BGN", + "name": "Bulgarian Lev", + "symbol_native": "лв.", + "decimal_digits": 2, + "rounding": 0, + "code": "BGN", + "name_plural": "Bulgarian leva" + }, + "BHD": { + "symbol": "BD", + "name": "Bahraini Dinar", + "symbol_native": "د.ب.‏", + "decimal_digits": 3, + "rounding": 0, + "code": "BHD", + "name_plural": "Bahraini dinars" + }, + "BIF": { + "symbol": "FBu", + "name": "Burundian Franc", + "symbol_native": "FBu", + "decimal_digits": 0, + "rounding": 0, + "code": "BIF", + "name_plural": "Burundian francs" + }, + "BND": { + "symbol": "BN$", + "name": "Brunei Dollar", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "BND", + "name_plural": "Brunei dollars" + }, + "BOB": { + "symbol": "Bs", + "name": "Bolivian Boliviano", + "symbol_native": "Bs", + "decimal_digits": 2, + "rounding": 0, + "code": "BOB", + "name_plural": "Bolivian bolivianos" + }, + "BRL": { + "symbol": "R$", + "name": "Brazilian Real", + "symbol_native": "R$", + "decimal_digits": 2, + "rounding": 0, + "code": "BRL", + "name_plural": "Brazilian reals" + }, + "BWP": { + "symbol": "BWP", + "name": "Botswanan Pula", + "symbol_native": "P", + "decimal_digits": 2, + "rounding": 0, + "code": "BWP", + "name_plural": "Botswanan pulas" + }, + "BYR": { + "symbol": "BYR", + "name": "Belarusian Ruble", + "symbol_native": "BYR", + "decimal_digits": 0, + "rounding": 0, + "code": "BYR", + "name_plural": "Belarusian rubles" + }, + "BZD": { + "symbol": "BZ$", + "name": "Belize Dollar", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "BZD", + "name_plural": "Belize dollars" + }, + "CDF": { + "symbol": "CDF", + "name": "Congolese Franc", + "symbol_native": "FrCD", + "decimal_digits": 2, + "rounding": 0, + "code": "CDF", + "name_plural": "Congolese francs" + }, + "CHF": { + "symbol": "CHF", + "name": "Swiss Franc", + "symbol_native": "CHF", + "decimal_digits": 2, + "rounding": 0.05, + "code": "CHF", + "name_plural": "Swiss francs" + }, + "CLP": { + "symbol": "CL$", + "name": "Chilean Peso", + "symbol_native": "$", + "decimal_digits": 0, + "rounding": 0, + "code": "CLP", + "name_plural": "Chilean pesos" + }, + "CNY": { + "symbol": "CN¥", + "name": "Chinese Yuan", + "symbol_native": "CN¥", + "decimal_digits": 2, + "rounding": 0, + "code": "CNY", + "name_plural": "Chinese yuan" + }, + "COP": { + "symbol": "CO$", + "name": "Colombian Peso", + "symbol_native": "$", + "decimal_digits": 0, + "rounding": 0, + "code": "COP", + "name_plural": "Colombian pesos" + }, + "CRC": { + "symbol": "₡", + "name": "Costa Rican Colón", + "symbol_native": "₡", + "decimal_digits": 0, + "rounding": 0, + "code": "CRC", + "name_plural": "Costa Rican colóns" + }, + "CVE": { + "symbol": "CV$", + "name": "Cape Verdean Escudo", + "symbol_native": "CV$", + "decimal_digits": 2, + "rounding": 0, + "code": "CVE", + "name_plural": "Cape Verdean escudos" + }, + "CZK": { + "symbol": "Kč", + "name": "Czech Republic Koruna", + "symbol_native": "Kč", + "decimal_digits": 2, + "rounding": 0, + "code": "CZK", + "name_plural": "Czech Republic korunas" + }, + "DJF": { + "symbol": "Fdj", + "name": "Djiboutian Franc", + "symbol_native": "Fdj", + "decimal_digits": 0, + "rounding": 0, + "code": "DJF", + "name_plural": "Djiboutian francs" + }, + "DKK": { + "symbol": "Dkr", + "name": "Danish Krone", + "symbol_native": "kr", + "decimal_digits": 2, + "rounding": 0, + "code": "DKK", + "name_plural": "Danish kroner" + }, + "DOP": { + "symbol": "RD$", + "name": "Dominican Peso", + "symbol_native": "RD$", + "decimal_digits": 2, + "rounding": 0, + "code": "DOP", + "name_plural": "Dominican pesos" + }, + "DZD": { + "symbol": "DA", + "name": "Algerian Dinar", + "symbol_native": "د.ج.‏", + "decimal_digits": 2, + "rounding": 0, + "code": "DZD", + "name_plural": "Algerian dinars" + }, + "EEK": { + "symbol": "Ekr", + "name": "Estonian Kroon", + "symbol_native": "kr", + "decimal_digits": 2, + "rounding": 0, + "code": "EEK", + "name_plural": "Estonian kroons" + }, + "EGP": { + "symbol": "EGP", + "name": "Egyptian Pound", + "symbol_native": "ج.م.‏", + "decimal_digits": 2, + "rounding": 0, + "code": "EGP", + "name_plural": "Egyptian pounds" + }, + "ERN": { + "symbol": "Nfk", + "name": "Eritrean Nakfa", + "symbol_native": "Nfk", + "decimal_digits": 2, + "rounding": 0, + "code": "ERN", + "name_plural": "Eritrean nakfas" + }, + "ETB": { + "symbol": "Br", + "name": "Ethiopian Birr", + "symbol_native": "Br", + "decimal_digits": 2, + "rounding": 0, + "code": "ETB", + "name_plural": "Ethiopian birrs" + }, + "GBP": { + "symbol": "£", + "name": "British Pound Sterling", + "symbol_native": "£", + "decimal_digits": 2, + "rounding": 0, + "code": "GBP", + "name_plural": "British pounds sterling" + }, + "GEL": { + "symbol": "GEL", + "name": "Georgian Lari", + "symbol_native": "GEL", + "decimal_digits": 2, + "rounding": 0, + "code": "GEL", + "name_plural": "Georgian laris" + }, + "GHS": { + "symbol": "GH₵", + "name": "Ghanaian Cedi", + "symbol_native": "GH₵", + "decimal_digits": 2, + "rounding": 0, + "code": "GHS", + "name_plural": "Ghanaian cedis" + }, + "GNF": { + "symbol": "FG", + "name": "Guinean Franc", + "symbol_native": "FG", + "decimal_digits": 0, + "rounding": 0, + "code": "GNF", + "name_plural": "Guinean francs" + }, + "GTQ": { + "symbol": "GTQ", + "name": "Guatemalan Quetzal", + "symbol_native": "Q", + "decimal_digits": 2, + "rounding": 0, + "code": "GTQ", + "name_plural": "Guatemalan quetzals" + }, + "HKD": { + "symbol": "HK$", + "name": "Hong Kong Dollar", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "HKD", + "name_plural": "Hong Kong dollars" + }, + "HNL": { + "symbol": "HNL", + "name": "Honduran Lempira", + "symbol_native": "L", + "decimal_digits": 2, + "rounding": 0, + "code": "HNL", + "name_plural": "Honduran lempiras" + }, + "HRK": { + "symbol": "kn", + "name": "Croatian Kuna", + "symbol_native": "kn", + "decimal_digits": 2, + "rounding": 0, + "code": "HRK", + "name_plural": "Croatian kunas" + }, + "HUF": { + "symbol": "Ft", + "name": "Hungarian Forint", + "symbol_native": "Ft", + "decimal_digits": 0, + "rounding": 0, + "code": "HUF", + "name_plural": "Hungarian forints" + }, + "IDR": { + "symbol": "Rp", + "name": "Indonesian Rupiah", + "symbol_native": "Rp", + "decimal_digits": 0, + "rounding": 0, + "code": "IDR", + "name_plural": "Indonesian rupiahs" + }, + "ILS": { + "symbol": "₪", + "name": "Israeli New Sheqel", + "symbol_native": "₪", + "decimal_digits": 2, + "rounding": 0, + "code": "ILS", + "name_plural": "Israeli new sheqels" + }, + "INR": { + "symbol": "Rs", + "name": "Indian Rupee", + "symbol_native": "টকা", + "decimal_digits": 2, + "rounding": 0, + "code": "INR", + "name_plural": "Indian rupees" + }, + "IQD": { + "symbol": "IQD", + "name": "Iraqi Dinar", + "symbol_native": "د.ع.‏", + "decimal_digits": 0, + "rounding": 0, + "code": "IQD", + "name_plural": "Iraqi dinars" + }, + "IRR": { + "symbol": "IRR", + "name": "Iranian Rial", + "symbol_native": "﷼", + "decimal_digits": 0, + "rounding": 0, + "code": "IRR", + "name_plural": "Iranian rials" + }, + "ISK": { + "symbol": "Ikr", + "name": "Icelandic Króna", + "symbol_native": "kr", + "decimal_digits": 0, + "rounding": 0, + "code": "ISK", + "name_plural": "Icelandic krónur" + }, + "JMD": { + "symbol": "J$", + "name": "Jamaican Dollar", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "JMD", + "name_plural": "Jamaican dollars" + }, + "JOD": { + "symbol": "JD", + "name": "Jordanian Dinar", + "symbol_native": "د.أ.‏", + "decimal_digits": 3, + "rounding": 0, + "code": "JOD", + "name_plural": "Jordanian dinars" + }, + "JPY": { + "symbol": "¥", + "name": "Japanese Yen", + "symbol_native": "¥", + "decimal_digits": 0, + "rounding": 0, + "code": "JPY", + "name_plural": "Japanese yen" + }, + "KES": { + "symbol": "Ksh", + "name": "Kenyan Shilling", + "symbol_native": "Ksh", + "decimal_digits": 2, + "rounding": 0, + "code": "KES", + "name_plural": "Kenyan shillings" + }, + "KHR": { + "symbol": "KHR", + "name": "Cambodian Riel", + "symbol_native": "៛", + "decimal_digits": 2, + "rounding": 0, + "code": "KHR", + "name_plural": "Cambodian riels" + }, + "KMF": { + "symbol": "CF", + "name": "Comorian Franc", + "symbol_native": "FC", + "decimal_digits": 0, + "rounding": 0, + "code": "KMF", + "name_plural": "Comorian francs" + }, + "KRW": { + "symbol": "₩", + "name": "South Korean Won", + "symbol_native": "₩", + "decimal_digits": 0, + "rounding": 0, + "code": "KRW", + "name_plural": "South Korean won" + }, + "KWD": { + "symbol": "KD", + "name": "Kuwaiti Dinar", + "symbol_native": "د.ك.‏", + "decimal_digits": 3, + "rounding": 0, + "code": "KWD", + "name_plural": "Kuwaiti dinars" + }, + "KZT": { + "symbol": "KZT", + "name": "Kazakhstani Tenge", + "symbol_native": "тңг.", + "decimal_digits": 2, + "rounding": 0, + "code": "KZT", + "name_plural": "Kazakhstani tenges" + }, + "LBP": { + "symbol": "LB£", + "name": "Lebanese Pound", + "symbol_native": "ل.ل.‏", + "decimal_digits": 0, + "rounding": 0, + "code": "LBP", + "name_plural": "Lebanese pounds" + }, + "LKR": { + "symbol": "SLRs", + "name": "Sri Lankan Rupee", + "symbol_native": "SL Re", + "decimal_digits": 2, + "rounding": 0, + "code": "LKR", + "name_plural": "Sri Lankan rupees" + }, + "LTL": { + "symbol": "Lt", + "name": "Lithuanian Litas", + "symbol_native": "Lt", + "decimal_digits": 2, + "rounding": 0, + "code": "LTL", + "name_plural": "Lithuanian litai" + }, + "LVL": { + "symbol": "Ls", + "name": "Latvian Lats", + "symbol_native": "Ls", + "decimal_digits": 2, + "rounding": 0, + "code": "LVL", + "name_plural": "Latvian lati" + }, + "LYD": { + "symbol": "LD", + "name": "Libyan Dinar", + "symbol_native": "د.ل.‏", + "decimal_digits": 3, + "rounding": 0, + "code": "LYD", + "name_plural": "Libyan dinars" + }, + "MAD": { + "symbol": "MAD", + "name": "Moroccan Dirham", + "symbol_native": "د.م.‏", + "decimal_digits": 2, + "rounding": 0, + "code": "MAD", + "name_plural": "Moroccan dirhams" + }, + "MDL": { + "symbol": "MDL", + "name": "Moldovan Leu", + "symbol_native": "MDL", + "decimal_digits": 2, + "rounding": 0, + "code": "MDL", + "name_plural": "Moldovan lei" + }, + "MGA": { + "symbol": "MGA", + "name": "Malagasy Ariary", + "symbol_native": "MGA", + "decimal_digits": 0, + "rounding": 0, + "code": "MGA", + "name_plural": "Malagasy Ariaries" + }, + "MKD": { + "symbol": "MKD", + "name": "Macedonian Denar", + "symbol_native": "MKD", + "decimal_digits": 2, + "rounding": 0, + "code": "MKD", + "name_plural": "Macedonian denari" + }, + "MMK": { + "symbol": "MMK", + "name": "Myanma Kyat", + "symbol_native": "K", + "decimal_digits": 0, + "rounding": 0, + "code": "MMK", + "name_plural": "Myanma kyats" + }, + "MOP": { + "symbol": "MOP$", + "name": "Macanese Pataca", + "symbol_native": "MOP$", + "decimal_digits": 2, + "rounding": 0, + "code": "MOP", + "name_plural": "Macanese patacas" + }, + "MUR": { + "symbol": "MURs", + "name": "Mauritian Rupee", + "symbol_native": "MURs", + "decimal_digits": 0, + "rounding": 0, + "code": "MUR", + "name_plural": "Mauritian rupees" + }, + "MXN": { + "symbol": "MX$", + "name": "Mexican Peso", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "MXN", + "name_plural": "Mexican pesos" + }, + "MYR": { + "symbol": "RM", + "name": "Malaysian Ringgit", + "symbol_native": "RM", + "decimal_digits": 2, + "rounding": 0, + "code": "MYR", + "name_plural": "Malaysian ringgits" + }, + "MZN": { + "symbol": "MTn", + "name": "Mozambican Metical", + "symbol_native": "MTn", + "decimal_digits": 2, + "rounding": 0, + "code": "MZN", + "name_plural": "Mozambican meticals" + }, + "NAD": { + "symbol": "N$", + "name": "Namibian Dollar", + "symbol_native": "N$", + "decimal_digits": 2, + "rounding": 0, + "code": "NAD", + "name_plural": "Namibian dollars" + }, + "NGN": { + "symbol": "₦", + "name": "Nigerian Naira", + "symbol_native": "₦", + "decimal_digits": 2, + "rounding": 0, + "code": "NGN", + "name_plural": "Nigerian nairas" + }, + "NIO": { + "symbol": "C$", + "name": "Nicaraguan Córdoba", + "symbol_native": "C$", + "decimal_digits": 2, + "rounding": 0, + "code": "NIO", + "name_plural": "Nicaraguan córdobas" + }, + "NOK": { + "symbol": "Nkr", + "name": "Norwegian Krone", + "symbol_native": "kr", + "decimal_digits": 2, + "rounding": 0, + "code": "NOK", + "name_plural": "Norwegian kroner" + }, + "NPR": { + "symbol": "NPRs", + "name": "Nepalese Rupee", + "symbol_native": "नेरू", + "decimal_digits": 2, + "rounding": 0, + "code": "NPR", + "name_plural": "Nepalese rupees" + }, + "NZD": { + "symbol": "NZ$", + "name": "New Zealand Dollar", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "NZD", + "name_plural": "New Zealand dollars" + }, + "OMR": { + "symbol": "OMR", + "name": "Omani Rial", + "symbol_native": "ر.ع.‏", + "decimal_digits": 3, + "rounding": 0, + "code": "OMR", + "name_plural": "Omani rials" + }, + "PAB": { + "symbol": "B/.", + "name": "Panamanian Balboa", + "symbol_native": "B/.", + "decimal_digits": 2, + "rounding": 0, + "code": "PAB", + "name_plural": "Panamanian balboas" + }, + "PEN": { + "symbol": "S/.", + "name": "Peruvian Nuevo Sol", + "symbol_native": "S/.", + "decimal_digits": 2, + "rounding": 0, + "code": "PEN", + "name_plural": "Peruvian nuevos soles" + }, + "PHP": { + "symbol": "₱", + "name": "Philippine Peso", + "symbol_native": "₱", + "decimal_digits": 2, + "rounding": 0, + "code": "PHP", + "name_plural": "Philippine pesos" + }, + "PKR": { + "symbol": "PKRs", + "name": "Pakistani Rupee", + "symbol_native": "₨", + "decimal_digits": 0, + "rounding": 0, + "code": "PKR", + "name_plural": "Pakistani rupees" + }, + "PLN": { + "symbol": "zł", + "name": "Polish Zloty", + "symbol_native": "zł", + "decimal_digits": 2, + "rounding": 0, + "code": "PLN", + "name_plural": "Polish zlotys" + }, + "PYG": { + "symbol": "₲", + "name": "Paraguayan Guarani", + "symbol_native": "₲", + "decimal_digits": 0, + "rounding": 0, + "code": "PYG", + "name_plural": "Paraguayan guaranis" + }, + "QAR": { + "symbol": "QR", + "name": "Qatari Rial", + "symbol_native": "ر.ق.‏", + "decimal_digits": 2, + "rounding": 0, + "code": "QAR", + "name_plural": "Qatari rials" + }, + "RON": { + "symbol": "RON", + "name": "Romanian Leu", + "symbol_native": "RON", + "decimal_digits": 2, + "rounding": 0, + "code": "RON", + "name_plural": "Romanian lei" + }, + "RSD": { + "symbol": "din.", + "name": "Serbian Dinar", + "symbol_native": "дин.", + "decimal_digits": 0, + "rounding": 0, + "code": "RSD", + "name_plural": "Serbian dinars" + }, + "RUB": { + "symbol": "RUB", + "name": "Russian Ruble", + "symbol_native": "руб.", + "decimal_digits": 2, + "rounding": 0, + "code": "RUB", + "name_plural": "Russian rubles" + }, + "RWF": { + "symbol": "RWF", + "name": "Rwandan Franc", + "symbol_native": "FR", + "decimal_digits": 0, + "rounding": 0, + "code": "RWF", + "name_plural": "Rwandan francs" + }, + "SAR": { + "symbol": "SR", + "name": "Saudi Riyal", + "symbol_native": "ر.س.‏", + "decimal_digits": 2, + "rounding": 0, + "code": "SAR", + "name_plural": "Saudi riyals" + }, + "SDG": { + "symbol": "SDG", + "name": "Sudanese Pound", + "symbol_native": "SDG", + "decimal_digits": 2, + "rounding": 0, + "code": "SDG", + "name_plural": "Sudanese pounds" + }, + "SEK": { + "symbol": "Skr", + "name": "Swedish Krona", + "symbol_native": "kr", + "decimal_digits": 2, + "rounding": 0, + "code": "SEK", + "name_plural": "Swedish kronor" + }, + "SGD": { + "symbol": "S$", + "name": "Singapore Dollar", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "SGD", + "name_plural": "Singapore dollars" + }, + "SOS": { + "symbol": "Ssh", + "name": "Somali Shilling", + "symbol_native": "Ssh", + "decimal_digits": 0, + "rounding": 0, + "code": "SOS", + "name_plural": "Somali shillings" + }, + "SYP": { + "symbol": "SY£", + "name": "Syrian Pound", + "symbol_native": "ل.س.‏", + "decimal_digits": 0, + "rounding": 0, + "code": "SYP", + "name_plural": "Syrian pounds" + }, + "THB": { + "symbol": "฿", + "name": "Thai Baht", + "symbol_native": "฿", + "decimal_digits": 2, + "rounding": 0, + "code": "THB", + "name_plural": "Thai baht" + }, + "TND": { + "symbol": "DT", + "name": "Tunisian Dinar", + "symbol_native": "د.ت.‏", + "decimal_digits": 3, + "rounding": 0, + "code": "TND", + "name_plural": "Tunisian dinars" + }, + "TOP": { + "symbol": "T$", + "name": "Tongan Paʻanga", + "symbol_native": "T$", + "decimal_digits": 2, + "rounding": 0, + "code": "TOP", + "name_plural": "Tongan paʻanga" + }, + "TRY": { + "symbol": "TL", + "name": "Turkish Lira", + "symbol_native": "TL", + "decimal_digits": 2, + "rounding": 0, + "code": "TRY", + "name_plural": "Turkish Lira" + }, + "TTD": { + "symbol": "TT$", + "name": "Trinidad and Tobago Dollar", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "TTD", + "name_plural": "Trinidad and Tobago dollars" + }, + "TWD": { + "symbol": "NT$", + "name": "New Taiwan Dollar", + "symbol_native": "NT$", + "decimal_digits": 2, + "rounding": 0, + "code": "TWD", + "name_plural": "New Taiwan dollars" + }, + "TZS": { + "symbol": "TSh", + "name": "Tanzanian Shilling", + "symbol_native": "TSh", + "decimal_digits": 0, + "rounding": 0, + "code": "TZS", + "name_plural": "Tanzanian shillings" + }, + "UAH": { + "symbol": "₴", + "name": "Ukrainian Hryvnia", + "symbol_native": "₴", + "decimal_digits": 2, + "rounding": 0, + "code": "UAH", + "name_plural": "Ukrainian hryvnias" + }, + "UGX": { + "symbol": "USh", + "name": "Ugandan Shilling", + "symbol_native": "USh", + "decimal_digits": 0, + "rounding": 0, + "code": "UGX", + "name_plural": "Ugandan shillings" + }, + "UYU": { + "symbol": "$U", + "name": "Uruguayan Peso", + "symbol_native": "$", + "decimal_digits": 2, + "rounding": 0, + "code": "UYU", + "name_plural": "Uruguayan pesos" + }, + "UZS": { + "symbol": "UZS", + "name": "Uzbekistan Som", + "symbol_native": "UZS", + "decimal_digits": 0, + "rounding": 0, + "code": "UZS", + "name_plural": "Uzbekistan som" + }, + "VEF": { + "symbol": "Bs.F.", + "name": "Venezuelan Bolívar", + "symbol_native": "Bs.F.", + "decimal_digits": 2, + "rounding": 0, + "code": "VEF", + "name_plural": "Venezuelan bolívars" + }, + "VND": { + "symbol": "₫", + "name": "Vietnamese Dong", + "symbol_native": "₫", + "decimal_digits": 0, + "rounding": 0, + "code": "VND", + "name_plural": "Vietnamese dong" + }, + "XAF": { + "symbol": "FCFA", + "name": "CFA Franc BEAC", + "symbol_native": "FCFA", + "decimal_digits": 0, + "rounding": 0, + "code": "XAF", + "name_plural": "CFA francs BEAC" + }, + "XOF": { + "symbol": "CFA", + "name": "CFA Franc BCEAO", + "symbol_native": "CFA", + "decimal_digits": 0, + "rounding": 0, + "code": "XOF", + "name_plural": "CFA francs BCEAO" + }, + "YER": { + "symbol": "YR", + "name": "Yemeni Rial", + "symbol_native": "ر.ي.‏", + "decimal_digits": 0, + "rounding": 0, + "code": "YER", + "name_plural": "Yemeni rials" + }, + "ZAR": { + "symbol": "R", + "name": "South African Rand", + "symbol_native": "R", + "decimal_digits": 2, + "rounding": 0, + "code": "ZAR", + "name_plural": "South African rand" + }, + "ZMK": { + "symbol": "ZK", + "name": "Zambian Kwacha", + "symbol_native": "ZK", + "decimal_digits": 0, + "rounding": 0, + "code": "ZMK", + "name_plural": "Zambian kwachas" + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Data/states.json b/packages/Webkul/Core/src/Data/states.json new file mode 100755 index 000000000..8efb1bd2a --- /dev/null +++ b/packages/Webkul/Core/src/Data/states.json @@ -0,0 +1,3978 @@ +[ + { + "id":1, + "country_code":"US", + "code":"AL", + "default_name":"Alabama", + "country_id":244 + }, + { + "id":2, + "country_code":"US", + "code":"AK", + "default_name":"Alaska", + "country_id":244 + }, + { + "id":3, + "country_code":"US", + "code":"AS", + "default_name":"American Samoa", + "country_id":244 + }, + { + "id":4, + "country_code":"US", + "code":"AZ", + "default_name":"Arizona", + "country_id":244 + }, + { + "id":5, + "country_code":"US", + "code":"AR", + "default_name":"Arkansas", + "country_id":244 + }, + { + "id":6, + "country_code":"US", + "code":"AE", + "default_name":"Armed Forces Africa", + "country_id":244 + }, + { + "id":7, + "country_code":"US", + "code":"AA", + "default_name":"Armed Forces Americas", + "country_id":244 + }, + { + "id":8, + "country_code":"US", + "code":"AE", + "default_name":"Armed Forces Canada", + "country_id":244 + }, + { + "id":9, + "country_code":"US", + "code":"AE", + "default_name":"Armed Forces Europe", + "country_id":244 + }, + { + "id":10, + "country_code":"US", + "code":"AE", + "default_name":"Armed Forces Middle East", + "country_id":244 + }, + { + "id":11, + "country_code":"US", + "code":"AP", + "default_name":"Armed Forces Pacific", + "country_id":244 + }, + { + "id":12, + "country_code":"US", + "code":"CA", + "default_name":"California", + "country_id":244 + }, + { + "id":13, + "country_code":"US", + "code":"CO", + "default_name":"Colorado", + "country_id":244 + }, + { + "id":14, + "country_code":"US", + "code":"CT", + "default_name":"Connecticut", + "country_id":244 + }, + { + "id":15, + "country_code":"US", + "code":"DE", + "default_name":"Delaware", + "country_id":244 + }, + { + "id":16, + "country_code":"US", + "code":"DC", + "default_name":"District of Columbia", + "country_id":244 + }, + { + "id":17, + "country_code":"US", + "code":"FM", + "default_name":"Federated States Of Micronesia", + "country_id":244 + }, + { + "id":18, + "country_code":"US", + "code":"FL", + "default_name":"Florida", + "country_id":244 + }, + { + "id":19, + "country_code":"US", + "code":"GA", + "default_name":"Georgia", + "country_id":244 + }, + { + "id":20, + "country_code":"US", + "code":"GU", + "default_name":"Guam", + "country_id":244 + }, + { + "id":21, + "country_code":"US", + "code":"HI", + "default_name":"Hawaii", + "country_id":244 + }, + { + "id":22, + "country_code":"US", + "code":"ID", + "default_name":"Idaho", + "country_id":244 + }, + { + "id":23, + "country_code":"US", + "code":"IL", + "default_name":"Illinois", + "country_id":244 + }, + { + "id":24, + "country_code":"US", + "code":"IN", + "default_name":"Indiana", + "country_id":244 + }, + { + "id":25, + "country_code":"US", + "code":"IA", + "default_name":"Iowa", + "country_id":244 + }, + { + "id":26, + "country_code":"US", + "code":"KS", + "default_name":"Kansas", + "country_id":244 + }, + { + "id":27, + "country_code":"US", + "code":"KY", + "default_name":"Kentucky", + "country_id":244 + }, + { + "id":28, + "country_code":"US", + "code":"LA", + "default_name":"Louisiana", + "country_id":244 + }, + { + "id":29, + "country_code":"US", + "code":"ME", + "default_name":"Maine", + "country_id":244 + }, + { + "id":30, + "country_code":"US", + "code":"MH", + "default_name":"Marshall Islands", + "country_id":244 + }, + { + "id":31, + "country_code":"US", + "code":"MD", + "default_name":"Maryland", + "country_id":244 + }, + { + "id":32, + "country_code":"US", + "code":"MA", + "default_name":"Massachusetts", + "country_id":244 + }, + { + "id":33, + "country_code":"US", + "code":"MI", + "default_name":"Michigan", + "country_id":244 + }, + { + "id":34, + "country_code":"US", + "code":"MN", + "default_name":"Minnesota", + "country_id":244 + }, + { + "id":35, + "country_code":"US", + "code":"MS", + "default_name":"Mississippi", + "country_id":244 + }, + { + "id":36, + "country_code":"US", + "code":"MO", + "default_name":"Missouri", + "country_id":244 + }, + { + "id":37, + "country_code":"US", + "code":"MT", + "default_name":"Montana", + "country_id":244 + }, + { + "id":38, + "country_code":"US", + "code":"NE", + "default_name":"Nebraska", + "country_id":244 + }, + { + "id":39, + "country_code":"US", + "code":"NV", + "default_name":"Nevada", + "country_id":244 + }, + { + "id":40, + "country_code":"US", + "code":"NH", + "default_name":"New Hampshire", + "country_id":244 + }, + { + "id":41, + "country_code":"US", + "code":"NJ", + "default_name":"New Jersey", + "country_id":244 + }, + { + "id":42, + "country_code":"US", + "code":"NM", + "default_name":"New Mexico", + "country_id":244 + }, + { + "id":43, + "country_code":"US", + "code":"NY", + "default_name":"New York", + "country_id":244 + }, + { + "id":44, + "country_code":"US", + "code":"NC", + "default_name":"North Carolina", + "country_id":244 + }, + { + "id":45, + "country_code":"US", + "code":"ND", + "default_name":"North Dakota", + "country_id":244 + }, + { + "id":46, + "country_code":"US", + "code":"MP", + "default_name":"Northern Mariana Islands", + "country_id":244 + }, + { + "id":47, + "country_code":"US", + "code":"OH", + "default_name":"Ohio", + "country_id":244 + }, + { + "id":48, + "country_code":"US", + "code":"OK", + "default_name":"Oklahoma", + "country_id":244 + }, + { + "id":49, + "country_code":"US", + "code":"OR", + "default_name":"Oregon", + "country_id":244 + }, + { + "id":50, + "country_code":"US", + "code":"PW", + "default_name":"Palau", + "country_id":244 + }, + { + "id":51, + "country_code":"US", + "code":"PA", + "default_name":"Pennsylvania", + "country_id":244 + }, + { + "id":52, + "country_code":"US", + "code":"PR", + "default_name":"Puerto Rico", + "country_id":244 + }, + { + "id":53, + "country_code":"US", + "code":"RI", + "default_name":"Rhode Island", + "country_id":244 + }, + { + "id":54, + "country_code":"US", + "code":"SC", + "default_name":"South Carolina", + "country_id":244 + }, + { + "id":55, + "country_code":"US", + "code":"SD", + "default_name":"South Dakota", + "country_id":244 + }, + { + "id":56, + "country_code":"US", + "code":"TN", + "default_name":"Tennessee", + "country_id":244 + }, + { + "id":57, + "country_code":"US", + "code":"TX", + "default_name":"Texas", + "country_id":244 + }, + { + "id":58, + "country_code":"US", + "code":"UT", + "default_name":"Utah", + "country_id":244 + }, + { + "id":59, + "country_code":"US", + "code":"VT", + "default_name":"Vermont", + "country_id":244 + }, + { + "id":60, + "country_code":"US", + "code":"VI", + "default_name":"Virgin Islands", + "country_id":244 + }, + { + "id":61, + "country_code":"US", + "code":"VA", + "default_name":"Virginia", + "country_id":244 + }, + { + "id":62, + "country_code":"US", + "code":"WA", + "default_name":"Washington", + "country_id":244 + }, + { + "id":63, + "country_code":"US", + "code":"WV", + "default_name":"West Virginia", + "country_id":244 + }, + { + "id":64, + "country_code":"US", + "code":"WI", + "default_name":"Wisconsin", + "country_id":244 + }, + { + "id":65, + "country_code":"US", + "code":"WY", + "default_name":"Wyoming", + "country_id":244 + }, + { + "id":66, + "country_code":"CA", + "code":"AB", + "default_name":"Alberta", + "country_id":40 + }, + { + "id":67, + "country_code":"CA", + "code":"BC", + "default_name":"British Columbia", + "country_id":40 + }, + { + "id":68, + "country_code":"CA", + "code":"MB", + "default_name":"Manitoba", + "country_id":40 + }, + { + "id":69, + "country_code":"CA", + "code":"NL", + "default_name":"Newfoundland and Labrador", + "country_id":40 + }, + { + "id":70, + "country_code":"CA", + "code":"NB", + "default_name":"New Brunswick", + "country_id":40 + }, + { + "id":71, + "country_code":"CA", + "code":"NS", + "default_name":"Nova Scotia", + "country_id":40 + }, + { + "id":72, + "country_code":"CA", + "code":"NT", + "default_name":"Northwest Territories", + "country_id":40 + }, + { + "id":73, + "country_code":"CA", + "code":"NU", + "default_name":"Nunavut", + "country_id":40 + }, + { + "id":74, + "country_code":"CA", + "code":"ON", + "default_name":"Ontario", + "country_id":40 + }, + { + "id":75, + "country_code":"CA", + "code":"PE", + "default_name":"Prince Edward Island", + "country_id":40 + }, + { + "id":76, + "country_code":"CA", + "code":"QC", + "default_name":"Quebec", + "country_id":40 + }, + { + "id":77, + "country_code":"CA", + "code":"SK", + "default_name":"Saskatchewan", + "country_id":40 + }, + { + "id":78, + "country_code":"CA", + "code":"YT", + "default_name":"Yukon Territory", + "country_id":40 + }, + { + "id":79, + "country_code":"DE", + "code":"NDS", + "default_name":"Niedersachsen", + "country_id":88 + }, + { + "id":80, + "country_code":"DE", + "code":"BAW", + "default_name":"Baden-W\u00fcrttemberg", + "country_id":88 + }, + { + "id":81, + "country_code":"DE", + "code":"BAY", + "default_name":"Bayern", + "country_id":88 + }, + { + "id":82, + "country_code":"DE", + "code":"BER", + "default_name":"Berlin", + "country_id":88 + }, + { + "id":83, + "country_code":"DE", + "code":"BRG", + "default_name":"Brandenburg", + "country_id":88 + }, + { + "id":84, + "country_code":"DE", + "code":"BRE", + "default_name":"Bremen", + "country_id":88 + }, + { + "id":85, + "country_code":"DE", + "code":"HAM", + "default_name":"Hamburg", + "country_id":88 + }, + { + "id":86, + "country_code":"DE", + "code":"HES", + "default_name":"Hessen", + "country_id":88 + }, + { + "id":87, + "country_code":"DE", + "code":"MEC", + "default_name":"Mecklenburg-Vorpommern", + "country_id":88 + }, + { + "id":88, + "country_code":"DE", + "code":"NRW", + "default_name":"Nordrhein-Westfalen", + "country_id":88 + }, + { + "id":89, + "country_code":"DE", + "code":"RHE", + "default_name":"Rheinland-Pfalz", + "country_id":88 + }, + { + "id":90, + "country_code":"DE", + "code":"SAR", + "default_name":"Saarland", + "country_id":88 + }, + { + "id":91, + "country_code":"DE", + "code":"SAS", + "default_name":"Sachsen", + "country_id":88 + }, + { + "id":92, + "country_code":"DE", + "code":"SAC", + "default_name":"Sachsen-Anhalt", + "country_id":88 + }, + { + "id":93, + "country_code":"DE", + "code":"SCN", + "default_name":"Schleswig-Holstein", + "country_id":88 + }, + { + "id":94, + "country_code":"DE", + "code":"THE", + "default_name":"Th\u00fcringen", + "country_id":88 + }, + { + "id":95, + "country_code":"AT", + "code":"WI", + "default_name":"Wien", + "country_id":16 + }, + { + "id":96, + "country_code":"AT", + "code":"NO", + "default_name":"Nieder\u00f6sterreich", + "country_id":16 + }, + { + "id":97, + "country_code":"AT", + "code":"OO", + "default_name":"Ober\u00f6sterreich", + "country_id":16 + }, + { + "id":98, + "country_code":"AT", + "code":"SB", + "default_name":"Salzburg", + "country_id":16 + }, + { + "id":99, + "country_code":"AT", + "code":"KN", + "default_name":"K\u00e4rnten", + "country_id":16 + }, + { + "id":100, + "country_code":"AT", + "code":"ST", + "default_name":"Steiermark", + "country_id":16 + }, + { + "id":101, + "country_code":"AT", + "code":"TI", + "default_name":"Tirol", + "country_id":16 + }, + { + "id":102, + "country_code":"AT", + "code":"BL", + "default_name":"Burgenland", + "country_id":16 + }, + { + "id":103, + "country_code":"AT", + "code":"VB", + "default_name":"Vorarlberg", + "country_id":16 + }, + { + "id":104, + "country_code":"CH", + "code":"AG", + "default_name":"Aargau", + "country_id":220 + }, + { + "id":105, + "country_code":"CH", + "code":"AI", + "default_name":"Appenzell Innerrhoden", + "country_id":220 + }, + { + "id":106, + "country_code":"CH", + "code":"AR", + "default_name":"Appenzell Ausserrhoden", + "country_id":220 + }, + { + "id":107, + "country_code":"CH", + "code":"BE", + "default_name":"Bern", + "country_id":220 + }, + { + "id":108, + "country_code":"CH", + "code":"BL", + "default_name":"Basel-Landschaft", + "country_id":220 + }, + { + "id":109, + "country_code":"CH", + "code":"BS", + "default_name":"Basel-Stadt", + "country_id":220 + }, + { + "id":110, + "country_code":"CH", + "code":"FR", + "default_name":"Freiburg", + "country_id":220 + }, + { + "id":111, + "country_code":"CH", + "code":"GE", + "default_name":"Genf", + "country_id":220 + }, + { + "id":112, + "country_code":"CH", + "code":"GL", + "default_name":"Glarus", + "country_id":220 + }, + { + "id":113, + "country_code":"CH", + "code":"GR", + "default_name":"Graub\u00fcnden", + "country_id":220 + }, + { + "id":114, + "country_code":"CH", + "code":"JU", + "default_name":"Jura", + "country_id":220 + }, + { + "id":115, + "country_code":"CH", + "code":"LU", + "default_name":"Luzern", + "country_id":220 + }, + { + "id":116, + "country_code":"CH", + "code":"NE", + "default_name":"Neuenburg", + "country_id":220 + }, + { + "id":117, + "country_code":"CH", + "code":"NW", + "default_name":"Nidwalden", + "country_id":220 + }, + { + "id":118, + "country_code":"CH", + "code":"OW", + "default_name":"Obwalden", + "country_id":220 + }, + { + "id":119, + "country_code":"CH", + "code":"SG", + "default_name":"St. Gallen", + "country_id":220 + }, + { + "id":120, + "country_code":"CH", + "code":"SH", + "default_name":"Schaffhausen", + "country_id":220 + }, + { + "id":121, + "country_code":"CH", + "code":"SO", + "default_name":"Solothurn", + "country_id":220 + }, + { + "id":122, + "country_code":"CH", + "code":"SZ", + "default_name":"Schwyz", + "country_id":220 + }, + { + "id":123, + "country_code":"CH", + "code":"TG", + "default_name":"Thurgau", + "country_id":220 + }, + { + "id":124, + "country_code":"CH", + "code":"TI", + "default_name":"Tessin", + "country_id":220 + }, + { + "id":125, + "country_code":"CH", + "code":"UR", + "default_name":"Uri", + "country_id":220 + }, + { + "id":126, + "country_code":"CH", + "code":"VD", + "default_name":"Waadt", + "country_id":220 + }, + { + "id":127, + "country_code":"CH", + "code":"VS", + "default_name":"Wallis", + "country_id":220 + }, + { + "id":128, + "country_code":"CH", + "code":"ZG", + "default_name":"Zug", + "country_id":220 + }, + { + "id":129, + "country_code":"CH", + "code":"ZH", + "default_name":"Z\u00fcrich", + "country_id":220 + }, + { + "id":130, + "country_code":"ES", + "code":"A Coru\u0441a", + "default_name":"A Coru\u00f1a", + "country_id":206 + }, + { + "id":131, + "country_code":"ES", + "code":"Alava", + "default_name":"Alava", + "country_id":206 + }, + { + "id":132, + "country_code":"ES", + "code":"Albacete", + "default_name":"Albacete", + "country_id":206 + }, + { + "id":133, + "country_code":"ES", + "code":"Alicante", + "default_name":"Alicante", + "country_id":206 + }, + { + "id":134, + "country_code":"ES", + "code":"Almeria", + "default_name":"Almeria", + "country_id":206 + }, + { + "id":135, + "country_code":"ES", + "code":"Asturias", + "default_name":"Asturias", + "country_id":206 + }, + { + "id":136, + "country_code":"ES", + "code":"Avila", + "default_name":"Avila", + "country_id":206 + }, + { + "id":137, + "country_code":"ES", + "code":"Badajoz", + "default_name":"Badajoz", + "country_id":206 + }, + { + "id":138, + "country_code":"ES", + "code":"Baleares", + "default_name":"Baleares", + "country_id":206 + }, + { + "id":139, + "country_code":"ES", + "code":"Barcelona", + "default_name":"Barcelona", + "country_id":206 + }, + { + "id":140, + "country_code":"ES", + "code":"Burgos", + "default_name":"Burgos", + "country_id":206 + }, + { + "id":141, + "country_code":"ES", + "code":"Caceres", + "default_name":"Caceres", + "country_id":206 + }, + { + "id":142, + "country_code":"ES", + "code":"Cadiz", + "default_name":"Cadiz", + "country_id":206 + }, + { + "id":143, + "country_code":"ES", + "code":"Cantabria", + "default_name":"Cantabria", + "country_id":206 + }, + { + "id":144, + "country_code":"ES", + "code":"Castellon", + "default_name":"Castellon", + "country_id":206 + }, + { + "id":145, + "country_code":"ES", + "code":"Ceuta", + "default_name":"Ceuta", + "country_id":206 + }, + { + "id":146, + "country_code":"ES", + "code":"Ciudad Real", + "default_name":"Ciudad Real", + "country_id":206 + }, + { + "id":147, + "country_code":"ES", + "code":"Cordoba", + "default_name":"Cordoba", + "country_id":206 + }, + { + "id":148, + "country_code":"ES", + "code":"Cuenca", + "default_name":"Cuenca", + "country_id":206 + }, + { + "id":149, + "country_code":"ES", + "code":"Girona", + "default_name":"Girona", + "country_id":206 + }, + { + "id":150, + "country_code":"ES", + "code":"Granada", + "default_name":"Granada", + "country_id":206 + }, + { + "id":151, + "country_code":"ES", + "code":"Guadalajara", + "default_name":"Guadalajara", + "country_id":206 + }, + { + "id":152, + "country_code":"ES", + "code":"Guipuzcoa", + "default_name":"Guipuzcoa", + "country_id":206 + }, + { + "id":153, + "country_code":"ES", + "code":"Huelva", + "default_name":"Huelva", + "country_id":206 + }, + { + "id":154, + "country_code":"ES", + "code":"Huesca", + "default_name":"Huesca", + "country_id":206 + }, + { + "id":155, + "country_code":"ES", + "code":"Jaen", + "default_name":"Jaen", + "country_id":206 + }, + { + "id":156, + "country_code":"ES", + "code":"La Rioja", + "default_name":"La Rioja", + "country_id":206 + }, + { + "id":157, + "country_code":"ES", + "code":"Las Palmas", + "default_name":"Las Palmas", + "country_id":206 + }, + { + "id":158, + "country_code":"ES", + "code":"Leon", + "default_name":"Leon", + "country_id":206 + }, + { + "id":159, + "country_code":"ES", + "code":"Lleida", + "default_name":"Lleida", + "country_id":206 + }, + { + "id":160, + "country_code":"ES", + "code":"Lugo", + "default_name":"Lugo", + "country_id":206 + }, + { + "id":161, + "country_code":"ES", + "code":"Madrid", + "default_name":"Madrid", + "country_id":206 + }, + { + "id":162, + "country_code":"ES", + "code":"Malaga", + "default_name":"Malaga", + "country_id":206 + }, + { + "id":163, + "country_code":"ES", + "code":"Melilla", + "default_name":"Melilla", + "country_id":206 + }, + { + "id":164, + "country_code":"ES", + "code":"Murcia", + "default_name":"Murcia", + "country_id":206 + }, + { + "id":165, + "country_code":"ES", + "code":"Navarra", + "default_name":"Navarra", + "country_id":206 + }, + { + "id":166, + "country_code":"ES", + "code":"Ourense", + "default_name":"Ourense", + "country_id":206 + }, + { + "id":167, + "country_code":"ES", + "code":"Palencia", + "default_name":"Palencia", + "country_id":206 + }, + { + "id":168, + "country_code":"ES", + "code":"Pontevedra", + "default_name":"Pontevedra", + "country_id":206 + }, + { + "id":169, + "country_code":"ES", + "code":"Salamanca", + "default_name":"Salamanca", + "country_id":206 + }, + { + "id":170, + "country_code":"ES", + "code":"Santa Cruz de Tenerife", + "default_name":"Santa Cruz de Tenerife", + "country_id":206 + }, + { + "id":171, + "country_code":"ES", + "code":"Segovia", + "default_name":"Segovia", + "country_id":206 + }, + { + "id":172, + "country_code":"ES", + "code":"Sevilla", + "default_name":"Sevilla", + "country_id":206 + }, + { + "id":173, + "country_code":"ES", + "code":"Soria", + "default_name":"Soria", + "country_id":206 + }, + { + "id":174, + "country_code":"ES", + "code":"Tarragona", + "default_name":"Tarragona", + "country_id":206 + }, + { + "id":175, + "country_code":"ES", + "code":"Teruel", + "default_name":"Teruel", + "country_id":206 + }, + { + "id":176, + "country_code":"ES", + "code":"Toledo", + "default_name":"Toledo", + "country_id":206 + }, + { + "id":177, + "country_code":"ES", + "code":"Valencia", + "default_name":"Valencia", + "country_id":206 + }, + { + "id":178, + "country_code":"ES", + "code":"Valladolid", + "default_name":"Valladolid", + "country_id":206 + }, + { + "id":179, + "country_code":"ES", + "code":"Vizcaya", + "default_name":"Vizcaya", + "country_id":206 + }, + { + "id":180, + "country_code":"ES", + "code":"Zamora", + "default_name":"Zamora", + "country_id":206 + }, + { + "id":181, + "country_code":"ES", + "code":"Zaragoza", + "default_name":"Zaragoza", + "country_id":206 + }, + { + "id":182, + "country_code":"FR", + "code":"1", + "default_name":"Ain", + "country_id":81 + }, + { + "id":183, + "country_code":"FR", + "code":"2", + "default_name":"Aisne", + "country_id":81 + }, + { + "id":184, + "country_code":"FR", + "code":"3", + "default_name":"Allier", + "country_id":81 + }, + { + "id":185, + "country_code":"FR", + "code":"4", + "default_name":"Alpes-de-Haute-Provence", + "country_id":81 + }, + { + "id":186, + "country_code":"FR", + "code":"5", + "default_name":"Hautes-Alpes", + "country_id":81 + }, + { + "id":187, + "country_code":"FR", + "code":"6", + "default_name":"Alpes-Maritimes", + "country_id":81 + }, + { + "id":188, + "country_code":"FR", + "code":"7", + "default_name":"Ard\u00e8che", + "country_id":81 + }, + { + "id":189, + "country_code":"FR", + "code":"8", + "default_name":"Ardennes", + "country_id":81 + }, + { + "id":190, + "country_code":"FR", + "code":"9", + "default_name":"Ari\u00e8ge", + "country_id":81 + }, + { + "id":191, + "country_code":"FR", + "code":"10", + "default_name":"Aube", + "country_id":81 + }, + { + "id":192, + "country_code":"FR", + "code":"11", + "default_name":"Aude", + "country_id":81 + }, + { + "id":193, + "country_code":"FR", + "code":"12", + "default_name":"Aveyron", + "country_id":81 + }, + { + "id":194, + "country_code":"FR", + "code":"13", + "default_name":"Bouches-du-Rh\u00f4ne", + "country_id":81 + }, + { + "id":195, + "country_code":"FR", + "code":"14", + "default_name":"Calvados", + "country_id":81 + }, + { + "id":196, + "country_code":"FR", + "code":"15", + "default_name":"Cantal", + "country_id":81 + }, + { + "id":197, + "country_code":"FR", + "code":"16", + "default_name":"Charente", + "country_id":81 + }, + { + "id":198, + "country_code":"FR", + "code":"17", + "default_name":"Charente-Maritime", + "country_id":81 + }, + { + "id":199, + "country_code":"FR", + "code":"18", + "default_name":"Cher", + "country_id":81 + }, + { + "id":200, + "country_code":"FR", + "code":"19", + "default_name":"Corr\u00e8ze", + "country_id":81 + }, + { + "id":201, + "country_code":"FR", + "code":"2A", + "default_name":"Corse-du-Sud", + "country_id":81 + }, + { + "id":202, + "country_code":"FR", + "code":"2B", + "default_name":"Haute-Corse", + "country_id":81 + }, + { + "id":203, + "country_code":"FR", + "code":"21", + "default_name":"C\u00f4te-d'Or", + "country_id":81 + }, + { + "id":204, + "country_code":"FR", + "code":"22", + "default_name":"C\u00f4tes-d'Armor", + "country_id":81 + }, + { + "id":205, + "country_code":"FR", + "code":"23", + "default_name":"Creuse", + "country_id":81 + }, + { + "id":206, + "country_code":"FR", + "code":"24", + "default_name":"Dordogne", + "country_id":81 + }, + { + "id":207, + "country_code":"FR", + "code":"25", + "default_name":"Doubs", + "country_id":81 + }, + { + "id":208, + "country_code":"FR", + "code":"26", + "default_name":"Dr\u00f4me", + "country_id":81 + }, + { + "id":209, + "country_code":"FR", + "code":"27", + "default_name":"Eure", + "country_id":81 + }, + { + "id":210, + "country_code":"FR", + "code":"28", + "default_name":"Eure-et-Loir", + "country_id":81 + }, + { + "id":211, + "country_code":"FR", + "code":"29", + "default_name":"Finist\u00e8re", + "country_id":81 + }, + { + "id":212, + "country_code":"FR", + "code":"30", + "default_name":"Gard", + "country_id":81 + }, + { + "id":213, + "country_code":"FR", + "code":"31", + "default_name":"Haute-Garonne", + "country_id":81 + }, + { + "id":214, + "country_code":"FR", + "code":"32", + "default_name":"Gers", + "country_id":81 + }, + { + "id":215, + "country_code":"FR", + "code":"33", + "default_name":"Gironde", + "country_id":81 + }, + { + "id":216, + "country_code":"FR", + "code":"34", + "default_name":"H\u00e9rault", + "country_id":81 + }, + { + "id":217, + "country_code":"FR", + "code":"35", + "default_name":"Ille-et-Vilaine", + "country_id":81 + }, + { + "id":218, + "country_code":"FR", + "code":"36", + "default_name":"Indre", + "country_id":81 + }, + { + "id":219, + "country_code":"FR", + "code":"37", + "default_name":"Indre-et-Loire", + "country_id":81 + }, + { + "id":220, + "country_code":"FR", + "code":"38", + "default_name":"Is\u00e8re", + "country_id":81 + }, + { + "id":221, + "country_code":"FR", + "code":"39", + "default_name":"Jura", + "country_id":81 + }, + { + "id":222, + "country_code":"FR", + "code":"40", + "default_name":"Landes", + "country_id":81 + }, + { + "id":223, + "country_code":"FR", + "code":"41", + "default_name":"Loir-et-Cher", + "country_id":81 + }, + { + "id":224, + "country_code":"FR", + "code":"42", + "default_name":"Loire", + "country_id":81 + }, + { + "id":225, + "country_code":"FR", + "code":"43", + "default_name":"Haute-Loire", + "country_id":81 + }, + { + "id":226, + "country_code":"FR", + "code":"44", + "default_name":"Loire-Atlantique", + "country_id":81 + }, + { + "id":227, + "country_code":"FR", + "code":"45", + "default_name":"Loiret", + "country_id":81 + }, + { + "id":228, + "country_code":"FR", + "code":"46", + "default_name":"Lot", + "country_id":81 + }, + { + "id":229, + "country_code":"FR", + "code":"47", + "default_name":"Lot-et-Garonne", + "country_id":81 + }, + { + "id":230, + "country_code":"FR", + "code":"48", + "default_name":"Loz\u00e8re", + "country_id":81 + }, + { + "id":231, + "country_code":"FR", + "code":"49", + "default_name":"Maine-et-Loire", + "country_id":81 + }, + { + "id":232, + "country_code":"FR", + "code":"50", + "default_name":"Manche", + "country_id":81 + }, + { + "id":233, + "country_code":"FR", + "code":"51", + "default_name":"Marne", + "country_id":81 + }, + { + "id":234, + "country_code":"FR", + "code":"52", + "default_name":"Haute-Marne", + "country_id":81 + }, + { + "id":235, + "country_code":"FR", + "code":"53", + "default_name":"Mayenne", + "country_id":81 + }, + { + "id":236, + "country_code":"FR", + "code":"54", + "default_name":"Meurthe-et-Moselle", + "country_id":81 + }, + { + "id":237, + "country_code":"FR", + "code":"55", + "default_name":"Meuse", + "country_id":81 + }, + { + "id":238, + "country_code":"FR", + "code":"56", + "default_name":"Morbihan", + "country_id":81 + }, + { + "id":239, + "country_code":"FR", + "code":"57", + "default_name":"Moselle", + "country_id":81 + }, + { + "id":240, + "country_code":"FR", + "code":"58", + "default_name":"Ni\u00e8vre", + "country_id":81 + }, + { + "id":241, + "country_code":"FR", + "code":"59", + "default_name":"Nord", + "country_id":81 + }, + { + "id":242, + "country_code":"FR", + "code":"60", + "default_name":"Oise", + "country_id":81 + }, + { + "id":243, + "country_code":"FR", + "code":"61", + "default_name":"Orne", + "country_id":81 + }, + { + "id":244, + "country_code":"FR", + "code":"62", + "default_name":"Pas-de-Calais", + "country_id":81 + }, + { + "id":245, + "country_code":"FR", + "code":"63", + "default_name":"Puy-de-D\u00f4me", + "country_id":81 + }, + { + "id":246, + "country_code":"FR", + "code":"64", + "default_name":"Pyr\u00e9n\u00e9es-Atlantiques", + "country_id":81 + }, + { + "id":247, + "country_code":"FR", + "code":"65", + "default_name":"Hautes-Pyr\u00e9n\u00e9es", + "country_id":81 + }, + { + "id":248, + "country_code":"FR", + "code":"66", + "default_name":"Pyr\u00e9n\u00e9es-Orientales", + "country_id":81 + }, + { + "id":249, + "country_code":"FR", + "code":"67", + "default_name":"Bas-Rhin", + "country_id":81 + }, + { + "id":250, + "country_code":"FR", + "code":"68", + "default_name":"Haut-Rhin", + "country_id":81 + }, + { + "id":251, + "country_code":"FR", + "code":"69", + "default_name":"Rh\u00f4ne", + "country_id":81 + }, + { + "id":252, + "country_code":"FR", + "code":"70", + "default_name":"Haute-Sa\u00f4ne", + "country_id":81 + }, + { + "id":253, + "country_code":"FR", + "code":"71", + "default_name":"Sa\u00f4ne-et-Loire", + "country_id":81 + }, + { + "id":254, + "country_code":"FR", + "code":"72", + "default_name":"Sarthe", + "country_id":81 + }, + { + "id":255, + "country_code":"FR", + "code":"73", + "default_name":"Savoie", + "country_id":81 + }, + { + "id":256, + "country_code":"FR", + "code":"74", + "default_name":"Haute-Savoie", + "country_id":81 + }, + { + "id":257, + "country_code":"FR", + "code":"75", + "default_name":"Paris", + "country_id":81 + }, + { + "id":258, + "country_code":"FR", + "code":"76", + "default_name":"Seine-Maritime", + "country_id":81 + }, + { + "id":259, + "country_code":"FR", + "code":"77", + "default_name":"Seine-et-Marne", + "country_id":81 + }, + { + "id":260, + "country_code":"FR", + "code":"78", + "default_name":"Yvelines", + "country_id":81 + }, + { + "id":261, + "country_code":"FR", + "code":"79", + "default_name":"Deux-S\u00e8vres", + "country_id":81 + }, + { + "id":262, + "country_code":"FR", + "code":"80", + "default_name":"Somme", + "country_id":81 + }, + { + "id":263, + "country_code":"FR", + "code":"81", + "default_name":"Tarn", + "country_id":81 + }, + { + "id":264, + "country_code":"FR", + "code":"82", + "default_name":"Tarn-et-Garonne", + "country_id":81 + }, + { + "id":265, + "country_code":"FR", + "code":"83", + "default_name":"Var", + "country_id":81 + }, + { + "id":266, + "country_code":"FR", + "code":"84", + "default_name":"Vaucluse", + "country_id":81 + }, + { + "id":267, + "country_code":"FR", + "code":"85", + "default_name":"Vend\u00e9e", + "country_id":81 + }, + { + "id":268, + "country_code":"FR", + "code":"86", + "default_name":"Vienne", + "country_id":81 + }, + { + "id":269, + "country_code":"FR", + "code":"87", + "default_name":"Haute-Vienne", + "country_id":81 + }, + { + "id":270, + "country_code":"FR", + "code":"88", + "default_name":"Vosges", + "country_id":81 + }, + { + "id":271, + "country_code":"FR", + "code":"89", + "default_name":"Yonne", + "country_id":81 + }, + { + "id":272, + "country_code":"FR", + "code":"90", + "default_name":"Territoire-de-Belfort", + "country_id":81 + }, + { + "id":273, + "country_code":"FR", + "code":"91", + "default_name":"Essonne", + "country_id":81 + }, + { + "id":274, + "country_code":"FR", + "code":"92", + "default_name":"Hauts-de-Seine", + "country_id":81 + }, + { + "id":275, + "country_code":"FR", + "code":"93", + "default_name":"Seine-Saint-Denis", + "country_id":81 + }, + { + "id":276, + "country_code":"FR", + "code":"94", + "default_name":"Val-de-Marne", + "country_id":81 + }, + { + "id":277, + "country_code":"FR", + "code":"95", + "default_name":"Val-d'Oise", + "country_id":81 + }, + { + "id":278, + "country_code":"RO", + "code":"AB", + "default_name":"Alba", + "country_id":185 + }, + { + "id":279, + "country_code":"RO", + "code":"AR", + "default_name":"Arad", + "country_id":185 + }, + { + "id":280, + "country_code":"RO", + "code":"AG", + "default_name":"Arge\u015f", + "country_id":185 + }, + { + "id":281, + "country_code":"RO", + "code":"BC", + "default_name":"Bac\u0103u", + "country_id":185 + }, + { + "id":282, + "country_code":"RO", + "code":"BH", + "default_name":"Bihor", + "country_id":185 + }, + { + "id":283, + "country_code":"RO", + "code":"BN", + "default_name":"Bistri\u0163a-N\u0103s\u0103ud", + "country_id":185 + }, + { + "id":284, + "country_code":"RO", + "code":"BT", + "default_name":"Boto\u015fani", + "country_id":185 + }, + { + "id":285, + "country_code":"RO", + "code":"BV", + "default_name":"Bra\u015fov", + "country_id":185 + }, + { + "id":286, + "country_code":"RO", + "code":"BR", + "default_name":"Br\u0103ila", + "country_id":185 + }, + { + "id":287, + "country_code":"RO", + "code":"B", + "default_name":"Bucure\u015fti", + "country_id":185 + }, + { + "id":288, + "country_code":"RO", + "code":"BZ", + "default_name":"Buz\u0103u", + "country_id":185 + }, + { + "id":289, + "country_code":"RO", + "code":"CS", + "default_name":"Cara\u015f-Severin", + "country_id":185 + }, + { + "id":290, + "country_code":"RO", + "code":"CL", + "default_name":"C\u0103l\u0103ra\u015fi", + "country_id":185 + }, + { + "id":291, + "country_code":"RO", + "code":"CJ", + "default_name":"Cluj", + "country_id":185 + }, + { + "id":292, + "country_code":"RO", + "code":"CT", + "default_name":"Constan\u0163a", + "country_id":185 + }, + { + "id":293, + "country_code":"RO", + "code":"CV", + "default_name":"Covasna", + "country_id":185 + }, + { + "id":294, + "country_code":"RO", + "code":"DB", + "default_name":"D\u00e2mbovi\u0163a", + "country_id":185 + }, + { + "id":295, + "country_code":"RO", + "code":"DJ", + "default_name":"Dolj", + "country_id":185 + }, + { + "id":296, + "country_code":"RO", + "code":"GL", + "default_name":"Gala\u0163i", + "country_id":185 + }, + { + "id":297, + "country_code":"RO", + "code":"GR", + "default_name":"Giurgiu", + "country_id":185 + }, + { + "id":298, + "country_code":"RO", + "code":"GJ", + "default_name":"Gorj", + "country_id":185 + }, + { + "id":299, + "country_code":"RO", + "code":"HR", + "default_name":"Harghita", + "country_id":185 + }, + { + "id":300, + "country_code":"RO", + "code":"HD", + "default_name":"Hunedoara", + "country_id":185 + }, + { + "id":301, + "country_code":"RO", + "code":"IL", + "default_name":"Ialomi\u0163a", + "country_id":185 + }, + { + "id":302, + "country_code":"RO", + "code":"IS", + "default_name":"Ia\u015fi", + "country_id":185 + }, + { + "id":303, + "country_code":"RO", + "code":"IF", + "default_name":"Ilfov", + "country_id":185 + }, + { + "id":304, + "country_code":"RO", + "code":"MM", + "default_name":"Maramure\u015f", + "country_id":185 + }, + { + "id":305, + "country_code":"RO", + "code":"MH", + "default_name":"Mehedin\u0163i", + "country_id":185 + }, + { + "id":306, + "country_code":"RO", + "code":"MS", + "default_name":"Mure\u015f", + "country_id":185 + }, + { + "id":307, + "country_code":"RO", + "code":"NT", + "default_name":"Neam\u0163", + "country_id":185 + }, + { + "id":308, + "country_code":"RO", + "code":"OT", + "default_name":"Olt", + "country_id":185 + }, + { + "id":309, + "country_code":"RO", + "code":"PH", + "default_name":"Prahova", + "country_id":185 + }, + { + "id":310, + "country_code":"RO", + "code":"SM", + "default_name":"Satu-Mare", + "country_id":185 + }, + { + "id":311, + "country_code":"RO", + "code":"SJ", + "default_name":"S\u0103laj", + "country_id":185 + }, + { + "id":312, + "country_code":"RO", + "code":"SB", + "default_name":"Sibiu", + "country_id":185 + }, + { + "id":313, + "country_code":"RO", + "code":"SV", + "default_name":"Suceava", + "country_id":185 + }, + { + "id":314, + "country_code":"RO", + "code":"TR", + "default_name":"Teleorman", + "country_id":185 + }, + { + "id":315, + "country_code":"RO", + "code":"TM", + "default_name":"Timi\u015f", + "country_id":185 + }, + { + "id":316, + "country_code":"RO", + "code":"TL", + "default_name":"Tulcea", + "country_id":185 + }, + { + "id":317, + "country_code":"RO", + "code":"VS", + "default_name":"Vaslui", + "country_id":185 + }, + { + "id":318, + "country_code":"RO", + "code":"VL", + "default_name":"V\u00e2lcea", + "country_id":185 + }, + { + "id":319, + "country_code":"RO", + "code":"VN", + "default_name":"Vrancea", + "country_id":185 + }, + { + "id":320, + "country_code":"FI", + "code":"Lappi", + "default_name":"Lappi", + "country_id":80 + }, + { + "id":321, + "country_code":"FI", + "code":"Pohjois-Pohjanmaa", + "default_name":"Pohjois-Pohjanmaa", + "country_id":80 + }, + { + "id":322, + "country_code":"FI", + "code":"Kainuu", + "default_name":"Kainuu", + "country_id":80 + }, + { + "id":323, + "country_code":"FI", + "code":"Pohjois-Karjala", + "default_name":"Pohjois-Karjala", + "country_id":80 + }, + { + "id":324, + "country_code":"FI", + "code":"Pohjois-Savo", + "default_name":"Pohjois-Savo", + "country_id":80 + }, + { + "id":325, + "country_code":"FI", + "code":"Etel\u00e4-Savo", + "default_name":"Etel\u00e4-Savo", + "country_id":80 + }, + { + "id":326, + "country_code":"FI", + "code":"Etel\u00e4-Pohjanmaa", + "default_name":"Etel\u00e4-Pohjanmaa", + "country_id":80 + }, + { + "id":327, + "country_code":"FI", + "code":"Pohjanmaa", + "default_name":"Pohjanmaa", + "country_id":80 + }, + { + "id":328, + "country_code":"FI", + "code":"Pirkanmaa", + "default_name":"Pirkanmaa", + "country_id":80 + }, + { + "id":329, + "country_code":"FI", + "code":"Satakunta", + "default_name":"Satakunta", + "country_id":80 + }, + { + "id":330, + "country_code":"FI", + "code":"Keski-Pohjanmaa", + "default_name":"Keski-Pohjanmaa", + "country_id":80 + }, + { + "id":331, + "country_code":"FI", + "code":"Keski-Suomi", + "default_name":"Keski-Suomi", + "country_id":80 + }, + { + "id":332, + "country_code":"FI", + "code":"Varsinais-Suomi", + "default_name":"Varsinais-Suomi", + "country_id":80 + }, + { + "id":333, + "country_code":"FI", + "code":"Etel\u00e4-Karjala", + "default_name":"Etel\u00e4-Karjala", + "country_id":80 + }, + { + "id":334, + "country_code":"FI", + "code":"P\u00e4ij\u00e4t-H\u00e4me", + "default_name":"P\u00e4ij\u00e4t-H\u00e4me", + "country_id":80 + }, + { + "id":335, + "country_code":"FI", + "code":"Kanta-H\u00e4me", + "default_name":"Kanta-H\u00e4me", + "country_id":80 + }, + { + "id":336, + "country_code":"FI", + "code":"Uusimaa", + "default_name":"Uusimaa", + "country_id":80 + }, + { + "id":337, + "country_code":"FI", + "code":"It\u00e4-Uusimaa", + "default_name":"It\u00e4-Uusimaa", + "country_id":80 + }, + { + "id":338, + "country_code":"FI", + "code":"Kymenlaakso", + "default_name":"Kymenlaakso", + "country_id":80 + }, + { + "id":339, + "country_code":"FI", + "code":"Ahvenanmaa", + "default_name":"Ahvenanmaa", + "country_id":80 + }, + { + "id":340, + "country_code":"EE", + "code":"EE-37", + "default_name":"Harjumaa", + "country_id":74 + }, + { + "id":341, + "country_code":"EE", + "code":"EE-39", + "default_name":"Hiiumaa", + "country_id":74 + }, + { + "id":342, + "country_code":"EE", + "code":"EE-44", + "default_name":"Ida-Virumaa", + "country_id":74 + }, + { + "id":343, + "country_code":"EE", + "code":"EE-49", + "default_name":"J\u00f5gevamaa", + "country_id":74 + }, + { + "id":344, + "country_code":"EE", + "code":"EE-51", + "default_name":"J\u00e4rvamaa", + "country_id":74 + }, + { + "id":345, + "country_code":"EE", + "code":"EE-57", + "default_name":"L\u00e4\u00e4nemaa", + "country_id":74 + }, + { + "id":346, + "country_code":"EE", + "code":"EE-59", + "default_name":"L\u00e4\u00e4ne-Virumaa", + "country_id":74 + }, + { + "id":347, + "country_code":"EE", + "code":"EE-65", + "default_name":"P\u00f5lvamaa", + "country_id":74 + }, + { + "id":348, + "country_code":"EE", + "code":"EE-67", + "default_name":"P\u00e4rnumaa", + "country_id":74 + }, + { + "id":349, + "country_code":"EE", + "code":"EE-70", + "default_name":"Raplamaa", + "country_id":74 + }, + { + "id":350, + "country_code":"EE", + "code":"EE-74", + "default_name":"Saaremaa", + "country_id":74 + }, + { + "id":351, + "country_code":"EE", + "code":"EE-78", + "default_name":"Tartumaa", + "country_id":74 + }, + { + "id":352, + "country_code":"EE", + "code":"EE-82", + "default_name":"Valgamaa", + "country_id":74 + }, + { + "id":353, + "country_code":"EE", + "code":"EE-84", + "default_name":"Viljandimaa", + "country_id":74 + }, + { + "id":354, + "country_code":"EE", + "code":"EE-86", + "default_name":"V\u00f5rumaa", + "country_id":74 + }, + { + "id":355, + "country_code":"LV", + "code":"LV-DGV", + "default_name":"Daugavpils", + "country_id":125 + }, + { + "id":356, + "country_code":"LV", + "code":"LV-JEL", + "default_name":"Jelgava", + "country_id":125 + }, + { + "id":357, + "country_code":"LV", + "code":"J\u0113kabpils", + "default_name":"J\u0113kabpils", + "country_id":125 + }, + { + "id":358, + "country_code":"LV", + "code":"LV-JUR", + "default_name":"J\u016brmala", + "country_id":125 + }, + { + "id":359, + "country_code":"LV", + "code":"LV-LPX", + "default_name":"Liep\u0101ja", + "country_id":125 + }, + { + "id":360, + "country_code":"LV", + "code":"LV-LE", + "default_name":"Liep\u0101jas novads", + "country_id":125 + }, + { + "id":361, + "country_code":"LV", + "code":"LV-REZ", + "default_name":"R\u0113zekne", + "country_id":125 + }, + { + "id":362, + "country_code":"LV", + "code":"LV-RIX", + "default_name":"R\u012bga", + "country_id":125 + }, + { + "id":363, + "country_code":"LV", + "code":"LV-RI", + "default_name":"R\u012bgas novads", + "country_id":125 + }, + { + "id":364, + "country_code":"LV", + "code":"Valmiera", + "default_name":"Valmiera", + "country_id":125 + }, + { + "id":365, + "country_code":"LV", + "code":"LV-VEN", + "default_name":"Ventspils", + "country_id":125 + }, + { + "id":366, + "country_code":"LV", + "code":"Aglonas novads", + "default_name":"Aglonas novads", + "country_id":125 + }, + { + "id":367, + "country_code":"LV", + "code":"LV-AI", + "default_name":"Aizkraukles novads", + "country_id":125 + }, + { + "id":368, + "country_code":"LV", + "code":"Aizputes novads", + "default_name":"Aizputes novads", + "country_id":125 + }, + { + "id":369, + "country_code":"LV", + "code":"Akn\u012bstes novads", + "default_name":"Akn\u012bstes novads", + "country_id":125 + }, + { + "id":370, + "country_code":"LV", + "code":"Alojas novads", + "default_name":"Alojas novads", + "country_id":125 + }, + { + "id":371, + "country_code":"LV", + "code":"Alsungas novads", + "default_name":"Alsungas novads", + "country_id":125 + }, + { + "id":372, + "country_code":"LV", + "code":"LV-AL", + "default_name":"Al\u016bksnes novads", + "country_id":125 + }, + { + "id":373, + "country_code":"LV", + "code":"Amatas novads", + "default_name":"Amatas novads", + "country_id":125 + }, + { + "id":374, + "country_code":"LV", + "code":"Apes novads", + "default_name":"Apes novads", + "country_id":125 + }, + { + "id":375, + "country_code":"LV", + "code":"Auces novads", + "default_name":"Auces novads", + "country_id":125 + }, + { + "id":376, + "country_code":"LV", + "code":"Bab\u012btes novads", + "default_name":"Bab\u012btes novads", + "country_id":125 + }, + { + "id":377, + "country_code":"LV", + "code":"Baldones novads", + "default_name":"Baldones novads", + "country_id":125 + }, + { + "id":378, + "country_code":"LV", + "code":"Baltinavas novads", + "default_name":"Baltinavas novads", + "country_id":125 + }, + { + "id":379, + "country_code":"LV", + "code":"LV-BL", + "default_name":"Balvu novads", + "country_id":125 + }, + { + "id":380, + "country_code":"LV", + "code":"LV-BU", + "default_name":"Bauskas novads", + "country_id":125 + }, + { + "id":381, + "country_code":"LV", + "code":"Bever\u012bnas novads", + "default_name":"Bever\u012bnas novads", + "country_id":125 + }, + { + "id":382, + "country_code":"LV", + "code":"Broc\u0113nu novads", + "default_name":"Broc\u0113nu novads", + "country_id":125 + }, + { + "id":383, + "country_code":"LV", + "code":"Burtnieku novads", + "default_name":"Burtnieku novads", + "country_id":125 + }, + { + "id":384, + "country_code":"LV", + "code":"Carnikavas novads", + "default_name":"Carnikavas novads", + "country_id":125 + }, + { + "id":385, + "country_code":"LV", + "code":"Cesvaines novads", + "default_name":"Cesvaines novads", + "country_id":125 + }, + { + "id":386, + "country_code":"LV", + "code":"Ciblas novads", + "default_name":"Ciblas novads", + "country_id":125 + }, + { + "id":387, + "country_code":"LV", + "code":"LV-CE", + "default_name":"C\u0113su novads", + "country_id":125 + }, + { + "id":388, + "country_code":"LV", + "code":"Dagdas novads", + "default_name":"Dagdas novads", + "country_id":125 + }, + { + "id":389, + "country_code":"LV", + "code":"LV-DA", + "default_name":"Daugavpils novads", + "country_id":125 + }, + { + "id":390, + "country_code":"LV", + "code":"LV-DO", + "default_name":"Dobeles novads", + "country_id":125 + }, + { + "id":391, + "country_code":"LV", + "code":"Dundagas novads", + "default_name":"Dundagas novads", + "country_id":125 + }, + { + "id":392, + "country_code":"LV", + "code":"Durbes novads", + "default_name":"Durbes novads", + "country_id":125 + }, + { + "id":393, + "country_code":"LV", + "code":"Engures novads", + "default_name":"Engures novads", + "country_id":125 + }, + { + "id":394, + "country_code":"LV", + "code":"Garkalnes novads", + "default_name":"Garkalnes novads", + "country_id":125 + }, + { + "id":395, + "country_code":"LV", + "code":"Grobi\u0146as novads", + "default_name":"Grobi\u0146as novads", + "country_id":125 + }, + { + "id":396, + "country_code":"LV", + "code":"LV-GU", + "default_name":"Gulbenes novads", + "country_id":125 + }, + { + "id":397, + "country_code":"LV", + "code":"Iecavas novads", + "default_name":"Iecavas novads", + "country_id":125 + }, + { + "id":398, + "country_code":"LV", + "code":"Ik\u0161\u0137iles novads", + "default_name":"Ik\u0161\u0137iles novads", + "country_id":125 + }, + { + "id":399, + "country_code":"LV", + "code":"Il\u016bkstes novads", + "default_name":"Il\u016bkstes novads", + "country_id":125 + }, + { + "id":400, + "country_code":"LV", + "code":"In\u010dukalna novads", + "default_name":"In\u010dukalna novads", + "country_id":125 + }, + { + "id":401, + "country_code":"LV", + "code":"Jaunjelgavas novads", + "default_name":"Jaunjelgavas novads", + "country_id":125 + }, + { + "id":402, + "country_code":"LV", + "code":"Jaunpiebalgas novads", + "default_name":"Jaunpiebalgas novads", + "country_id":125 + }, + { + "id":403, + "country_code":"LV", + "code":"Jaunpils novads", + "default_name":"Jaunpils novads", + "country_id":125 + }, + { + "id":404, + "country_code":"LV", + "code":"LV-JL", + "default_name":"Jelgavas novads", + "country_id":125 + }, + { + "id":405, + "country_code":"LV", + "code":"LV-JK", + "default_name":"J\u0113kabpils novads", + "country_id":125 + }, + { + "id":406, + "country_code":"LV", + "code":"Kandavas novads", + "default_name":"Kandavas novads", + "country_id":125 + }, + { + "id":407, + "country_code":"LV", + "code":"Kokneses novads", + "default_name":"Kokneses novads", + "country_id":125 + }, + { + "id":408, + "country_code":"LV", + "code":"Krimuldas novads", + "default_name":"Krimuldas novads", + "country_id":125 + }, + { + "id":409, + "country_code":"LV", + "code":"Krustpils novads", + "default_name":"Krustpils novads", + "country_id":125 + }, + { + "id":410, + "country_code":"LV", + "code":"LV-KR", + "default_name":"Kr\u0101slavas novads", + "country_id":125 + }, + { + "id":411, + "country_code":"LV", + "code":"LV-KU", + "default_name":"Kuld\u012bgas novads", + "country_id":125 + }, + { + "id":412, + "country_code":"LV", + "code":"K\u0101rsavas novads", + "default_name":"K\u0101rsavas novads", + "country_id":125 + }, + { + "id":413, + "country_code":"LV", + "code":"Lielv\u0101rdes novads", + "default_name":"Lielv\u0101rdes novads", + "country_id":125 + }, + { + "id":414, + "country_code":"LV", + "code":"LV-LM", + "default_name":"Limba\u017eu novads", + "country_id":125 + }, + { + "id":415, + "country_code":"LV", + "code":"Lub\u0101nas novads", + "default_name":"Lub\u0101nas novads", + "country_id":125 + }, + { + "id":416, + "country_code":"LV", + "code":"LV-LU", + "default_name":"Ludzas novads", + "country_id":125 + }, + { + "id":417, + "country_code":"LV", + "code":"L\u012bgatnes novads", + "default_name":"L\u012bgatnes novads", + "country_id":125 + }, + { + "id":418, + "country_code":"LV", + "code":"L\u012bv\u0101nu novads", + "default_name":"L\u012bv\u0101nu novads", + "country_id":125 + }, + { + "id":419, + "country_code":"LV", + "code":"LV-MA", + "default_name":"Madonas novads", + "country_id":125 + }, + { + "id":420, + "country_code":"LV", + "code":"Mazsalacas novads", + "default_name":"Mazsalacas novads", + "country_id":125 + }, + { + "id":421, + "country_code":"LV", + "code":"M\u0101lpils novads", + "default_name":"M\u0101lpils novads", + "country_id":125 + }, + { + "id":422, + "country_code":"LV", + "code":"M\u0101rupes novads", + "default_name":"M\u0101rupes novads", + "country_id":125 + }, + { + "id":423, + "country_code":"LV", + "code":"Nauk\u0161\u0113nu novads", + "default_name":"Nauk\u0161\u0113nu novads", + "country_id":125 + }, + { + "id":424, + "country_code":"LV", + "code":"Neretas novads", + "default_name":"Neretas novads", + "country_id":125 + }, + { + "id":425, + "country_code":"LV", + "code":"N\u012bcas novads", + "default_name":"N\u012bcas novads", + "country_id":125 + }, + { + "id":426, + "country_code":"LV", + "code":"LV-OG", + "default_name":"Ogres novads", + "country_id":125 + }, + { + "id":427, + "country_code":"LV", + "code":"Olaines novads", + "default_name":"Olaines novads", + "country_id":125 + }, + { + "id":428, + "country_code":"LV", + "code":"Ozolnieku novads", + "default_name":"Ozolnieku novads", + "country_id":125 + }, + { + "id":429, + "country_code":"LV", + "code":"LV-PR", + "default_name":"Prei\u013cu novads", + "country_id":125 + }, + { + "id":430, + "country_code":"LV", + "code":"Priekules novads", + "default_name":"Priekules novads", + "country_id":125 + }, + { + "id":431, + "country_code":"LV", + "code":"Prieku\u013cu novads", + "default_name":"Prieku\u013cu novads", + "country_id":125 + }, + { + "id":432, + "country_code":"LV", + "code":"P\u0101rgaujas novads", + "default_name":"P\u0101rgaujas novads", + "country_id":125 + }, + { + "id":433, + "country_code":"LV", + "code":"P\u0101vilostas novads", + "default_name":"P\u0101vilostas novads", + "country_id":125 + }, + { + "id":434, + "country_code":"LV", + "code":"P\u013cavi\u0146u novads", + "default_name":"P\u013cavi\u0146u novads", + "country_id":125 + }, + { + "id":435, + "country_code":"LV", + "code":"Raunas novads", + "default_name":"Raunas novads", + "country_id":125 + }, + { + "id":436, + "country_code":"LV", + "code":"Riebi\u0146u novads", + "default_name":"Riebi\u0146u novads", + "country_id":125 + }, + { + "id":437, + "country_code":"LV", + "code":"Rojas novads", + "default_name":"Rojas novads", + "country_id":125 + }, + { + "id":438, + "country_code":"LV", + "code":"Ropa\u017eu novads", + "default_name":"Ropa\u017eu novads", + "country_id":125 + }, + { + "id":439, + "country_code":"LV", + "code":"Rucavas novads", + "default_name":"Rucavas novads", + "country_id":125 + }, + { + "id":440, + "country_code":"LV", + "code":"Rug\u0101ju novads", + "default_name":"Rug\u0101ju novads", + "country_id":125 + }, + { + "id":441, + "country_code":"LV", + "code":"Rund\u0101les novads", + "default_name":"Rund\u0101les novads", + "country_id":125 + }, + { + "id":442, + "country_code":"LV", + "code":"LV-RE", + "default_name":"R\u0113zeknes novads", + "country_id":125 + }, + { + "id":443, + "country_code":"LV", + "code":"R\u016bjienas novads", + "default_name":"R\u016bjienas novads", + "country_id":125 + }, + { + "id":444, + "country_code":"LV", + "code":"Salacgr\u012bvas novads", + "default_name":"Salacgr\u012bvas novads", + "country_id":125 + }, + { + "id":445, + "country_code":"LV", + "code":"Salas novads", + "default_name":"Salas novads", + "country_id":125 + }, + { + "id":446, + "country_code":"LV", + "code":"Salaspils novads", + "default_name":"Salaspils novads", + "country_id":125 + }, + { + "id":447, + "country_code":"LV", + "code":"LV-SA", + "default_name":"Saldus novads", + "country_id":125 + }, + { + "id":448, + "country_code":"LV", + "code":"Saulkrastu novads", + "default_name":"Saulkrastu novads", + "country_id":125 + }, + { + "id":449, + "country_code":"LV", + "code":"Siguldas novads", + "default_name":"Siguldas novads", + "country_id":125 + }, + { + "id":450, + "country_code":"LV", + "code":"Skrundas novads", + "default_name":"Skrundas novads", + "country_id":125 + }, + { + "id":451, + "country_code":"LV", + "code":"Skr\u012bveru novads", + "default_name":"Skr\u012bveru novads", + "country_id":125 + }, + { + "id":452, + "country_code":"LV", + "code":"Smiltenes novads", + "default_name":"Smiltenes novads", + "country_id":125 + }, + { + "id":453, + "country_code":"LV", + "code":"Stopi\u0146u novads", + "default_name":"Stopi\u0146u novads", + "country_id":125 + }, + { + "id":454, + "country_code":"LV", + "code":"Stren\u010du novads", + "default_name":"Stren\u010du novads", + "country_id":125 + }, + { + "id":455, + "country_code":"LV", + "code":"S\u0113jas novads", + "default_name":"S\u0113jas novads", + "country_id":125 + }, + { + "id":456, + "country_code":"LV", + "code":"LV-TA", + "default_name":"Talsu novads", + "country_id":125 + }, + { + "id":457, + "country_code":"LV", + "code":"LV-TU", + "default_name":"Tukuma novads", + "country_id":125 + }, + { + "id":458, + "country_code":"LV", + "code":"T\u0113rvetes novads", + "default_name":"T\u0113rvetes novads", + "country_id":125 + }, + { + "id":459, + "country_code":"LV", + "code":"Vai\u0146odes novads", + "default_name":"Vai\u0146odes novads", + "country_id":125 + }, + { + "id":460, + "country_code":"LV", + "code":"LV-VK", + "default_name":"Valkas novads", + "country_id":125 + }, + { + "id":461, + "country_code":"LV", + "code":"LV-VM", + "default_name":"Valmieras novads", + "country_id":125 + }, + { + "id":462, + "country_code":"LV", + "code":"Varak\u013c\u0101nu novads", + "default_name":"Varak\u013c\u0101nu novads", + "country_id":125 + }, + { + "id":463, + "country_code":"LV", + "code":"Vecpiebalgas novads", + "default_name":"Vecpiebalgas novads", + "country_id":125 + }, + { + "id":464, + "country_code":"LV", + "code":"Vecumnieku novads", + "default_name":"Vecumnieku novads", + "country_id":125 + }, + { + "id":465, + "country_code":"LV", + "code":"LV-VE", + "default_name":"Ventspils novads", + "country_id":125 + }, + { + "id":466, + "country_code":"LV", + "code":"Vies\u012btes novads", + "default_name":"Vies\u012btes novads", + "country_id":125 + }, + { + "id":467, + "country_code":"LV", + "code":"Vi\u013cakas novads", + "default_name":"Vi\u013cakas novads", + "country_id":125 + }, + { + "id":468, + "country_code":"LV", + "code":"Vi\u013c\u0101nu novads", + "default_name":"Vi\u013c\u0101nu novads", + "country_id":125 + }, + { + "id":469, + "country_code":"LV", + "code":"V\u0101rkavas novads", + "default_name":"V\u0101rkavas novads", + "country_id":125 + }, + { + "id":470, + "country_code":"LV", + "code":"Zilupes novads", + "default_name":"Zilupes novads", + "country_id":125 + }, + { + "id":471, + "country_code":"LV", + "code":"\u0100da\u017eu novads", + "default_name":"\u0100da\u017eu novads", + "country_id":125 + }, + { + "id":472, + "country_code":"LV", + "code":"\u0112rg\u013cu novads", + "default_name":"\u0112rg\u013cu novads", + "country_id":125 + }, + { + "id":473, + "country_code":"LV", + "code":"\u0136eguma novads", + "default_name":"\u0136eguma novads", + "country_id":125 + }, + { + "id":474, + "country_code":"LV", + "code":"\u0136ekavas novads", + "default_name":"\u0136ekavas novads", + "country_id":125 + }, + { + "id":475, + "country_code":"LT", + "code":"LT-AL", + "default_name":"Alytaus Apskritis", + "country_id":131 + }, + { + "id":476, + "country_code":"LT", + "code":"LT-KU", + "default_name":"Kauno Apskritis", + "country_id":131 + }, + { + "id":477, + "country_code":"LT", + "code":"LT-KL", + "default_name":"Klaip\u0117dos Apskritis", + "country_id":131 + }, + { + "id":478, + "country_code":"LT", + "code":"LT-MR", + "default_name":"Marijampol\u0117s Apskritis", + "country_id":131 + }, + { + "id":479, + "country_code":"LT", + "code":"LT-PN", + "default_name":"Panev\u0117\u017eio Apskritis", + "country_id":131 + }, + { + "id":480, + "country_code":"LT", + "code":"LT-SA", + "default_name":"\u0160iauli\u0173 Apskritis", + "country_id":131 + }, + { + "id":481, + "country_code":"LT", + "code":"LT-TA", + "default_name":"Taurag\u0117s Apskritis", + "country_id":131 + }, + { + "id":482, + "country_code":"LT", + "code":"LT-TE", + "default_name":"Tel\u0161i\u0173 Apskritis", + "country_id":131 + }, + { + "id":483, + "country_code":"LT", + "code":"LT-UT", + "default_name":"Utenos Apskritis", + "country_id":131 + }, + { + "id":484, + "country_code":"LT", + "code":"LT-VL", + "default_name":"Vilniaus Apskritis", + "country_id":131 + }, + { + "id":485, + "country_code":"BR", + "code":"AC", + "default_name":"Acre", + "country_id":31 + }, + { + "id":486, + "country_code":"BR", + "code":"AL", + "default_name":"Alagoas", + "country_id":31 + }, + { + "id":487, + "country_code":"BR", + "code":"AP", + "default_name":"Amap\u00e1", + "country_id":31 + }, + { + "id":488, + "country_code":"BR", + "code":"AM", + "default_name":"Amazonas", + "country_id":31 + }, + { + "id":489, + "country_code":"BR", + "code":"BA", + "default_name":"Bahia", + "country_id":31 + }, + { + "id":490, + "country_code":"BR", + "code":"CE", + "default_name":"Cear\u00e1", + "country_id":31 + }, + { + "id":491, + "country_code":"BR", + "code":"ES", + "default_name":"Esp\u00edrito Santo", + "country_id":31 + }, + { + "id":492, + "country_code":"BR", + "code":"GO", + "default_name":"Goi\u00e1s", + "country_id":31 + }, + { + "id":493, + "country_code":"BR", + "code":"MA", + "default_name":"Maranh\u00e3o", + "country_id":31 + }, + { + "id":494, + "country_code":"BR", + "code":"MT", + "default_name":"Mato Grosso", + "country_id":31 + }, + { + "id":495, + "country_code":"BR", + "code":"MS", + "default_name":"Mato Grosso do Sul", + "country_id":31 + }, + { + "id":496, + "country_code":"BR", + "code":"MG", + "default_name":"Minas Gerais", + "country_id":31 + }, + { + "id":497, + "country_code":"BR", + "code":"PA", + "default_name":"Par\u00e1", + "country_id":31 + }, + { + "id":498, + "country_code":"BR", + "code":"PB", + "default_name":"Para\u00edba", + "country_id":31 + }, + { + "id":499, + "country_code":"BR", + "code":"PR", + "default_name":"Paran\u00e1", + "country_id":31 + }, + { + "id":500, + "country_code":"BR", + "code":"PE", + "default_name":"Pernambuco", + "country_id":31 + }, + { + "id":501, + "country_code":"BR", + "code":"PI", + "default_name":"Piau\u00ed", + "country_id":31 + }, + { + "id":502, + "country_code":"BR", + "code":"RJ", + "default_name":"Rio de Janeiro", + "country_id":31 + }, + { + "id":503, + "country_code":"BR", + "code":"RN", + "default_name":"Rio Grande do Norte", + "country_id":31 + }, + { + "id":504, + "country_code":"BR", + "code":"RS", + "default_name":"Rio Grande do Sul", + "country_id":31 + }, + { + "id":505, + "country_code":"BR", + "code":"RO", + "default_name":"Rond\u00f4nia", + "country_id":31 + }, + { + "id":506, + "country_code":"BR", + "code":"RR", + "default_name":"Roraima", + "country_id":31 + }, + { + "id":507, + "country_code":"BR", + "code":"SC", + "default_name":"Santa Catarina", + "country_id":31 + }, + { + "id":508, + "country_code":"BR", + "code":"SP", + "default_name":"S\u00e3o Paulo", + "country_id":31 + }, + { + "id":509, + "country_code":"BR", + "code":"SE", + "default_name":"Sergipe", + "country_id":31 + }, + { + "id":510, + "country_code":"BR", + "code":"TO", + "default_name":"Tocantins", + "country_id":31 + }, + { + "id":511, + "country_code":"BR", + "code":"DF", + "default_name":"Distrito Federal", + "country_id":31 + }, + { + "id":512, + "country_code":"HR", + "code":"HR-01", + "default_name":"Zagreba\u010dka \u017eupanija", + "country_id":59 + }, + { + "id":513, + "country_code":"HR", + "code":"HR-02", + "default_name":"Krapinsko-zagorska \u017eupanija", + "country_id":59 + }, + { + "id":514, + "country_code":"HR", + "code":"HR-03", + "default_name":"Sisa\u010dko-moslava\u010dka \u017eupanija", + "country_id":59 + }, + { + "id":515, + "country_code":"HR", + "code":"HR-04", + "default_name":"Karlova\u010dka \u017eupanija", + "country_id":59 + }, + { + "id":516, + "country_code":"HR", + "code":"HR-05", + "default_name":"Vara\u017edinska \u017eupanija", + "country_id":59 + }, + { + "id":517, + "country_code":"HR", + "code":"HR-06", + "default_name":"Koprivni\u010dko-kri\u017eeva\u010dka \u017eupanija", + "country_id":59 + }, + { + "id":518, + "country_code":"HR", + "code":"HR-07", + "default_name":"Bjelovarsko-bilogorska \u017eupanija", + "country_id":59 + }, + { + "id":519, + "country_code":"HR", + "code":"HR-08", + "default_name":"Primorsko-goranska \u017eupanija", + "country_id":59 + }, + { + "id":520, + "country_code":"HR", + "code":"HR-09", + "default_name":"Li\u010dko-senjska \u017eupanija", + "country_id":59 + }, + { + "id":521, + "country_code":"HR", + "code":"HR-10", + "default_name":"Viroviti\u010dko-podravska \u017eupanija", + "country_id":59 + }, + { + "id":522, + "country_code":"HR", + "code":"HR-11", + "default_name":"Po\u017ee\u0161ko-slavonska \u017eupanija", + "country_id":59 + }, + { + "id":523, + "country_code":"HR", + "code":"HR-12", + "default_name":"Brodsko-posavska \u017eupanija", + "country_id":59 + }, + { + "id":524, + "country_code":"HR", + "code":"HR-13", + "default_name":"Zadarska \u017eupanija", + "country_id":59 + }, + { + "id":525, + "country_code":"HR", + "code":"HR-14", + "default_name":"Osje\u010dko-baranjska \u017eupanija", + "country_id":59 + }, + { + "id":526, + "country_code":"HR", + "code":"HR-15", + "default_name":"\u0160ibensko-kninska \u017eupanija", + "country_id":59 + }, + { + "id":527, + "country_code":"HR", + "code":"HR-16", + "default_name":"Vukovarsko-srijemska \u017eupanija", + "country_id":59 + }, + { + "id":528, + "country_code":"HR", + "code":"HR-17", + "default_name":"Splitsko-dalmatinska \u017eupanija", + "country_id":59 + }, + { + "id":529, + "country_code":"HR", + "code":"HR-18", + "default_name":"Istarska \u017eupanija", + "country_id":59 + }, + { + "id":530, + "country_code":"HR", + "code":"HR-19", + "default_name":"Dubrova\u010dko-neretvanska \u017eupanija", + "country_id":59 + }, + { + "id":531, + "country_code":"HR", + "code":"HR-20", + "default_name":"Me\u0111imurska \u017eupanija", + "country_id":59 + }, + { + "id":532, + "country_code":"HR", + "code":"HR-21", + "default_name":"Grad Zagreb", + "country_id":59 + }, + { + "id":533, + "country_code":"IN", + "code":"AN", + "default_name":"Andaman and Nicobar Islands", + "country_id":106 + }, + { + "id":534, + "country_code":"IN", + "code":"AP", + "default_name":"Andhra Pradesh", + "country_id":106 + }, + { + "id":535, + "country_code":"IN", + "code":"AR", + "default_name":"Arunachal Pradesh", + "country_id":106 + }, + { + "id":536, + "country_code":"IN", + "code":"AS", + "default_name":"Assam", + "country_id":106 + }, + { + "id":537, + "country_code":"IN", + "code":"BR", + "default_name":"Bihar", + "country_id":106 + }, + { + "id":538, + "country_code":"IN", + "code":"CH", + "default_name":"Chandigarh", + "country_id":106 + }, + { + "id":539, + "country_code":"IN", + "code":"CT", + "default_name":"Chhattisgarh", + "country_id":106 + }, + { + "id":540, + "country_code":"IN", + "code":"DN", + "default_name":"Dadra and Nagar Haveli", + "country_id":106 + }, + { + "id":541, + "country_code":"IN", + "code":"DD", + "default_name":"Daman and Diu", + "country_id":106 + }, + { + "id":542, + "country_code":"IN", + "code":"DL", + "default_name":"Delhi", + "country_id":106 + }, + { + "id":543, + "country_code":"IN", + "code":"GA", + "default_name":"Goa", + "country_id":106 + }, + { + "id":544, + "country_code":"IN", + "code":"GJ", + "default_name":"Gujarat", + "country_id":106 + }, + { + "id":545, + "country_code":"IN", + "code":"HR", + "default_name":"Haryana", + "country_id":106 + }, + { + "id":546, + "country_code":"IN", + "code":"HP", + "default_name":"Himachal Pradesh", + "country_id":106 + }, + { + "id":547, + "country_code":"IN", + "code":"JK", + "default_name":"Jammu and Kashmir", + "country_id":106 + }, + { + "id":548, + "country_code":"IN", + "code":"JH", + "default_name":"Jharkhand", + "country_id":106 + }, + { + "id":549, + "country_code":"IN", + "code":"KA", + "default_name":"Karnataka", + "country_id":106 + }, + { + "id":550, + "country_code":"IN", + "code":"KL", + "default_name":"Kerala", + "country_id":106 + }, + { + "id":551, + "country_code":"IN", + "code":"LD", + "default_name":"Lakshadweep", + "country_id":106 + }, + { + "id":552, + "country_code":"IN", + "code":"MP", + "default_name":"Madhya Pradesh", + "country_id":106 + }, + { + "id":553, + "country_code":"IN", + "code":"MH", + "default_name":"Maharashtra", + "country_id":106 + }, + { + "id":554, + "country_code":"IN", + "code":"MN", + "default_name":"Manipur", + "country_id":106 + }, + { + "id":555, + "country_code":"IN", + "code":"ML", + "default_name":"Meghalaya", + "country_id":106 + }, + { + "id":556, + "country_code":"IN", + "code":"MZ", + "default_name":"Mizoram", + "country_id":106 + }, + { + "id":557, + "country_code":"IN", + "code":"NL", + "default_name":"Nagaland", + "country_id":106 + }, + { + "id":558, + "country_code":"IN", + "code":"OR", + "default_name":"Odisha", + "country_id":106 + }, + { + "id":559, + "country_code":"IN", + "code":"PY", + "default_name":"Puducherry", + "country_id":106 + }, + { + "id":560, + "country_code":"IN", + "code":"PB", + "default_name":"Punjab", + "country_id":106 + }, + { + "id":561, + "country_code":"IN", + "code":"RJ", + "default_name":"Rajasthan", + "country_id":106 + }, + { + "id":562, + "country_code":"IN", + "code":"SK", + "default_name":"Sikkim", + "country_id":106 + }, + { + "id":563, + "country_code":"IN", + "code":"TN", + "default_name":"Tamil Nadu", + "country_id":106 + }, + { + "id":564, + "country_code":"IN", + "code":"TG", + "default_name":"Telangana", + "country_id":106 + }, + { + "id":565, + "country_code":"IN", + "code":"TR", + "default_name":"Tripura", + "country_id":106 + }, + { + "id":566, + "country_code":"IN", + "code":"UP", + "default_name":"Uttar Pradesh", + "country_id":106 + }, + { + "id":567, + "country_code":"IN", + "code":"UT", + "default_name":"Uttarakhand", + "country_id":106 + }, + { + "id":568, + "country_code":"IN", + "code":"WB", + "default_name":"West Bengal", + "country_id":106 + } +] \ No newline at end of file diff --git a/packages/Webkul/Core/src/Database/Factories/LocaleFactory.php b/packages/Webkul/Core/src/Database/Factories/LocaleFactory.php new file mode 100644 index 000000000..0ab390c2f --- /dev/null +++ b/packages/Webkul/Core/src/Database/Factories/LocaleFactory.php @@ -0,0 +1,19 @@ +define(Locale::class, function (Faker $faker, array $attributes) { + + return [ + 'code' => $faker->languageCode, + 'name' => $faker->country, + 'direction' => 'ltr', + ]; +}); + +$factory->state(Category::class, 'rtl', [ + 'direction' => 'rtl', +]); diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_07_10_055143_create_locales_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_07_10_055143_create_locales_table.php new file mode 100755 index 000000000..4b7a3a036 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_07_10_055143_create_locales_table.php @@ -0,0 +1,33 @@ +increments('id'); + $table->string('code')->unique(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('locales'); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054426_create_countries_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054426_create_countries_table.php new file mode 100755 index 000000000..9ce87a9b5 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054426_create_countries_table.php @@ -0,0 +1,32 @@ +increments('id'); + $table->string('code'); + $table->string('name'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('countries'); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054502_create_currencies_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054502_create_currencies_table.php new file mode 100755 index 000000000..5d8dc5af5 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054502_create_currencies_table.php @@ -0,0 +1,33 @@ +increments('id'); + $table->string('code'); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('currencies'); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054542_create_currency_exchange_rates_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054542_create_currency_exchange_rates_table.php new file mode 100755 index 000000000..e68558cd6 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_054542_create_currency_exchange_rates_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->decimal('rate', 10, 5); + $table->integer('target_currency')->unique()->unsigned(); + $table->foreign('target_currency')->references('id')->on('currencies')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('currency_exchange_rates'); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_07_20_064849_create_channels_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_064849_create_channels_table.php new file mode 100755 index 000000000..0dbbf3f61 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_07_20_064849_create_channels_table.php @@ -0,0 +1,65 @@ +increments('id'); + $table->string('code'); + $table->string('name'); + $table->text('description')->nullable(); + $table->string('timezone')->nullable(); + $table->string('theme')->nullable(); + $table->string('hostname')->nullable(); + $table->string('logo')->nullable(); + $table->string('favicon')->nullable(); + $table->text('home_page_content')->nullable(); + $table->text('footer_content')->nullable(); + $table->integer('default_locale_id')->unsigned(); + $table->integer('base_currency_id')->unsigned(); + $table->foreign('default_locale_id')->references('id')->on('locales')->onDelete('cascade'); + $table->foreign('base_currency_id')->references('id')->on('currencies')->onDelete('cascade'); + $table->timestamps(); + }); + + Schema::create('channel_locales', function (Blueprint $table) { + $table->integer('channel_id')->unsigned(); + $table->integer('locale_id')->unsigned(); + $table->primary(['channel_id', 'locale_id']); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + $table->foreign('locale_id')->references('id')->on('locales')->onDelete('cascade'); + }); + + Schema::create('channel_currencies', function (Blueprint $table) { + $table->integer('channel_id')->unsigned(); + $table->integer('currency_id')->unsigned(); + $table->primary(['channel_id', 'currency_id']); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + $table->foreign('currency_id')->references('id')->on('currencies')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('channel_currencies'); + + Schema::dropIfExists('channel_locales'); + + Schema::dropIfExists('channels'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_08_03_114203_create_sliders_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_08_03_114203_create_sliders_table.php new file mode 100755 index 000000000..2028f60f8 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_08_03_114203_create_sliders_table.php @@ -0,0 +1,39 @@ +increments('id'); + $table->string('title'); + $table->string('path'); + $table->string('content'); + $table->integer('channel_id')->unsigned(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::disableForeignKeyConstraints(); + Schema::dropIfExists('sliders'); + Schema::enableForeignKeyConstraints(); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_09_20_060658_create_core_config_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_09_20_060658_create_core_config_table.php new file mode 100755 index 000000000..3f287656d --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_09_20_060658_create_core_config_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->string('code'); + $table->string('value'); + $table->integer('channel_id')->unsigned(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('core_config'); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_10_12_101803_create_country_translations_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_10_12_101803_create_country_translations_table.php new file mode 100755 index 000000000..a38c5bbce --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_10_12_101803_create_country_translations_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('locale'); + $table->text('name')->nullable(); + + $table->integer('country_id')->unsigned(); + $table->foreign('country_id')->references('id')->on('countries')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('country_translations'); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_10_12_101913_create_country_states_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_10_12_101913_create_country_states_table.php new file mode 100755 index 000000000..c7a159a4e --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_10_12_101913_create_country_states_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->string('country_code')->nullable(); + $table->string('code')->nullable(); + $table->string('default_name')->nullable(); + + $table->integer('country_id')->nullable()->unsigned(); + $table->foreign('country_id')->references('id')->on('countries')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('country_states'); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_10_12_101923_create_country_state_translations_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_10_12_101923_create_country_state_translations_table.php new file mode 100755 index 000000000..19b18f361 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_10_12_101923_create_country_state_translations_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('locale'); + $table->text('name')->nullable(); + + $table->integer('country_state_id')->unsigned(); + $table->foreign('country_state_id')->references('id')->on('country_states')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('country_state_translations'); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_11_16_173504_create_subscribers_list_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_11_16_173504_create_subscribers_list_table.php new file mode 100755 index 000000000..b318f0a21 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_11_16_173504_create_subscribers_list_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->string('email'); + $table->boolean('is_subscribed')->default(0); + $table->string('token')->nullable(); + $table->integer('channel_id')->unsigned(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('subscribers_list'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_11_27_174449_change_content_column_in_sliders_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_11_27_174449_change_content_column_in_sliders_table.php new file mode 100755 index 000000000..0415348e4 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_11_27_174449_change_content_column_in_sliders_table.php @@ -0,0 +1,30 @@ +text('content')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132625_drop_foreign_key_core_config_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132625_drop_foreign_key_core_config_table.php new file mode 100755 index 000000000..c5728bd20 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132625_drop_foreign_key_core_config_table.php @@ -0,0 +1,31 @@ +dropForeign('core_config_channel_id_foreign'); + $table->renameColumn('channel_id', 'channel_code'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132629_alter_core_config_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132629_alter_core_config_table.php new file mode 100755 index 000000000..66bd60e15 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_12_05_132629_alter_core_config_table.php @@ -0,0 +1,32 @@ +string('channel_code')->nullable()->change(); + $table->string('locale_code')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_12_21_101307_alter_channels_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_12_21_101307_alter_channels_table.php new file mode 100755 index 000000000..cd0a009da --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_12_21_101307_alter_channels_table.php @@ -0,0 +1,33 @@ +dropForeign('channels_default_locale_id_foreign'); + $table->dropForeign('channels_base_currency_id_foreign'); + $table->foreign('default_locale_id')->references('id')->on('locales'); + $table->foreign('base_currency_id')->references('id')->on('currencies'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_12_24_123812_create_channel_inventory_sources_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_12_24_123812_create_channel_inventory_sources_table.php new file mode 100644 index 000000000..8f821264b --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_12_24_123812_create_channel_inventory_sources_table.php @@ -0,0 +1,35 @@ +integer('channel_id')->unsigned(); + $table->integer('inventory_source_id')->unsigned(); + + $table->unique(['channel_id', 'inventory_source_id']); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + $table->foreign('inventory_source_id')->references('id')->on('inventory_sources')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('channel_inventory_sources'); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_12_31_161114_alter_channels_category_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_12_31_161114_alter_channels_category_table.php new file mode 100644 index 000000000..e5fa8eea0 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_12_31_161114_alter_channels_category_table.php @@ -0,0 +1,31 @@ +integer('root_category_id')->nullable()->unsigned(); + $table->foreign('root_category_id')->references('id')->on('categories')->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2019_01_31_164117_update_value_column_type_to_text_in_core_config_table.php b/packages/Webkul/Core/src/Database/Migrations/2019_01_31_164117_update_value_column_type_to_text_in_core_config_table.php new file mode 100644 index 000000000..e71957298 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2019_01_31_164117_update_value_column_type_to_text_in_core_config_table.php @@ -0,0 +1,30 @@ +text('value')->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2019_07_05_114157_add_symbol_column_in_currencies_table.php b/packages/Webkul/Core/src/Database/Migrations/2019_07_05_114157_add_symbol_column_in_currencies_table.php new file mode 100644 index 000000000..561014543 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2019_07_05_114157_add_symbol_column_in_currencies_table.php @@ -0,0 +1,32 @@ +string('symbol')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('currencies', function (Blueprint $table) { + $table->dropColumn('symbol'); + }); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2019_07_23_033128_alter_locales_table.php b/packages/Webkul/Core/src/Database/Migrations/2019_07_23_033128_alter_locales_table.php new file mode 100644 index 000000000..f79a0a753 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2019_07_23_033128_alter_locales_table.php @@ -0,0 +1,32 @@ +enum('direction', ['ltr', 'rtl'])->default('ltr'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('locales', function (Blueprint $table) { + $table->dropColumn('direction'); + }); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2019_08_21_123707_add_seo_column_in_channels_table.php b/packages/Webkul/Core/src/Database/Migrations/2019_08_21_123707_add_seo_column_in_channels_table.php new file mode 100644 index 000000000..87831b94e --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2019_08_21_123707_add_seo_column_in_channels_table.php @@ -0,0 +1,32 @@ +json('home_seo')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('channels', function (Blueprint $table) { + $table->dropColumn('home_seo'); + }); + } +} diff --git a/packages/Webkul/Core/src/Database/Migrations/2019_10_03_105451_change_rate_column_in_currency_exchange_rates_table.php b/packages/Webkul/Core/src/Database/Migrations/2019_10_03_105451_change_rate_column_in_currency_exchange_rates_table.php new file mode 100644 index 000000000..861e630b6 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2019_10_03_105451_change_rate_column_in_currency_exchange_rates_table.php @@ -0,0 +1,32 @@ +decimal('rate', 24, 12)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('currency_exchange_rates', function (Blueprint $table) { + $table->decimal('rate', 10, 5)->change(); + }); + } +} diff --git a/packages/Webkul/Core/src/Database/Seeders/.gitkeep b/packages/Webkul/Core/src/Database/Seeders/.gitkeep new file mode 100755 index 000000000..e69de29bb diff --git a/packages/Webkul/Core/src/Database/Seeders/ChannelTableSeeder.php b/packages/Webkul/Core/src/Database/Seeders/ChannelTableSeeder.php new file mode 100755 index 000000000..4b90735b1 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Seeders/ChannelTableSeeder.php @@ -0,0 +1,41 @@ +delete(); + + DB::table('channels')->insert([ + 'id' => 1, + 'code' => 'default', + 'name' => 'Default', + 'root_category_id' => 1, + 'home_page_content' => '

@include("shop::home.slider") @include("shop::home.featured-products") @include("shop::home.new-products")

', + 'footer_content' => '', + 'name' => 'Default', + 'default_locale_id' => 1, + 'base_currency_id' => 1 + ]); + + DB::table('channel_currencies')->insert([ + 'channel_id' => 1, + 'currency_id' => 1, + ]); + + DB::table('channel_locales')->insert([ + 'channel_id' => 1, + 'locale_id' => 1, + ]); + + DB::table('channel_inventory_sources')->insert([ + 'channel_id' => 1, + 'inventory_source_id' => 1, + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Database/Seeders/CountriesTableSeeder.php b/packages/Webkul/Core/src/Database/Seeders/CountriesTableSeeder.php new file mode 100755 index 000000000..7822b5a75 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Seeders/CountriesTableSeeder.php @@ -0,0 +1,18 @@ +delete(); + + $countries = json_decode(file_get_contents(__DIR__ . '/../../Data/countries.json'), true); + + DB::table('countries')->insert($countries); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Database/Seeders/CurrencyTableSeeder.php b/packages/Webkul/Core/src/Database/Seeders/CurrencyTableSeeder.php new file mode 100755 index 000000000..2672fc6b2 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Seeders/CurrencyTableSeeder.php @@ -0,0 +1,22 @@ +delete(); + + DB::table('currencies')->delete(); + + DB::table('currencies')->insert([ + 'id' => 1, + 'code' => 'USD', + 'name' => 'US Dollar' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Database/Seeders/DatabaseSeeder.php b/packages/Webkul/Core/src/Database/Seeders/DatabaseSeeder.php new file mode 100755 index 000000000..919a033ef --- /dev/null +++ b/packages/Webkul/Core/src/Database/Seeders/DatabaseSeeder.php @@ -0,0 +1,22 @@ +call(LocalesTableSeeder::class); + $this->call(CurrencyTableSeeder::class); + $this->call(CountriesTableSeeder::class); + $this->call(StatesTableSeeder::class); + $this->call(ChannelTableSeeder::class); + } +} diff --git a/packages/Webkul/Core/src/Database/Seeders/LocalesTableSeeder.php b/packages/Webkul/Core/src/Database/Seeders/LocalesTableSeeder.php new file mode 100755 index 000000000..1d2bb6189 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Seeders/LocalesTableSeeder.php @@ -0,0 +1,26 @@ +delete(); + + DB::table('locales')->delete(); + + DB::table('locales')->insert([ + 'id' => 1, + 'code' => 'en', + 'name' => 'English', + ], [ + 'id' => 2, + 'code' => 'fr', + 'name' => 'French', + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Database/Seeders/StatesTableSeeder.php b/packages/Webkul/Core/src/Database/Seeders/StatesTableSeeder.php new file mode 100755 index 000000000..a83812e60 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Seeders/StatesTableSeeder.php @@ -0,0 +1,18 @@ +delete(); + + $states = json_decode(file_get_contents(__DIR__ . '/../../Data/states.json'), true); + + DB::table('country_states')->insert($states); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Eloquent/Repository.php b/packages/Webkul/Core/src/Eloquent/Repository.php new file mode 100755 index 000000000..f274b2d62 --- /dev/null +++ b/packages/Webkul/Core/src/Eloquent/Repository.php @@ -0,0 +1,144 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +abstract class Repository extends BaseRepository { + + /** + * Find data by field and value + * + * @param $field + * @param $value + * @param array $columns + * + * @return mixed + */ + public function findOneByField($field, $value = null, $columns = ['*']) + { + $model = parent::findByField($field, $value, $columns = ['*']); + + return $model->first(); + } + + /** + * Find data by field and value + * + * @param $field + * @param $value + * @param array $columns + * + * @return mixed + */ + public function findOneWhere(array $where, $columns = ['*']) + { + $model = parent::findWhere($where, $columns); + + return $model->first(); + } + + /** + * Find data by id + * + * @param $id + * @param array $columns + * + * @return mixed + */ + public function find($id, $columns = ['*']) + { + $this->applyCriteria(); + $this->applyScope(); + $model = $this->model->find($id, $columns); + $this->resetModel(); + + return $this->parserResult($model); + } + + /** + * Find data by id + * + * @param $id + * @param array $columns + * + * @return mixed + */ + public function findOrFail($id, $columns = ['*']) + { + $this->applyCriteria(); + $this->applyScope(); + $model = $this->model->findOrFail($id, $columns); + $this->resetModel(); + + return $this->parserResult($model); + } + + /** + * Count results of repository + * + * @param array $where + * @param string $columns + * + * @return int + */ + public function count(array $where = [], $columns = '*') + { + $this->applyCriteria(); + $this->applyScope(); + + if ($where) { + $this->applyConditions($where); + } + + $result = $this->model->count($columns); + $this->resetModel(); + $this->resetScope(); + + return $result; + } + + /** + * @return mixed + */ + public function sum($columns) + { + $this->applyCriteria(); + $this->applyScope(); + + $sum = $this->model->sum($columns); + $this->resetModel(); + + return $sum; + } + + /** + * @return mixed + */ + public function avg($columns) + { + $this->applyCriteria(); + $this->applyScope(); + + $avg = $this->model->avg($columns); + $this->resetModel(); + + return $avg; + } + + /** + * @return mixed + */ + public function getModel() + { + return $this->model; + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Eloquent/TranslatableModel.php b/packages/Webkul/Core/src/Eloquent/TranslatableModel.php new file mode 100755 index 000000000..ce7888985 --- /dev/null +++ b/packages/Webkul/Core/src/Eloquent/TranslatableModel.php @@ -0,0 +1,61 @@ + 1) { + if (Locale::where('code', '=', end($chunks))->first()) + return true; + } else if (Locale::where('code', '=', $key)->first()) { + return true; + } + + return false; + } + + /** + * @return string + */ + protected function locale() + { + if ($this->isChannelBased()) { + return core()->getDefaultChannelLocaleCode(); + } else { + if ($this->defaultLocale) { + return $this->defaultLocale; + } + + return config('translatable.locale') + ?: app()->make('translator')->getLocale(); + } + } + + /** + * @return boolean + */ + protected function isChannelBased() + { + return false; + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Events/ComposerEvents.php b/packages/Webkul/Core/src/Events/ComposerEvents.php new file mode 100644 index 000000000..0ee700715 --- /dev/null +++ b/packages/Webkul/Core/src/Events/ComposerEvents.php @@ -0,0 +1,15 @@ +writeln(file_get_contents(__DIR__ . '/../Templates/on-boarding.php')); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Facades/Core.php b/packages/Webkul/Core/src/Facades/Core.php new file mode 100755 index 000000000..b1ae6af34 --- /dev/null +++ b/packages/Webkul/Core/src/Facades/Core.php @@ -0,0 +1,18 @@ +apiKey = config('services.exchange-api')['fixer']['key']; + + $this->apiEndPoint = 'http://data.fixer.io/api/latest?access_key='.$this->apiKey; + } + + public function fetchRates() + { + $rates = array(); + + $this->exchangeRate = app('Webkul\Core\Repositories\ExchangeRateRepository'); + + // dummy api call + $client = new \GuzzleHttp\Client(); + + if (config('services.exchange-api')['fixer']['paid_account']) { + $result = $client->request('GET', 'http://data.fixer.io/api/'.date('Y-m-d').'?access_key='.$this->apiKey.'&base='.core()->getBaseCurrency()->code.'&symbols=INR'); + + } else { + $result = $client->request('GET', 'http://data.fixer.io/api/'.date('Y-m-d').'?access_key='.$this->apiKey.'&symbols=USD'); + } + + $result = json_decode($result->getBody()->getContents()); + + return $result; + } + + public function updateRates() + { + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Helpers/Locales.php b/packages/Webkul/Core/src/Helpers/Locales.php new file mode 100644 index 000000000..7aede9c52 --- /dev/null +++ b/packages/Webkul/Core/src/Helpers/Locales.php @@ -0,0 +1,17 @@ +locales = []; + + foreach (core()->getAllLocales() as $locale) { + $this->locales[$locale->code] = $locale->code; + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Http/Controllers/ChannelController.php b/packages/Webkul/Core/src/Http/Controllers/ChannelController.php new file mode 100755 index 000000000..2c313a072 --- /dev/null +++ b/packages/Webkul/Core/src/Http/Controllers/ChannelController.php @@ -0,0 +1,198 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ChannelController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * ChannelRepository object + * + * @var Object + */ + protected $channelRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Core\Repositories\ChannelRepository $channelRepository + * @return void + */ + public function __construct(ChannelRepository $channelRepository) + { + $this->channelRepository = $channelRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'code' => ['required', 'unique:channels,code', new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required', + 'locales' => 'required|array|min:1', + 'default_locale_id' => 'required', + 'currencies' => 'required|array|min:1', + 'base_currency_id' => 'required', + 'root_category_id' => 'required', + 'logo.*' => 'mimes:jpeg,jpg,bmp,png', + 'favicon.*' => 'mimes:jpeg,jpg,bmp,png', + 'seo_title' => 'required|string', + 'seo_description' => 'required|string', + 'seo_keywords' => 'required|string' + ]); + + $data = request()->all(); + + $data['seo']['meta_title'] = $data['seo_title']; + $data['seo']['meta_description'] = $data['seo_description']; + $data['seo']['meta_keywords'] = $data['seo_keywords']; + + unset($data['seo_title']); + unset($data['seo_description']); + unset($data['seo_keywords']); + + $data['home_seo'] = json_encode($data['seo']); + + unset($data['seo']); + + Event::dispatch('core.channel.create.before'); + + $channel = $this->channelRepository->create($data); + + Event::dispatch('core.channel.create.after', $channel); + + session()->flash('success', trans('admin::app.settings.channels.create-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $channel = $this->channelRepository->with(['locales', 'currencies'])->findOrFail($id); + + return view($this->_config['view'], compact('channel')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $this->validate(request(), [ + 'code' => ['required', 'unique:channels,code,' . $id, new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required', + 'locales' => 'required|array|min:1', + 'inventory_sources' => 'required|array|min:1', + 'default_locale_id' => 'required', + 'currencies' => 'required|array|min:1', + 'base_currency_id' => 'required', + 'root_category_id' => 'required', + 'logo.*' => 'mimes:jpeg,jpg,bmp,png', + 'favicon.*' => 'mimes:jpeg,jpg,bmp,png' + ]); + + $data = request()->all(); + + $data['seo']['meta_title'] = $data['seo_title']; + $data['seo']['meta_description'] = $data['seo_description']; + $data['seo']['meta_keywords'] = $data['seo_keywords']; + + unset($data['seo_title']); + unset($data['seo_description']); + unset($data['seo_keywords']); + + $data['home_seo'] = json_encode($data['seo']); + + Event::dispatch('core.channel.update.before', $id); + + $channel = $this->channelRepository->update($data, $id); + + Event::dispatch('core.channel.update.after', $channel); + + session()->flash('success', trans('admin::app.settings.channels.update-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $channel = $this->channelRepository->findOrFail($id); + + if ($channel->code == config('app.channel')) { + session()->flash('error', trans('admin::app.settings.channels.last-delete-error')); + } else { + try { + Event::dispatch('core.channel.delete.before', $id); + + $this->channelRepository->delete($id); + + Event::dispatch('core.channel.delete.after', $id); + + session()->flash('success', trans('admin::app.settings.channels.delete-success')); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + // session()->flash('warning', trans($e->getMessage())); + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Channel'])); + } + } + + return response()->json(['message' => false], 400); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Http/Controllers/Controller.php b/packages/Webkul/Core/src/Http/Controllers/Controller.php new file mode 100755 index 000000000..08a7833f3 --- /dev/null +++ b/packages/Webkul/Core/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CountryStateController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * CountryRepository object + * + * @var array + */ + protected $countryRepository; + + /** + * CountryStateRepository object + * + * @var array + */ + protected $countryStateRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Core\Repositories\CountryRepository $countryRepository + * @param \Webkul\Core\Repositories\CountryStateRepository $countryStateRepository + * @return void + */ + public function __construct( + CountryRepository $countryRepository, + CountryStateRepository $countryStateRepository + ) + { + $this->countryRepository = $countryRepository; + + $this->countryStateRepository = $countryStateRepository; + + $this->_config = request('_config'); + } + + /** + * Function to retrieve states with respect to countries with codes and names for both of the countries and states. + * + * @return \Illuminate\View\View + */ + public function getCountries() + { + $countries = $this->countryRepository->all(); + + $states = $this->countryStateRepository->all(); + + $nestedArray = []; + + foreach ($countries as $keyCountry => $country) { + foreach ($states as $keyState => $state) { + if ($country->code == $state->country_code) { + $nestedArray[$country->name][$state->code] = $state->default_name; + } + } + } + + return view($this->_config['view'])->with('statesCountries', $nestedArray); + } + + public function getStates($country) + { + $countries = $this->countryRepository->all(); + + $states = $this->countryStateRepository->all(); + + $nestedArray = []; + + foreach ($countries as $keyCountry => $country) { + foreach ($states as $keyState => $state) { + if ($country->code == $state->country_code) { + $nestedArray[$country->name][$state->code] = $state->default_name; + } + } + } + + return view($this->_config['view'])->with('statesCountries', $nestedArray); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php b/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php new file mode 100755 index 000000000..9f553068f --- /dev/null +++ b/packages/Webkul/Core/src/Http/Controllers/CurrencyController.php @@ -0,0 +1,191 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CurrencyController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * CurrencyRepository object + * + * @var array + */ + protected $currencyRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Core\Repositories\CurrencyRepository $currencyRepository + * @return void + */ + public function __construct(CurrencyRepository $currencyRepository) + { + $this->currencyRepository = $currencyRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'code' => 'required|min:3|max:3|unique:currencies,code', + 'name' => 'required' + ]); + + Event::dispatch('core.channel.create.before'); + + $currency = $this->currencyRepository->create(request()->all()); + + Event::dispatch('core.currency.create.after', $currency); + + session()->flash('success', trans('admin::app.settings.currencies.create-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $currency = $this->currencyRepository->findOrFail($id); + + return view($this->_config['view'], compact('currency')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $this->validate(request(), [ + 'code' => ['required', 'unique:currencies,code,' . $id, new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required' + ]); + + Event::dispatch('core.currency.update.before', $id); + + $currency = $this->currencyRepository->update(request()->all(), $id); + + Event::dispatch('core.currency.update.after', $currency); + + session()->flash('success', trans('admin::app.settings.currencies.update-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $currency = $this->currencyRepository->findOrFail($id); + + if ($this->currencyRepository->count() == 1) { + session()->flash('warning', trans('admin::app.settings.currencies.last-delete-error')); + } else { + try { + Event::dispatch('core.currency.delete.before', $id); + + $this->currencyRepository->delete($id); + + Event::dispatch('core.currency.delete.after', $id); + + session()->flash('success', trans('admin::app.settings.currencies.delete-success')); + + return response()->json(['message' => true], 200); + } catch (\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Currency'])); + } + } + + return response()->json(['message' => false], 400); + } + + /** + * Remove the specified resources from database + * + * @return response \Illuminate\Http\Response + */ + public function massDestroy() { + $suppressFlash = false; + + if (request()->isMethod('post')) { + $indexes = explode(',', request()->input('indexes')); + + foreach ($indexes as $key => $value) { + try { + Event::dispatch('core.currency.delete.before', $value); + + $this->currencyRepository->delete($value); + + Event::dispatch('core.currency.delete.after', $value); + } catch(\Exception $e) { + $suppressFlash = true; + + continue; + } + } + + if (! $suppressFlash) + session()->flash('success', trans('admin::app.datagrid.mass-ops.delete-success', ['resource' => 'currencies'])); + else + session()->flash('info', trans('admin::app.datagrid.mass-ops.partial-action', ['resource' => 'currencies'])); + + return redirect()->back(); + } else { + session()->flash('error', trans('admin::app.datagrid.mass-ops.method-error')); + + return redirect()->back(); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php b/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php new file mode 100755 index 000000000..cf05243c2 --- /dev/null +++ b/packages/Webkul/Core/src/Http/Controllers/ExchangeRateController.php @@ -0,0 +1,209 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ExchangeRateController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * ExchangeRateRepository instance + * + * @var Object + */ + protected $exchangeRateRepository; + + /** + * CurrencyRepository object + * + * @var Object + */ + protected $currencyRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Core\Repositories\ExchangeRateRepository $exchangeRateRepository + * @param \Webkul\Core\Repositories\CurrencyRepository $currencyRepository + * @return void + */ + public function __construct( + ExchangeRateRepository $exchangeRateRepository, + CurrencyRepository $currencyRepository + ) + { + $this->exchangeRateRepository = $exchangeRateRepository; + + $this->currencyRepository = $currencyRepository; + + $this->exchangeRateRepository = $exchangeRateRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + $currencies = $this->currencyRepository->with('CurrencyExchangeRate')->all(); + + return view($this->_config['view'], compact('currencies')); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'target_currency' => ['required', 'unique:currency_exchange_rates,target_currency'], + 'rate' => 'required|numeric' + ]); + + Event::dispatch('core.exchange_rate.create.before'); + + $exchangeRate = $this->exchangeRateRepository->create(request()->all()); + + Event::dispatch('core.exchange_rate.create.after', $exchangeRate); + + session()->flash('success', trans('admin::app.settings.exchange_rates.create-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $currencies = $this->currencyRepository->all(); + + $exchangeRate = $this->exchangeRateRepository->findOrFail($id); + + return view($this->_config['view'], compact('currencies', 'exchangeRate')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $this->validate(request(), [ + 'target_currency' => ['required', 'unique:currency_exchange_rates,target_currency,' . $id], + 'rate' => 'required|numeric' + ]); + + Event::dispatch('core.exchange_rate.update.before', $id); + + $exchangeRate = $this->exchangeRateRepository->update(request()->all(), $id); + + Event::dispatch('core.exchange_rate.update.after', $exchangeRate); + + session()->flash('success', trans('admin::app.settings.exchange_rates.update-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Update Rates Using Exchange Rates API + * + * @return \Illuminate\Http\JsonResponse + */ + public function updateRates($service) + { + $exchangeService = config('services.exchange-api')[$service]; + + if (is_array($exchangeService)) { + if (! array_key_exists('class', $exchangeService)) { + return response()->json([ + 'success' => false, + 'rates' => null, + 'error' => trans('admin::app.exchange-rate.exchange-class-not-found', [ + 'service' => $service + ]) + ], 400); + } + + $exchangeServiceInstance = new $exchangeService['class']; + $updatedRates = $exchangeServiceInstance->fetchRates(); + + return response()->json([ + 'success' => true, + 'rates' => 'rates' + ], 200); + } else { + return response()->json([ + 'success' => false, + 'rates' => null, + 'error' => trans('admin::app.exchange-rate.invalid-config') + ], 400); + } + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $exchangeRate = $this->exchangeRateRepository->findOrFail($id); + + if ($this->exchangeRateRepository->count() == 1) { + session()->flash('error', trans('admin::app.settings.exchange_rates.last-delete-error')); + } else { + try { + Event::dispatch('core.exchange_rate.delete.before', $id); + + $this->exchangeRateRepository->delete($id); + + session()->flash('success', trans('admin::app.settings.exchange_rates.delete-success')); + + Event::dispatch('core.exchange_rate.delete.after', $id); + + return response()->json(['message' => true], 200); + } catch (\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-error', ['name' => 'Exchange rate'])); + } + } + + return response()->json(['message' => false], 400); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Http/Controllers/LocaleController.php b/packages/Webkul/Core/src/Http/Controllers/LocaleController.php new file mode 100755 index 000000000..68fcd8b7e --- /dev/null +++ b/packages/Webkul/Core/src/Http/Controllers/LocaleController.php @@ -0,0 +1,155 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class LocaleController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * LocaleRepository object + * + * @var array + */ + protected $localeRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Core\Repositories\LocaleRepository $localeRepository + * @return void + */ + public function __construct(LocaleRepository $localeRepository) + { + $this->localeRepository = $localeRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'code' => ['required', 'unique:locales,code', new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required', + 'direction' => 'in:ltr,rtl' + ]); + + Event::dispatch('core.locale.create.before'); + + $locale = $this->localeRepository->create(request()->all()); + + Event::dispatch('core.locale.create.after', $locale); + + session()->flash('success', trans('admin::app.settings.locales.create-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $locale = $this->localeRepository->findOrFail($id); + + return view($this->_config['view'], compact('locale')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $this->validate(request(), [ + 'code' => ['required', 'unique:locales,code,' . $id, new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required', + 'direction' => 'in:ltr,rtl' + ]); + + Event::dispatch('core.locale.update.before', $id); + + $locale = $this->localeRepository->update(request()->all(), $id); + + Event::dispatch('core.locale.update.after', $locale); + + session()->flash('success', trans('admin::app.settings.locales.update-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $locale = $this->localeRepository->findOrFail($id); + + if ($this->localeRepository->count() == 1) { + session()->flash('error', trans('admin::app.settings.locales.last-delete-error')); + } else { + try { + Event::dispatch('core.locale.delete.before', $id); + + $this->localeRepository->delete($id); + + Event::dispatch('core.locale.delete.after', $id); + + session()->flash('success', trans('admin::app.settings.locales.delete-success')); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Locale'])); + } + } + + return response()->json(['message' => false], 400); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Http/Controllers/SliderController.php b/packages/Webkul/Core/src/Http/Controllers/SliderController.php new file mode 100755 index 000000000..65bbf1035 --- /dev/null +++ b/packages/Webkul/Core/src/Http/Controllers/SliderController.php @@ -0,0 +1,149 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class SliderController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * SliderRepository + * + * @var Object + */ + protected $sliderRepository; + + /** + * @var array + */ + protected $channels; + + /** + * Create a new controller instance. + * + * @param \Webkul\Core\Repositories\SliderRepository $sliderRepository + * @return void + */ + public function __construct(SliderRepository $sliderRepository) + { + $this->sliderRepository = $sliderRepository; + + $this->_config = request('_config'); + } + + /** + * Loads the index for the sliders settings. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Loads the form for creating slider. + * + * @return \Illuminate\View\View + */ + public function create() + { + $channels = core()->getAllChannels(); + + return view($this->_config['view']); + } + + /** + * Creates the new sider item. + * + * @return response + */ + public function store() + { + $this->validate(request(), [ + 'title' => 'string|required', + 'channel_id' => 'required', + 'image.*' => 'required|mimes:jpeg,bmp,png,jpg' + ]); + + $result = $this->sliderRepository->save(request()->all()); + + if ($result) + session()->flash('success', trans('admin::app.settings.sliders.created-success')); + else + session()->flash('success', trans('admin::app.settings.sliders.created-fail')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Edit the previously created slider item. + * + * @return \Illuminate\View\View + */ + public function edit($id) + { + $slider = $this->sliderRepository->findOrFail($id); + + return view($this->_config['view'])->with('slider', $slider); + } + + /** + * Edit the previously created slider item. + * + * @return response + */ + public function update($id) + { + $this->validate(request(), [ + 'title' => 'string|required', + 'channel_id' => 'required', + 'image.*' => 'sometimes|mimes:jpeg,bmp,png,jpg' + ]); + + $result = $this->sliderRepository->updateItem(request()->all(), $id); + + if ($result) { + session()->flash('success', trans('admin::app.settings.sliders.update-success')); + } else { + session()->flash('error', trans('admin::app.settings.sliders.update-fail')); + } + + return redirect()->route($this->_config['redirect']); + } + + /** + * Delete a slider item and preserve the last one from deleting + * + * @return mixed + */ + public function destroy($id) + { + $slider = $this->sliderRepository->findOrFail($id); + + try { + $this->sliderRepository->delete($id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Slider'])); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Slider'])); + } + + return response()->json(['message' => false], 400); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Http/Controllers/SubscriptionController.php b/packages/Webkul/Core/src/Http/Controllers/SubscriptionController.php new file mode 100755 index 000000000..c5bff4153 --- /dev/null +++ b/packages/Webkul/Core/src/Http/Controllers/SubscriptionController.php @@ -0,0 +1,112 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class SubscriptionController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * SubscribersListRepository + * + * @var Object + */ + protected $subscribersListRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Core\Repositories\SubscribersListRepository $subscribersListRepository + * @return void + */ + public function __construct(SubscribersListRepository $subscribersListRepository) + { + $this->subscribersListRepository = $subscribersListRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * To unsubscribe the user without deleting the resource of the subscribed user + * + * @param integer $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $subscriber = $this->subscribersListRepository->findOrFail($id); + + return view($this->_config['view'])->with('subscriber', $subscriber); + } + + /** + * To unsubscribe the user without deleting the resource of the subscribed user + * + * @param integer $id + * @return mixed + */ + public function update($id) + { + $data = request()->all(); + + $subscriber = $this->subscribersListRepository->findOrFail($id); + + $result = $subscriber->update($data); + + if ($result) + session()->flash('success', trans('admin::app.customers.subscribers.update-success')); + // session()->flash('success', 'admin::app.customers.subscribers.delete-success'); + else + session()->flash('error', trans('admin::app.customers.subscribers.update-failed')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $subscriber = $this->subscribersListRepository->findOrFail($id); + + try { + $this->subscribersListRepository->delete($id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Subscriber'])); + + return response()->json(['message' => true], 200); + } catch (\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Subscriber'])); + } + + return response()->json(['message' => false], 400); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Http/helpers.php b/packages/Webkul/Core/src/Http/helpers.php new file mode 100755 index 000000000..3732ed2d5 --- /dev/null +++ b/packages/Webkul/Core/src/Http/helpers.php @@ -0,0 +1,48 @@ +make(Core::class); + } + } + + if (! function_exists('array_permutation')) { + function array_permutation($input) + { + $results = []; + + foreach ($input as $key => $values) { + if (empty($values)) { + continue; + } + + if (empty($results)) { + foreach ($values as $value) { + $results[] = [$key => $value]; + } + } else { + $append = []; + + foreach ($results as &$result) { + $result[$key] = array_shift($values); + + $copy = $result; + + foreach ($values as $item) { + $copy[$key] = $item; + $append[] = $copy; + } + + array_unshift($values, $result[$key]); + } + + $results = array_merge($results, $append); + } + } + + return $results; + } + } +?> \ No newline at end of file diff --git a/packages/Webkul/Core/src/Models/Channel.php b/packages/Webkul/Core/src/Models/Channel.php new file mode 100755 index 000000000..963418413 --- /dev/null +++ b/packages/Webkul/Core/src/Models/Channel.php @@ -0,0 +1,103 @@ +belongsToMany(LocaleProxy::modelClass(), 'channel_locales'); + } + + /** + * Get the default locale + */ + public function default_locale() + { + return $this->belongsTo(LocaleProxy::modelClass()); + } + + /** + * Get the channel locales. + */ + public function currencies() + { + return $this->belongsToMany(CurrencyProxy::modelClass(), 'channel_currencies'); + } + + /** + * Get the channel inventory sources. + */ + public function inventory_sources() + { + return $this->belongsToMany(InventorySourceProxy::modelClass(), 'channel_inventory_sources'); + } + + + // protected $with = ['base_currency']; + + /** + * Get the base currency + */ + public function base_currency() + { + return $this->belongsTo(CurrencyProxy::modelClass()); + } + + /** + * Get the base currency + */ + public function root_category() + { + return $this->belongsTo(CategoryProxy::modelClass(), 'root_category_id'); + } + + /** + * Get logo image url. + */ + public function logo_url() + { + if (! $this->logo) + return; + + return Storage::url($this->logo); + } + + /** + * Get logo image url. + */ + public function getLogoUrlAttribute() + { + return $this->logo_url(); + } + + /** + * Get favicon image url. + */ + public function favicon_url() + { + if (! $this->favicon) + return; + + return Storage::url($this->favicon); + } + + /** + * Get favicon image url. + */ + public function getFaviconUrlAttribute() + { + return $this->favicon_url(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Models/ChannelProxy.php b/packages/Webkul/Core/src/Models/ChannelProxy.php new file mode 100644 index 000000000..1bb09734d --- /dev/null +++ b/packages/Webkul/Core/src/Models/ChannelProxy.php @@ -0,0 +1,10 @@ +attributes['code'] = strtoupper($code); + } + + /** + * Get the currency_exchange associated with the currency. + */ + public function CurrencyExchangeRate() + { + return $this->hasOne(CurrencyExchangeRateProxy::modelClass(), 'target_currency'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Models/CurrencyExchangeRate.php b/packages/Webkul/Core/src/Models/CurrencyExchangeRate.php new file mode 100755 index 000000000..075585ee1 --- /dev/null +++ b/packages/Webkul/Core/src/Models/CurrencyExchangeRate.php @@ -0,0 +1,18 @@ +path) + return; + + return Storage::url($this->path); + } + + /** + * Get image url for the category image. + */ + public function getImageUrlAttribute() + { + return $this->image_url(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Models/SliderProxy.php b/packages/Webkul/Core/src/Models/SliderProxy.php new file mode 100644 index 000000000..f60ee593d --- /dev/null +++ b/packages/Webkul/Core/src/Models/SliderProxy.php @@ -0,0 +1,10 @@ +path); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Providers/CoreServiceProvider.php b/packages/Webkul/Core/src/Providers/CoreServiceProvider.php new file mode 100755 index 000000000..949e565b4 --- /dev/null +++ b/packages/Webkul/Core/src/Providers/CoreServiceProvider.php @@ -0,0 +1,78 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + + $this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'core'); + + Validator::extend('slug', 'Webkul\Core\Contracts\Validations\Slug@passes'); + + Validator::extend('code', 'Webkul\Core\Contracts\Validations\Code@passes'); + + Validator::extend('decimal', 'Webkul\Core\Contracts\Validations\Decimal@passes'); + + $this->publishes([ + dirname(__DIR__) . '/Config/concord.php' => config_path('concord.php'), + ]); + + SliderProxy::observe(SliderObserver::class); + + $this->registerEloquentFactoriesFrom(__DIR__ . '/../Database/Factories'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + $this->registerFacades(); + } + /** + * Register Bouncer as a singleton. + * + * @return void + */ + protected function registerFacades() + { + $loader = AliasLoader::getInstance(); + $loader->alias('core', CoreFacade::class); + + $this->app->singleton('core', function () { + return app()->make(Core::class); + }); + } + + /** + * Register factories. + * + * @param string $path + * @return void + */ + protected function registerEloquentFactoriesFrom($path): void + { + $this->app->make(EloquentFactory::class)->load($path); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Providers/ModuleServiceProvider.php b/packages/Webkul/Core/src/Providers/ModuleServiceProvider.php new file mode 100644 index 000000000..1a8afd629 --- /dev/null +++ b/packages/Webkul/Core/src/Providers/ModuleServiceProvider.php @@ -0,0 +1,22 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ChannelRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Core\Contracts\Channel'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + $channel = $this->model->create($data); + + $channel->locales()->sync($data['locales']); + + $channel->currencies()->sync($data['currencies']); + + $channel->inventory_sources()->sync($data['inventory_sources']); + + $this->uploadImages($data, $channel); + + $this->uploadImages($data, $channel, 'favicon'); + + return $channel; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute = "id") + { + $channel = $this->find($id); + + $channel->update($data); + + $channel->locales()->sync($data['locales']); + + $channel->currencies()->sync($data['currencies']); + + $channel->inventory_sources()->sync($data['inventory_sources']); + + $this->uploadImages($data, $channel); + + $this->uploadImages($data, $channel, 'favicon'); + + return $channel; + } + + /** + * @param array $data + * @param mixed $channel + * @return void + */ + public function uploadImages($data, $channel, $type = "logo") + { + if (isset($data[$type])) { + foreach ($data[$type] as $imageId => $image) { + $file = $type . '.' . $imageId; + $dir = 'channel/' . $channel->id; + + if (request()->hasFile($file)) { + if ($channel->{$type}) { + Storage::delete($channel->{$type}); + } + + $channel->{$type} = request()->file($file)->store($dir); + $channel->save(); + } + } + } else { + if ($channel->{$type}) { + Storage::delete($channel->{$type}); + } + + $channel->{$type} = null; + $channel->save(); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php b/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php new file mode 100755 index 000000000..87067c146 --- /dev/null +++ b/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php @@ -0,0 +1,176 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CoreConfigRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Core\Contracts\CoreConfig'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + unset($data['_token']); + + if ($data['locale'] || $data['channel']) { + $locale = $data['locale']; + $channel = $data['channel']; + unset($data['locale']); + unset($data['channel']); + } + + foreach ($data as $method => $fieldData) { + + $recurssiveData = $this->recuressiveArray($fieldData , $method); + + foreach ($recurssiveData as $fieldName => $value) { + $field = core()->getConfigField($fieldName); + + $channel_based = false; + $locale_based = false; + + if (isset($field['channel_based']) && $field['channel_based']) { + $channel_based = true; + } + + if (isset($field['locale_based']) && $field['locale_based']) { + $locale_based = true; + } + + if (getType($value) == 'array') { + if(! isset($value['delete'])) { + $value = implode(",", $value); + } + } + + if (isset($field['channel_based']) && $field['channel_based']) { + if (isset($field['locale_based']) && $field['locale_based']) { + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->where('locale_code', $locale) + ->where('channel_code', $channel) + ->get(); + } + else { + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->where('channel_code', $channel) + ->get(); + } + } else { + if (isset($field['locale_based']) && $field['locale_based']) { + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->where('locale_code', $locale) + ->get(); + } else { + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->get(); + } + } + + if (request()->hasFile($fieldName)) { + $dir = 'configuration'; + $value = request()->file($fieldName)->store($dir); + } + + if (! count($coreConfigValue)) { + $this->model->create([ + 'code' => $fieldName, + 'value' => $value, + 'locale_code' => $locale_based ? $locale : null, + 'channel_code' => $channel_based ? $channel : null + ]); + } else { + $updataData['code'] = $fieldName; + $updataData['value'] = $value; + $updataData['locale_code'] = $locale_based ? $locale : null; + $updataData['channel_code'] = $channel_based ? $channel : null; + + foreach ($coreConfigValue as $coreConfig) { + Storage::delete($coreConfig['value']); + + if(isset($value['delete'])) { + $this->model->destroy($coreConfig['id']); + } else { + $coreConfig->update($updataData); + } + } + } + } + } + } + + /** + * @param array $formData + * @param string $method + * @return array + */ + public function recuressiveArray(array $formData, $method) { + static $data =[]; + static $recuressiveArrayData =[]; + + foreach ($formData as $form => $formValue) { + $value = $method . '.' . $form; + if (is_array($formValue)) { + $dim = $this->countDim($formValue); + if ($dim > 1) { + $this->recuressiveArray($formValue, $value); + } else if ($dim == 1) { + $data[$value] = $formValue; + } + } + } + + foreach ($data as $key => $value) { + $field = core()->getConfigField($key); + + if ($field) { + $recuressiveArrayData[$key] = $value; + } else { + foreach ($value as $key1 => $val) { + $recuressiveArrayData[$key . '.' . $key1] = $val; + } + } + } + + return $recuressiveArrayData; + } + + /** + * return dimension of array + * @param array $array + * @return integer + */ + public function countDim($array) + { + if (is_array(reset($array))) { + $return = $this->countDim(reset($array)) + 1; + } + else { + $return = 1; + } + + return $return; + } +} diff --git a/packages/Webkul/Core/src/Repositories/CountryRepository.php b/packages/Webkul/Core/src/Repositories/CountryRepository.php new file mode 100755 index 000000000..5117814be --- /dev/null +++ b/packages/Webkul/Core/src/Repositories/CountryRepository.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CountryRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Core\Contracts\Country'; + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Repositories/CountryStateRepository.php b/packages/Webkul/Core/src/Repositories/CountryStateRepository.php new file mode 100755 index 000000000..8f4bccbd6 --- /dev/null +++ b/packages/Webkul/Core/src/Repositories/CountryStateRepository.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CountryStateRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Core\Contracts\CountryState'; + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Repositories/CurrencyRepository.php b/packages/Webkul/Core/src/Repositories/CurrencyRepository.php new file mode 100755 index 000000000..a4df09924 --- /dev/null +++ b/packages/Webkul/Core/src/Repositories/CurrencyRepository.php @@ -0,0 +1,37 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CurrencyRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Core\Contracts\Currency'; + } + + public function delete($id) { + if ($this->model->count() == 1) { + return false; + } else { + if ($this->model->destroy($id)) { + return true; + } else { + return false; + } + + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Repositories/ExchangeRateRepository.php b/packages/Webkul/Core/src/Repositories/ExchangeRateRepository.php new file mode 100755 index 000000000..36c4fd914 --- /dev/null +++ b/packages/Webkul/Core/src/Repositories/ExchangeRateRepository.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ExchangeRateRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Core\Contracts\CurrencyExchangeRate'; + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Repositories/LocaleRepository.php b/packages/Webkul/Core/src/Repositories/LocaleRepository.php new file mode 100755 index 000000000..ebe5653f8 --- /dev/null +++ b/packages/Webkul/Core/src/Repositories/LocaleRepository.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class LocaleRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Core\Contracts\Locale'; + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Repositories/SliderRepository.php b/packages/Webkul/Core/src/Repositories/SliderRepository.php new file mode 100755 index 000000000..f2e455492 --- /dev/null +++ b/packages/Webkul/Core/src/Repositories/SliderRepository.php @@ -0,0 +1,154 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class SliderRepository extends Repository +{ + /** + * ChannelRepository object + * + * @var Object + */ + protected $channelRepository; + + /** + * Create a new repository instance. + * + * @param \Webkul\Core\Repositories\ChannelRepository $channelRepository + * @return void + */ + public function __construct( + ChannelRepository $channelRepository, + App $app + ) + { + $this->channelRepository = $channelRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Core\Contracts\Slider'; + } + + /** + * @param array $data + * @return mixed + */ + public function save(array $data) + { + Event::fire('core.settings.slider.create.before', $data); + + $channelName = $this->channelRepository->find($data['channel_id'])->name; + + $dir = 'slider_images/' . $channelName; + + $uploaded = false; + $image = false; + + if (isset($data['image'])) { + $image = $first = Arr::first($data['image'], function ($value, $key) { + if ($value) + return $value; + else + return false; + }); + } + + if ($image != false) { + $uploaded = $image->store($dir); + + unset($data['image'], $data['_token']); + } + + if ($uploaded) { + $data['path'] = $uploaded; + } else { + unset($data['image']); + } + + $slider = $this->create($data); + + Event::fire('core.settings.slider.create.after', $slider); + + return true; + } + + /** + * @param array $data + * @return mixed + */ + public function updateItem(array $data, $id) + { + Event::fire('core.settings.slider.update.before', $id); + + $channelName = $this->channelRepository->find($data['channel_id'])->name; + + $dir = 'slider_images/' . $channelName; + + $uploaded = $image = false; + + if (isset($data['image'])) { + $image = $first = Arr::first($data['image'], function ($value, $key) { + return $value ? $value : false; + }); + } + + if ($image != false) { + $uploaded = $image->store($dir); + + unset($data['image'], $data['_token']); + } + + if ($uploaded) { + $sliderItem = $this->find($id); + + Storage::delete($sliderItem->path); + + $data['path'] = $uploaded; + } else { + unset($data['image']); + } + + $slider = $this->update($data, $id); + + Event::fire('core.settings.slider.update.after', $slider); + + return true; + } + + /** + * Delete a slider item and delete the image from the disk or where ever it is + * + * @return Boolean + */ + public function destroy($id) + { + $sliderItem = $this->find($id); + + $sliderItemImage = $sliderItem->path; + + Storage::delete($sliderItemImage); + + return $this->model->destroy($id); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Repositories/SubscribersListRepository.php b/packages/Webkul/Core/src/Repositories/SubscribersListRepository.php new file mode 100755 index 000000000..f85319fc8 --- /dev/null +++ b/packages/Webkul/Core/src/Repositories/SubscribersListRepository.php @@ -0,0 +1,35 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class SubscribersListRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Core\Contracts\SubscribersList'; + } + + + /** + * Delete a slider item and delete the image from the disk or where ever it is + * + * @return Boolean + */ + public function destroy($id) { + return $this->model->destroy($id); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Resources/lang/en/validation.php b/packages/Webkul/Core/src/Resources/lang/en/validation.php new file mode 100755 index 000000000..1f9ede60e --- /dev/null +++ b/packages/Webkul/Core/src/Resources/lang/en/validation.php @@ -0,0 +1,7 @@ + 'The :attribute must be valid slug.', + 'code' => 'The :attribute must be valid.', + 'decimal' => 'The :attribute must be valid.' +]; \ No newline at end of file diff --git a/packages/Webkul/Core/src/Resources/lang/fa/app.php b/packages/Webkul/Core/src/Resources/lang/fa/app.php new file mode 100644 index 000000000..da43b37d9 --- /dev/null +++ b/packages/Webkul/Core/src/Resources/lang/fa/app.php @@ -0,0 +1,7 @@ + ':attribute باید نامک معتبر داشته باشد.', + 'code' => ':attribute باید معتبر باشد.', + 'decimal' => ':attribute باید معتبر باشد.' +]; diff --git a/packages/Webkul/Core/src/Resources/lang/pt_BR/validation.php b/packages/Webkul/Core/src/Resources/lang/pt_BR/validation.php new file mode 100755 index 000000000..3aa63e352 --- /dev/null +++ b/packages/Webkul/Core/src/Resources/lang/pt_BR/validation.php @@ -0,0 +1,7 @@ + 'O :attribute precisa ter um slug válido.', + 'code' => 'O :attribute precisa ser válido.', + 'decimal' => 'O :attribute precisa ser válido.' +]; \ No newline at end of file diff --git a/packages/Webkul/Core/src/Templates/on-boarding.php b/packages/Webkul/Core/src/Templates/on-boarding.php new file mode 100644 index 000000000..21ff4eaea --- /dev/null +++ b/packages/Webkul/Core/src/Templates/on-boarding.php @@ -0,0 +1,14 @@ + + ____ _ _ +| __ ) __ _ __ _(_)___| |_ ___ +| _ \ / _` |/ _` | / __| __/ _ \ +| |_) | (_| | (_| | \__ \ || (_) | +|____/ \__,_|\__, |_|___/\__\___/ + |___/ + + + +Welcome to the Bagisto project! Bagisto Community is an open-source e-commerce ecosystem +which is built on top of Laravel and Vue.js. + +Made with 💖 by the Bagisto Team. Happy helping :) diff --git a/packages/Webkul/Core/src/Tree.php b/packages/Webkul/Core/src/Tree.php new file mode 100755 index 000000000..348d57ec9 --- /dev/null +++ b/packages/Webkul/Core/src/Tree.php @@ -0,0 +1,109 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Tree { + + /** + * Contains tree item + * + * @var array + */ + public $items = []; + + /** + * Contains acl roles + * + * @var array + */ + public $roles = []; + + /** + * Contains current item route + * + * @var string + */ + public $current; + + /** + * Contains current item key + * + * @var string + */ + public $currentKey; + + /** + * Create a new instance. + * + * @return void + */ + public function __construct() { + $this->current = Request::url(); + } + + /** + * Shortcut method for create a Config with a callback. + * This will allow you to do things like fire an event on creation. + * + * @param callable $callback Callback to use after the Config creation + * @return object + */ + public static function create($callback = null) { + $tree = new Tree(); + + if ($callback) { + $callback($tree); + } + + return $tree; + } + + /** + * Add a Config item to the item stack + * + * @param string $item Dot seperated heirarchy + */ + public function add($item, $type = '') + { + $item['children'] = []; + + if ($type == 'menu') { + $item['url'] = route($item['route'], $item['params'] ?? []); + + if (strpos($this->current, $item['url']) !== false) { + $this->currentKey = $item['key']; + } + } else if ($type == 'acl') { + $item['name'] = trans($item['name']); + $this->roles[$item['route']] = $item['key']; + } + + $children = str_replace('.', '.children.', $item['key']); + + core()->array_set($this->items, $children, $item); + + } + + /** + * Method to find the active links + * + * @param array $item Item that needs to be checked if active + * @return string + */ + public function getActive($item) + { + $url = trim($item['url'], '/'); + + if ((strpos($this->current, $url) !== false) || (strpos($this->currentKey, $item['key']) === 0)) { + return 'active'; + } + } +} diff --git a/packages/Webkul/Core/src/resources/manifest.php b/packages/Webkul/Core/src/resources/manifest.php new file mode 100644 index 000000000..fae55b951 --- /dev/null +++ b/packages/Webkul/Core/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto Core', + 'version' => '0.0.1' + ]; diff --git a/packages/Webkul/Customer/.gitignore b/packages/Webkul/Customer/.gitignore new file mode 100755 index 000000000..49e0fc6b4 --- /dev/null +++ b/packages/Webkul/Customer/.gitignore @@ -0,0 +1,2 @@ +/node_modules +/package-lock.json \ No newline at end of file diff --git a/packages/Webkul/Customer/composer.json b/packages/Webkul/Customer/composer.json new file mode 100755 index 000000000..0fa0c7129 --- /dev/null +++ b/packages/Webkul/Customer/composer.json @@ -0,0 +1,26 @@ +{ + "name": "bagisto/laravel-customer", + "description": "Customers Package for themeing and various features for customers", + "license": "MIT", + "authors": [ + { + "name": "Prashant Singh", + "email": "prashant.singh852@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\Customer\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Customer\\Providers\\CustomerServiceProvider" + ], + "aliases": {} + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Customer/src/Contracts/Customer.php b/packages/Webkul/Customer/src/Contracts/Customer.php new file mode 100644 index 000000000..878f2183e --- /dev/null +++ b/packages/Webkul/Customer/src/Contracts/Customer.php @@ -0,0 +1,7 @@ +increments('id'); + $table->string('name'); + $table->boolean('is_user_defined')->default(1); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('customer_groups'); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2018_07_24_082930_create_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2018_07_24_082930_create_customers_table.php new file mode 100755 index 000000000..92fd6f824 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2018_07_24_082930_create_customers_table.php @@ -0,0 +1,44 @@ +increments('id'); + $table->integer('channel_id')->unsigned(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('restrict'); + $table->string('first_name'); + $table->string('last_name'); + $table->enum('gender', ['Male', 'Female']); + $table->date('date_of_birth')->nullable(); + $table->string('email')->unique(); + $table->tinyInteger('status')->default(1); + $table->string('password'); + $table->integer('customer_group_id')->unsigned()->nullable(); + $table->foreign('customer_group_id')->references('id')->on('customer_groups')->onDelete('set null'); + $table->boolean('subscribed_to_news_letter')->default(0); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('customers'); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2018_07_24_083025_create_customer_addresses_table.php b/packages/Webkul/Customer/src/Database/Migrations/2018_07_24_083025_create_customer_addresses_table.php new file mode 100755 index 000000000..d01df94ce --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2018_07_24_083025_create_customer_addresses_table.php @@ -0,0 +1,42 @@ +increments('id'); + $table->integer('customer_id')->unsigned(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); + $table->string('address1'); + $table->string('address2')->nullable(); + $table->string('country'); + $table->string('state'); + $table->string('city'); + $table->integer('postcode'); + $table->string('phone'); + $table->boolean('default_address')->default(0); + $table->string('name')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('customer_addresses'); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2018_09_11_064045_customer_password_resets.php b/packages/Webkul/Customer/src/Database/Migrations/2018_09_11_064045_customer_password_resets.php new file mode 100755 index 000000000..9ea751001 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2018_09_11_064045_customer_password_resets.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('customer_password_resets'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Database/Migrations/2018_10_03_025230_create_wishlist_table.php b/packages/Webkul/Customer/src/Database/Migrations/2018_10_03_025230_create_wishlist_table.php new file mode 100755 index 000000000..f2708933c --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2018_10_03_025230_create_wishlist_table.php @@ -0,0 +1,44 @@ +increments('id'); + $table->integer('channel_id')->unsigned(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + + $table->integer('customer_id')->unsigned(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); + + $table->json('item_options')->nullable(); + $table->date('moved_to_cart')->nullable(); + $table->boolean('shared')->nullable(); + $table->date('time_of_moving')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('wishlist'); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2018_11_17_165758_add_is_verified_column_in_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2018_11_17_165758_add_is_verified_column_in_customers_table.php new file mode 100755 index 000000000..05a21af53 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2018_11_17_165758_add_is_verified_column_in_customers_table.php @@ -0,0 +1,36 @@ +boolean('is_verified')->default(0); + $table->string('token')->nullable(); + $table->dropColumn('gender'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('customers', function (Blueprint $table) { + $table->dropColumn('is_verified'); + $table->dropColumn('token'); + $table->enum('gender', ['Male', 'Female'])->after('last_name'); + }); + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Database/Migrations/2018_11_26_110500_change_gender_column_in_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2018_11_26_110500_change_gender_column_in_customers_table.php new file mode 100755 index 000000000..013ef50e4 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2018_11_26_110500_change_gender_column_in_customers_table.php @@ -0,0 +1,32 @@ +string('gender')->length(50)->nullable()->after('last_name'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('customers', function (Blueprint $table) { + $table->dropColumn('gender'); + }); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_03_28_103658_add_notes_column_in_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_03_28_103658_add_notes_column_in_customers_table.php new file mode 100644 index 000000000..ec4f45089 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_03_28_103658_add_notes_column_in_customers_table.php @@ -0,0 +1,32 @@ +text('notes')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('customers', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_06_04_114009_add_phone_column_in_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_06_04_114009_add_phone_column_in_customers_table.php new file mode 100644 index 000000000..76f585c98 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_06_04_114009_add_phone_column_in_customers_table.php @@ -0,0 +1,36 @@ +string('phone')->unique()->nullable(); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('customers', function (Blueprint $table) { + if (Schema::hasColumn('customers', 'phone')) { + $table->dropColumn('phone'); + } + }); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_06_15_183412_add_code_column_in_customer_groups_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_06_15_183412_add_code_column_in_customer_groups_table.php new file mode 100644 index 000000000..dbc547707 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_06_15_183412_add_code_column_in_customer_groups_table.php @@ -0,0 +1,32 @@ +string('code')->unique(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('customer_groups', function (Blueprint $table) { + $table->dropColumn('code'); + }); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_06_19_162817_remove_unique_in_phone_column_in_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_06_19_162817_remove_unique_in_phone_column_in_customers_table.php new file mode 100644 index 000000000..d824f6bf2 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_06_19_162817_remove_unique_in_phone_column_in_customers_table.php @@ -0,0 +1,36 @@ +dropUnique('customers_phone_unique'); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('customers', function (Blueprint $table) { + if ( Schema::hasColumn('customers', 'phone')) { + $table->unique('phone'); + } + }); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_08_12_184925_add_additional_cloumn_in_wishlist_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_08_12_184925_add_additional_cloumn_in_wishlist_table.php new file mode 100644 index 000000000..553d082fd --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_08_12_184925_add_additional_cloumn_in_wishlist_table.php @@ -0,0 +1,32 @@ +json('additional')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('wishlist', function (Blueprint $table) { + $table->dropColumn('additional'); + }); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_09_26_163950_remove_channel_id_from_customers_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_09_26_163950_remove_channel_id_from_customers_table.php new file mode 100644 index 000000000..f9a8205ad --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_09_26_163950_remove_channel_id_from_customers_table.php @@ -0,0 +1,34 @@ +dropForeign('customers_channel_id_foreign'); + $table->dropColumn('channel_id'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('customers', function (Blueprint $table) { + $table->integer('channel_id')->unsigned(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('restrict'); + }); + } +} diff --git a/packages/Webkul/Customer/src/Database/Migrations/2019_10_24_173507_change_postcode_column_type_in_customer_addresses_table.php b/packages/Webkul/Customer/src/Database/Migrations/2019_10_24_173507_change_postcode_column_type_in_customer_addresses_table.php new file mode 100644 index 000000000..acb7d26f4 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Migrations/2019_10_24_173507_change_postcode_column_type_in_customer_addresses_table.php @@ -0,0 +1,32 @@ +string('postcode')->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('customer_addresses', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Customer/src/Database/Seeders/CustomerGroupTableSeeder.php b/packages/Webkul/Customer/src/Database/Seeders/CustomerGroupTableSeeder.php new file mode 100755 index 000000000..3fdc3fb7a --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Seeders/CustomerGroupTableSeeder.php @@ -0,0 +1,33 @@ +delete(); + + DB::table('customer_groups')->insert([ + [ + 'id' => 1, + 'code' => 'guest', + 'name' => 'Guest', + 'is_user_defined' => 0, + ], [ + 'id' => 2, + 'code' => 'general', + 'name' => 'General', + 'is_user_defined' => 0, + ], [ + 'id' => 3, + 'code' => 'wholesale', + 'name' => 'Wholesale', + 'is_user_defined' => 0, + ] + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Database/Seeders/DatabaseSeeder.php b/packages/Webkul/Customer/src/Database/Seeders/DatabaseSeeder.php new file mode 100755 index 000000000..9973f1369 --- /dev/null +++ b/packages/Webkul/Customer/src/Database/Seeders/DatabaseSeeder.php @@ -0,0 +1,18 @@ +call(CustomerGroupTableSeeder::class); + } +} diff --git a/packages/Webkul/Customer/src/Helpers/Wishlist.php b/packages/Webkul/Customer/src/Helpers/Wishlist.php new file mode 100644 index 000000000..5bf4d348f --- /dev/null +++ b/packages/Webkul/Customer/src/Helpers/Wishlist.php @@ -0,0 +1,50 @@ +wishlistRepository = $wishlistRepository; + } + + /** + * Returns wishlist products for current customer. + * + * @param Product $product + * @return boolean + */ + public function getWishlistProduct($product) + { + $wishlist = false; + + if (auth()->guard('customer')->user()) { + $wishlist = $this->wishlistRepository->findOneWhere([ + 'channel_id' => core()->getCurrentChannel()->id, + 'product_id' => $product->product_id, + 'customer_id' => auth()->guard('customer')->user()->id + ]); + } + + if ($wishlist) + return true; + + return false; + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Http/Controllers/AccountController.php b/packages/Webkul/Customer/src/Http/Controllers/AccountController.php new file mode 100755 index 000000000..1c34f365d --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/AccountController.php @@ -0,0 +1,44 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AccountController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->middleware('customer'); + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } +} diff --git a/packages/Webkul/Customer/src/Http/Controllers/AddressController.php b/packages/Webkul/Customer/src/Http/Controllers/AddressController.php new file mode 100755 index 000000000..b7fefec45 --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/AddressController.php @@ -0,0 +1,201 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AddressController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * CustomerAddressRepository object + * + * @param \Webkul\Customer\Repositories\CustomerAddressRepository $customerAddressRepository + * @var Object + */ + protected $customerAddressRepository; + + public function __construct(CustomerAddressRepository $customerAddressRepository) + { + $this->middleware('customer'); + + $this->_config = request('_config'); + + $this->customerAddressRepository = $customerAddressRepository; + + $this->customer = auth()->guard('customer')->user(); + } + + /** + * Address Route index page + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view'])->with('addresses', $this->customer->addresses); + } + + /** + * Show the address create form + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Create a new address for customer. + * + * @return view + */ + public function store() + { + request()->merge(['address1' => implode(PHP_EOL, array_filter(request()->input('address1')))]); + + $data = collect(request()->input())->except('_token')->toArray(); + + $this->validate(request(), [ + 'address1' => 'string|required', + 'country' => 'string|required', + 'state' => 'string|required', + 'city' => 'string|required', + 'postcode' => 'required', + 'phone' => 'required' + ]); + + $cust_id['customer_id'] = $this->customer->id; + $data = array_merge($cust_id, $data); + + if ($this->customer->addresses->count() == 0) { + $data['default_address'] = 1; + } + + if ($this->customerAddressRepository->create($data)) { + session()->flash('success', trans('shop::app.customer.account.address.create.success')); + + return redirect()->route($this->_config['redirect']); + } else { + session()->flash('error', trans('shop::app.customer.account.address.create.error')); + + return redirect()->back(); + } + } + + /** + * For editing the existing addresses of current logged in customer + * + * @return \Illuminate\View\View + */ + public function edit($id) + { + $address = $this->customerAddressRepository->findOneWhere([ + 'id' => $id, + 'customer_id' => auth()->guard('customer')->user()->id + ]); + + if (! $address) + abort(404); + + return view($this->_config['view'], compact('address')); + } + + /** + * Edit's the premade resource of customer called + * Address. + * + * @return redirect + */ + public function update($id) + { + request()->merge(['address1' => implode(PHP_EOL, array_filter(request()->input('address1')))]); + + $this->validate(request(), [ + 'address1' => 'string|required', + 'country' => 'string|required', + 'state' => 'string|required', + 'city' => 'string|required', + 'postcode' => 'required', + 'phone' => 'required' + ]); + + $data = collect(request()->input())->except('_token')->toArray(); + + $addresses = $this->customer->addresses; + + foreach($addresses as $address) { + if ($id == $address->id) { + session()->flash('success', trans('shop::app.customer.account.address.edit.success')); + + $this->customerAddressRepository->update($data, $id); + + return redirect()->route('customer.address.index'); + } + } + + session()->flash('warning', trans('shop::app.security-warning')); + + return redirect()->route('customer.address.index'); + } + + /** + * To change the default address or make the default address, by default when first address is created will be the default address + * + * @return Response + */ + public function makeDefault($id) + { + if ($default = $this->customer->default_address) + $this->customerAddressRepository->find($default->id)->update(['default_address' => 0]); + + if ($address = $this->customerAddressRepository->find($id)) { + $address->update(['default_address' => 1]); + } else { + session()->flash('success', trans('shop::app.customer.account.address.index.default-delete')); + } + + return redirect()->back(); + } + + /** + * Delete address of the current customer + * + * @param integer $id + * + * @return response mixed + */ + public function destroy($id) + { + $address = $this->customerAddressRepository->findOneWhere([ + 'id' => $id, + 'customer_id' => auth()->guard('customer')->user()->id + ]); + + if (! $address) + abort(404); + + $this->customerAddressRepository->delete($id); + + session()->flash('success', trans('shop::app.customer.account.address.delete.success')); + + return redirect()->route('customer.address.index'); + } +} diff --git a/packages/Webkul/Customer/src/Http/Controllers/Controller.php b/packages/Webkul/Customer/src/Http/Controllers/Controller.php new file mode 100755 index 000000000..1438736c3 --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CustomerController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * CustomerRepository object + * + * @var Object + */ + protected $customerRepository; + + /** + * ProductReviewRepository object + * + * @var array + */ + protected $productReviewRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Customer\Repositories\CustomerRepository $customer + * @param \Webkul\Product\Repositories\ProductReviewRepository $productReview + * @return void + */ + public function __construct(CustomerRepository $customerRepository, ProductReviewRepository $productReviewRepository) + { + $this->middleware('customer'); + + $this->_config = request('_config'); + + $this->customerRepository = $customerRepository; + + $this->productReviewRepository = $productReviewRepository; + } + + /** + * Taking the customer to profile details page + * + * @return \Illuminate\View\View + */ + public function index() + { + $customer = $this->customerRepository->find(auth()->guard('customer')->user()->id); + + return view($this->_config['view'], compact('customer')); + } + + /** + * For loading the edit form page. + * + * @return \Illuminate\View\View + */ + public function edit() + { + $customer = $this->customerRepository->find(auth()->guard('customer')->user()->id); + + return view($this->_config['view'], compact('customer')); + } + + /** + * Edit function for editing customer profile. + * + * @return response + */ + public function update() + { + $id = auth()->guard('customer')->user()->id; + + $this->validate(request(), [ + 'first_name' => 'string', + 'last_name' => 'string', + 'gender' => 'required', + 'date_of_birth' => 'date|before:today', + 'email' => 'email|unique:customers,email,'.$id, + 'password' => 'confirmed|min:6|required_with:oldpassword', + 'oldpassword' => 'required_with:password', + 'password_confirmation' => 'required_with:password', + ]); + + $data = collect(request()->input())->except('_token')->toArray(); + + if ($data['date_of_birth'] == "") + unset($data['date_of_birth']); + + if ($data['oldpassword'] != "" || $data['oldpassword'] != null) { + if(Hash::check($data['oldpassword'], auth()->guard('customer')->user()->password)) { + $data['password'] = bcrypt($data['password']); + } else { + session()->flash('warning', trans('shop::app.customer.account.profile.unmatch')); + + return redirect()->back(); + } + } else { + unset($data['password']); + } + + if ($this->customerRepository->update($data, $id)) { + Session()->flash('success', trans('shop::app.customer.account.profile.edit-success')); + + return redirect()->route($this->_config['redirect']); + } else { + Session()->flash('success', trans('shop::app.customer.account.profile.edit-fail')); + + return redirect()->back($this->_config['redirect']); + } + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $id = auth()->guard('customer')->user()->id; + + $data = request()->all(); + + $customerRepository = $this->customerRepository->findorFail($id); + + try { + if (Hash::check($data['password'], $customerRepository->password)) { + $orders = $customerRepository->all_orders->whereIn('status', ['pending', 'processing'])->first(); + + if ($orders) { + session()->flash('error', trans('admin::app.response.order-pending')); + + return redirect()->route($this->_config['redirect']); + } else { + $this->customerRepository->delete($id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Customer'])); + + return redirect()->route('customer.session.index'); + } + } else { + session()->flash('error', trans('shop::app.customer.account.address.delete.wrong-password')); + + return redirect()->back(); + } + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Customer'])); + + return redirect()->route($this->_config['redirect']); + } + } + + /** + * Load the view for the customer account panel, showing approved reviews. + * + * @return \Illuminate\View\View + */ + public function reviews() + { + $reviews = $this->productReviewRepository->getCustomerReview(); + + return view($this->_config['view'], compact('reviews')); + } +} diff --git a/packages/Webkul/Customer/src/Http/Controllers/ForgotPasswordController.php b/packages/Webkul/Customer/src/Http/Controllers/ForgotPasswordController.php new file mode 100755 index 000000000..9c7c9333b --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/ForgotPasswordController.php @@ -0,0 +1,89 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ForgotPasswordController extends Controller +{ + + use SendsPasswordResetEmails; + + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->_config = request('_config'); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + try { + $this->validate(request(), [ + 'email' => 'required|email' + ]); + + $response = $this->broker()->sendResetLink( + request(['email']) + ); + + if ($response == Password::RESET_LINK_SENT) { + session()->flash('success', trans($response)); + + return back(); + } + + return back() + ->withInput(request(['email'])) + ->withErrors( + ['email' => trans($response)] + ); + } catch (\Exception $e) { + session()->flash('error', trans($e->getMessage())); + + return redirect()->back(); + } + } + + /** + * Get the broker to be used during password reset. + * + * @return \Illuminate\Contracts\Auth\PasswordBroker + */ + public function broker() + { + return Password::broker('customers'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php b/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php new file mode 100755 index 000000000..7d33eb61b --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php @@ -0,0 +1,185 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class RegistrationController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * CustomerRepository object + * + * @var Object + */ + protected $customerRepository; + + /** + * CustomerGroupRepository object + * + * @var Object + */ + protected $customerGroupRepository; + + /** + * Create a new Repository instance. + * + * @param \Webkul\Customer\Repositories\CustomerRepository $customer + * @param \Webkul\Customer\Repositories\CustomerGroupRepository $customerGroupRepository + * @return void + */ + public function __construct( + CustomerRepository $customerRepository, + CustomerGroupRepository $customerGroupRepository + ) + { + $this->_config = request('_config'); + + $this->customerRepository = $customerRepository; + + $this->customerGroupRepository = $customerGroupRepository; + } + + /** + * Opens up the user's sign up form. + * + * @return \Illuminate\View\View + */ + public function show() + { + return view($this->_config['view']); + } + + /** + * Method to store user's sign up form data to DB. + * + * @return Response + */ + public function create() + { + $this->validate(request(), [ + 'first_name' => 'string|required', + 'last_name' => 'string|required', + 'email' => 'email|required|unique:customers,email', + 'password' => 'confirmed|min:6|required', + ]); + + $data = request()->input(); + + $data['password'] = bcrypt($data['password']); + + if (core()->getConfigData('customer.settings.email.verification')) { + $data['is_verified'] = 0; + } else { + $data['is_verified'] = 1; + } + + $data['customer_group_id'] = $this->customerGroupRepository->findOneWhere(['code' => 'general'])->id; + + $verificationData['email'] = $data['email']; + $verificationData['token'] = md5(uniqid(rand(), true)); + $data['token'] = $verificationData['token']; + + Event::dispatch('customer.registration.before'); + + $customer = $this->customerRepository->create($data); + + Event::dispatch('customer.registration.after', $customer); + + if ($customer) { + if (core()->getConfigData('customer.settings.email.verification')) { + try { + Mail::queue(new VerificationEmail($verificationData)); + + session()->flash('success', trans('shop::app.customer.signup-form.success-verify')); + } catch (\Exception $e) { + session()->flash('info', trans('shop::app.customer.signup-form.success-verify-email-unsent')); + } + } else { + try { + Mail::queue(new RegistrationEmail(request()->all())); + + session()->flash('success', trans('shop::app.customer.signup-form.success-verify')); //customer registered successfully + } catch (\Exception $e) { + session()->flash('info', trans('shop::app.customer.signup-form.success-verify-email-unsent')); + } + + + session()->flash('success', trans('shop::app.customer.signup-form.success')); + } + + return redirect()->route($this->_config['redirect']); + } else { + session()->flash('error', trans('shop::app.customer.signup-form.failed')); + + return redirect()->back(); + } + } + + /** + * Method to verify account + * + * @param string $token + */ + public function verifyAccount($token) + { + $customer = $this->customerRepository->findOneByField('token', $token); + + if ($customer) { + $customer->update(['is_verified' => 1, 'token' => 'NULL']); + + session()->flash('success', trans('shop::app.customer.signup-form.verified')); + } else { + session()->flash('warning', trans('shop::app.customer.signup-form.verify-failed')); + } + + return redirect()->route('customer.session.index'); + } + + public function resendVerificationEmail($email) + { + $verificationData['email'] = $email; + $verificationData['token'] = md5(uniqid(rand(), true)); + + $customer = $this->customerRepository->findOneByField('email', $email); + + $this->customerRepository->update(['token' => $verificationData['token']], $customer->id); + + try { + Mail::queue(new VerificationEmail($verificationData)); + + if (Cookie::has('enable-resend')) { + \Cookie::queue(\Cookie::forget('enable-resend')); + } + + if (Cookie::has('email-for-resend')) { + \Cookie::queue(\Cookie::forget('email-for-resend')); + } + } catch (\Exception $e) { + session()->flash('error', trans('shop::app.customer.signup-form.verification-not-sent')); + + return redirect()->back(); + } + session()->flash('success', trans('shop::app.customer.signup-form.verification-sent')); + + return redirect()->back(); + } +} diff --git a/packages/Webkul/Customer/src/Http/Controllers/ResetPasswordController.php b/packages/Webkul/Customer/src/Http/Controllers/ResetPasswordController.php new file mode 100755 index 000000000..73e47ef7f --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/ResetPasswordController.php @@ -0,0 +1,113 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ResetPasswordController extends Controller +{ + use ResetsPasswords; + + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->_config = request('_config'); + } + + /** + * Display the password reset view for the given token. + * + * If no token is present, display the link request form. + * + * @param string|null $token + * @return \Illuminate\View\View + */ + public function create($token = null) + { + return view($this->_config['view'])->with( + ['token' => $token, 'email' => request('email')] + ); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'token' => 'required', + 'email' => 'required|email', + 'password' => 'required|confirmed|min:6', + ]); + + $response = $this->broker()->reset( + request(['email', 'password', 'password_confirmation', 'token']), function ($customer, $password) { + $this->resetPassword($customer, $password); + } + ); + + if ($response == Password::PASSWORD_RESET) { + return redirect()->route($this->_config['redirect']); + } + + return back() + ->withInput(request(['email'])) + ->withErrors([ + 'email' => trans($response) + ]); + } + + /** + * Reset the given customer password. + * + * @param \Illuminate\Contracts\Auth\CanResetPassword $customer + * @param string $password + * @return void + */ + protected function resetPassword($customer, $password) + { + $customer->password = Hash::make($password); + + $customer->setRememberToken(Str::random(60)); + + $customer->save(); + + event(new PasswordReset($customer)); + + auth()->guard('customer')->login($customer); + } + + /** + * Get the broker to be used during password reset. + * + * @return \Illuminate\Contracts\Auth\PasswordBroker + */ + public function broker() + { + return Password::broker('customers'); + } + +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Http/Controllers/SessionController.php b/packages/Webkul/Customer/src/Http/Controllers/SessionController.php new file mode 100755 index 000000000..05f43a5ff --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/SessionController.php @@ -0,0 +1,107 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class SessionController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new Repository instance. + * + * @return void + */ + public function __construct() + { + $this->middleware('customer')->except(['show','create']); + + $this->_config = request('_config'); + } + + /** + * Display the resource. + * + * @return \Illuminate\View\View + */ + public function show() + { + if (auth()->guard('customer')->check()) { + return redirect()->route('customer.profile.index'); + } else { + return view($this->_config['view']); + } + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $this->validate(request(), [ + 'email' => 'required|email', + 'password' => 'required' + ]); + + if (! auth()->guard('customer')->attempt(request(['email', 'password']))) { + session()->flash('error', trans('shop::app.customer.login-form.invalid-creds')); + + return redirect()->back(); + } + + if (auth()->guard('customer')->user()->status == 0) { + auth()->guard('customer')->logout(); + + session()->flash('warning', trans('shop::app.customer.login-form.not-activated')); + + return redirect()->back(); + } + + if (auth()->guard('customer')->user()->is_verified == 0) { + session()->flash('info', trans('shop::app.customer.login-form.verify-first')); + + Cookie::queue(Cookie::make('enable-resend', 'true', 1)); + + Cookie::queue(Cookie::make('email-for-resend', request('email'), 1)); + + auth()->guard('customer')->logout(); + + return redirect()->back(); + } + + //Event passed to prepare cart after login + Event::dispatch('customer.after.login', request('email')); + + return redirect()->intended(route($this->_config['redirect'])); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + auth()->guard('customer')->logout(); + + Event::dispatch('customer.after.logout', $id); + + return redirect()->route($this->_config['redirect']); + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php b/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php new file mode 100755 index 000000000..f9362e68d --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php @@ -0,0 +1,196 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class WishlistController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * ProductRepository object + * + * @var Object + */ + protected $wishlistRepository; + + /** + * WishlistRepository object + * + * @var Object + */ + protected $productRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Customer\Repositories\WishlistRepository $wishlistRepository + * @param \Webkul\Product\Repositories\ProductRepository $productRepository + * @return void + */ + public function __construct( + WishlistRepository $wishlistRepository, + ProductRepository $productRepository + ) + { + $this->middleware('customer'); + + $this->_config = request('_config'); + + $this->wishlistRepository = $wishlistRepository; + + $this->productRepository = $productRepository; + } + + /** + * Displays the listing resources if the customer having items in wishlist. + * + * @return \Illuminate\View\View + */ + public function index() + { + $wishlistItems = $this->wishlistRepository->getCustomerWhishlist(); + + return view($this->_config['view'])->with('items', $wishlistItems); + } + + /** + * Function to add item to the wishlist. + * + * @param integer $itemId + */ + public function add($itemId) + { + $product = $this->productRepository->findOneByField('id', $itemId); + + if (! $product->status) + return redirect()->back(); + + $data = [ + 'channel_id' => core()->getCurrentChannel()->id, + 'product_id' => $itemId, + 'customer_id' => auth()->guard('customer')->user()->id + ]; + + $checked = $this->wishlistRepository->findWhere([ + 'channel_id' => core()->getCurrentChannel()->id, + 'product_id' => $itemId, + 'customer_id' => auth()->guard('customer')->user()->id + ]); + + //accidental case if some one adds id of the product in the anchor tag amd gives id of a variant. + if ($product->parent_id != null) { + $product = $this->productRepository->findOneByField('id', $product->parent_id); + $data['product_id'] = $product->id; + } + + if ($checked->isEmpty()) { + if ($this->wishlistRepository->create($data)) { + session()->flash('success', trans('customer::app.wishlist.success')); + + return redirect()->back(); + } else { + session()->flash('error', trans('customer::app.wishlist.failure')); + + return redirect()->back(); + } + } else { + session()->flash('warning', trans('customer::app.wishlist.already')); + + return redirect()->back(); + } + } + + /** + * Function to remove item to the wishlist. + * + * @param integer $itemId + */ + public function remove($itemId) + { + $customerWishlistItems = auth()->guard('customer')->user()->wishlist_items; + + foreach ($customerWishlistItems as $customerWishlistItem) { + if ($itemId == $customerWishlistItem->id) { + $this->wishlistRepository->delete($itemId); + + session()->flash('success', trans('customer::app.wishlist.removed')); + + return redirect()->back(); + } + } + + session()->flash('error', trans('customer::app.wishlist.remove-fail')); + + return redirect()->back(); + } + + /** + * Function to move item from wishlist to cart. + * + * @param integer $itemId + */ + public function move($itemId) + { + $wishlistItem = $this->wishlistRepository->findOneWhere([ + 'id' => $itemId, + 'customer_id' => auth()->guard('customer')->user()->id + ]); + + if (! $wishlistItem) + abort(404); + + try { + $result = Cart::moveToCart($wishlistItem); + + if ($result) { + session()->flash('success', trans('shop::app.customer.account.wishlist.moved')); + } else { + session()->flash('info', trans('shop::app.checkout.cart.integrity.missing_options')); + + return redirect()->route('shop.productOrCategory.index', $wishlistItem->product->url_key); + } + + return redirect()->back(); + } catch (\Exception $e) { + session()->flash('warning', $e->getMessage()); + + return redirect()->route('shop.productOrCategory.index', ['slugOrPath' => $wishlistItem->product->url_key]); + } + } + + /** + * Function to remove all of the items items in the customer's wishlist + * + * @return Mixed Response & Boolean + */ + public function removeAll() + { + $wishlistItems = auth()->guard('customer')->user()->wishlist_items; + + if ($wishlistItems->count() > 0) { + foreach ($wishlistItems as $wishlistItem) { + $this->wishlistRepository->delete($wishlistItem->id); + } + } + + session()->flash('success', trans('customer::app.wishlist.remove-all-success')); + + return redirect()->back(); + } +} diff --git a/packages/Webkul/Customer/src/Http/Middleware/RedirectIfNotCustomer.php b/packages/Webkul/Customer/src/Http/Middleware/RedirectIfNotCustomer.php new file mode 100755 index 000000000..38adeb4e3 --- /dev/null +++ b/packages/Webkul/Customer/src/Http/Middleware/RedirectIfNotCustomer.php @@ -0,0 +1,33 @@ +check()) { + return redirect()->route('customer.session.index'); + } else { + if (Auth::guard($guard)->user()->status == 0) { + Auth::guard($guard)->logout(); + + session()->flash('warning', trans('shop::app.customer.login-form.not-activated')); + return redirect()->route('customer.session.index'); + } + } + + return $next($request); + } +} diff --git a/packages/Webkul/Customer/src/Mail/RegistrationEmail.php b/packages/Webkul/Customer/src/Mail/RegistrationEmail.php new file mode 100644 index 000000000..624d9fabe --- /dev/null +++ b/packages/Webkul/Customer/src/Mail/RegistrationEmail.php @@ -0,0 +1,37 @@ +data = $data; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + return $this->to($this->data['email']) + ->subject(trans('shop::app.mail.customer.registration.customer-registration')) + ->view('shop::emails.customer.registration')->with('data', $this->data); + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Mail/VerificationEmail.php b/packages/Webkul/Customer/src/Mail/VerificationEmail.php new file mode 100755 index 000000000..99f7a5eea --- /dev/null +++ b/packages/Webkul/Customer/src/Mail/VerificationEmail.php @@ -0,0 +1,37 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class VerificationEmail extends Mailable +{ + use Queueable, SerializesModels; + + public $verificationData; + + public function __construct($verificationData) { + $this->verificationData = $verificationData; + } + + /** + * Build the message. + * + * @return \Illuminate\View\View + */ + public function build() + { + return $this->to($this->verificationData['email']) + ->subject(trans('shop::app.mail.customer.verification.subject')) + ->view('shop::emails.customer.verification-email')->with('data', ['email' => $this->verificationData['email'], 'token' => $this->verificationData['token']]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Models/Customer.php b/packages/Webkul/Customer/src/Models/Customer.php new file mode 100755 index 000000000..6e653ca53 --- /dev/null +++ b/packages/Webkul/Customer/src/Models/Customer.php @@ -0,0 +1,140 @@ +first_name) . ' ' . ucfirst($this->last_name); + } + + /** + * Email exists or not + */ + public function emailExists($email) { + $results = $this->where('email', $email); + + if ($results->count() == 0) { + return false; + } else { + return true; + } + } + + /** + * Get the customer group that owns the customer. + */ + public function group() + { + return $this->belongsTo(CustomerGroupProxy::modelClass(), 'customer_group_id'); + } + + /** + * Send the password reset notification. + * + * @param string $token + * @return void + */ + public function sendPasswordResetNotification($token) + { + $this->notify(new CustomerResetPassword($token)); + } + + /** + * Get the customer address that owns the customer. + */ + public function addresses() + { + return $this->hasMany(CustomerAddressProxy::modelClass(), 'customer_id'); + } + + /** + * Get default customer address that owns the customer. + */ + public function default_address() + { + return $this->hasOne(CustomerAddressProxy::modelClass(), 'customer_id')->where('default_address', 1); + } + + /** + * Customer's relation with wishlist items + */ + public function wishlist_items() { + return $this->hasMany(WishlistProxy::modelClass(), 'customer_id'); + } + + /** + * get all cart inactive cart instance of a customer + */ + public function all_carts() { + return $this->hasMany(CartProxy::modelClass(), 'customer_id'); + } + + /** + * get inactive cart inactive cart instance of a customer + */ + public function inactive_carts() { + return $this->hasMany(CartProxy::modelClass(), 'customer_id')->where('is_active', 0); + } + + /** + * get active cart inactive cart instance of a customer + */ + public function active_carts() { + return $this->hasMany(CartProxy::modelClass(), 'customer_id')->where('is_active', 1); + } + + /** + * get all reviews of a customer + */ + public function all_reviews() { + return $this->hasMany(ProductReviewProxy::modelClass(), 'customer_id'); + } + + /** + * get all orders of a customer + */ + public function all_orders() { + return $this->hasMany(OrderProxy::modelClass(), 'customer_id'); + } + + /** + * Get the identifier that will be stored in the subject claim of the JWT. + * + * @return mixed + */ + public function getJWTIdentifier() + { + return $this->getKey(); + } + + /** + * Return a key value array, containing any custom claims to be added to the JWT. + * + * @return array + */ + public function getJWTCustomClaims() + { + return []; + } +} diff --git a/packages/Webkul/Customer/src/Models/CustomerAddress.php b/packages/Webkul/Customer/src/Models/CustomerAddress.php new file mode 100755 index 000000000..f40fe6caa --- /dev/null +++ b/packages/Webkul/Customer/src/Models/CustomerAddress.php @@ -0,0 +1,12 @@ +hasMany(CustomerProxy::modelClass()); + } +} diff --git a/packages/Webkul/Customer/src/Models/CustomerGroupProxy.php b/packages/Webkul/Customer/src/Models/CustomerGroupProxy.php new file mode 100644 index 000000000..04bd610d6 --- /dev/null +++ b/packages/Webkul/Customer/src/Models/CustomerGroupProxy.php @@ -0,0 +1,10 @@ + 'array', + ]; + + protected $fillable = ['channel_id', 'product_id', 'customer_id', 'additional', 'moved_to_cart', 'shared', 'time_of_moving']; + + /** + * The Product that belong to the wishlist. + */ + public function product() + { + return $this->hasOne(ProductProxy::modelClass(), 'id', 'product_id'); + } +} diff --git a/packages/Webkul/Customer/src/Models/WishlistProxy.php b/packages/Webkul/Customer/src/Models/WishlistProxy.php new file mode 100644 index 000000000..fea4acb1c --- /dev/null +++ b/packages/Webkul/Customer/src/Models/WishlistProxy.php @@ -0,0 +1,10 @@ +token); + } + + return (new MailMessage) + ->subject(__('shop::app.mail.forget-password.subject') ) + ->view('shop::emails.customer.forget-password', [ + 'user_name' => $notifiable->name, + 'token' => $this->token + ]); + } +} diff --git a/packages/Webkul/Customer/src/Providers/CustomerServiceProvider.php b/packages/Webkul/Customer/src/Providers/CustomerServiceProvider.php new file mode 100755 index 000000000..7311c808c --- /dev/null +++ b/packages/Webkul/Customer/src/Providers/CustomerServiceProvider.php @@ -0,0 +1,19 @@ +aliasMiddleware('customer', RedirectIfNotCustomer::class); + + $this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'customer'); + + $this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + } +} diff --git a/packages/Webkul/Customer/src/Providers/ModuleServiceProvider.php b/packages/Webkul/Customer/src/Providers/ModuleServiceProvider.php new file mode 100644 index 000000000..4280411fc --- /dev/null +++ b/packages/Webkul/Customer/src/Providers/ModuleServiceProvider.php @@ -0,0 +1,15 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class CustomerAddressRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + + function model() + { + return 'Webkul\Customer\Contracts\CustomerAddress'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + Event::dispatch('customer.addresses.create.before'); + + if ( isset($data['default_address']) ) { + $data['default_address'] = 1; + } else { + $data['default_address'] = 0; + } + + $default_address = $this->findWhere(['customer_id' => $data['customer_id'], 'default_address' => 1])->first(); + + if ( isset($default_address->id) && $data['default_address'] ) { + $default_address->update(['default_address' => 0]); + } + + $address = $this->model->create($data); + + Event::dispatch('customer.addresses.create.after', $address); + + return $address; + } + + /** + * @param array $data + * @param $id + * @return mixed + */ + public function update(array $data, $id) + { + $address = $this->find($id); + + Event::dispatch('customer.addresses.update.before', $id); + + if (isset($data['default_address']) ) { + $data['default_address'] = 1; + } else { + $data['default_address'] = 0; + } + + $default_address = $this->findWhere(['customer_id' => $address->customer_id, 'default_address' => 1])->first(); + + if ( isset($default_address->id) && $data['default_address'] ) { + if ( $default_address->id != $address->id ) { + $default_address->update(['default_address' => 0]); + } + $address->update($data); + } else { + $address->update($data); + } + + Event::dispatch('customer.addresses.update.after', $id); + + return $address; + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Repositories/CustomerGroupRepository.php b/packages/Webkul/Customer/src/Repositories/CustomerGroupRepository.php new file mode 100755 index 000000000..ea5b06c80 --- /dev/null +++ b/packages/Webkul/Customer/src/Repositories/CustomerGroupRepository.php @@ -0,0 +1,54 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class CustomerGroupRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + + function model() + { + return 'Webkul\Customer\Contracts\CustomerGroup'; + } + + /** + * @param array $data + * @return mixed + */ + + public function create(array $data) + { + $customer = $this->model->create($data); + + return $customer; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + + public function update(array $data, $id, $attribute = "id") + { + $customer = $this->find($id); + + $customer->update($data); + + return $customer; + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Repositories/CustomerRepository.php b/packages/Webkul/Customer/src/Repositories/CustomerRepository.php new file mode 100755 index 000000000..f5e2fae5b --- /dev/null +++ b/packages/Webkul/Customer/src/Repositories/CustomerRepository.php @@ -0,0 +1,25 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CustomerRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + + function model() + { + return 'Webkul\Customer\Contracts\Customer'; + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Repositories/WishlistRepository.php b/packages/Webkul/Customer/src/Repositories/WishlistRepository.php new file mode 100755 index 000000000..a491d3828 --- /dev/null +++ b/packages/Webkul/Customer/src/Repositories/WishlistRepository.php @@ -0,0 +1,76 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class WishlistRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + + function model() + { + return 'Webkul\Customer\Contracts\Wishlist'; + } + + /** + * @param array $data + * @return mixed + */ + + public function create(array $data) + { + $wishlist = $this->model->create($data); + + return $wishlist; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + + public function update(array $data, $id, $attribute = "id") + { + $wishlist = $this->find($id); + + $wishlist->update($data); + + return $wishlist; + } + + /** + * To retrieve products with wishlist m + * for a listing resource. + * + * @param integer $id + */ + public function getItemsWithProducts($id) { + return $this->model->find($id)->item_wishlist; + } + + /** + * get customer wishlist Items. + * + * @return mixed + */ + public function getCustomerWhishlist() { + return $this->model->where([ + 'channel_id' => core()->getCurrentChannel()->id, + 'customer_id' => auth()->guard('customer')->user()->id + ])->paginate(5); + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Resources/lang/en/app.php b/packages/Webkul/Customer/src/Resources/lang/en/app.php new file mode 100755 index 000000000..22f609f5e --- /dev/null +++ b/packages/Webkul/Customer/src/Resources/lang/en/app.php @@ -0,0 +1,17 @@ + [ + 'success' => 'Item Successfully Added To Wishlist', + 'failure' => 'Item Cannot Be Added To Wishlist', + 'already' => 'Item Already Present In Your Wishlist', + 'removed' => 'Item Successfully Removed From Wishlist', + 'remove-fail' => 'Item Cannot Be Removed From Wishlist', + 'empty' => 'You Don\'t Have Any Items In Your Wishlist', + 'select-options' => 'Need To Select Options Before Adding To Wishlist', + 'remove-all-success' => 'All The Items From Your Wishlist Have Been Removed', + ], + 'reviews' => [ + 'empty' => 'You have not reviewed any of product yet' + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Customer/src/Resources/lang/pt_BR/app.php new file mode 100755 index 000000000..4f2263f77 --- /dev/null +++ b/packages/Webkul/Customer/src/Resources/lang/pt_BR/app.php @@ -0,0 +1,17 @@ + [ + 'success' => 'Item adicionado com sucesso à lista de desejos', + 'failure' => 'Item não pode ser adicionado à lista de desejos', + 'already' => 'Item já presente em sua lista de desejos', + 'removed' => 'Item removido com sucesso da lista de desejos', + 'remove-fail' => 'Item não pode ser removido da lista de desejos', + 'empty' => 'Você não tem nenhum item em sua lista de desejos', + 'select-options' => 'Precisa selecionar opções antes de adicionar à lista de desejos', + 'remove-all-success' => 'Todos os itens da sua lista de desejos foram removidos', + ], + 'reviews' => [ + 'empty' => 'Você não avaliou nenhum produto ainda' + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Customer/src/resources/manifest.php b/packages/Webkul/Customer/src/resources/manifest.php new file mode 100644 index 000000000..c732276af --- /dev/null +++ b/packages/Webkul/Customer/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto Customer', + 'version' => '0.0.1' + ]; diff --git a/packages/Webkul/Inventory/.gitignore b/packages/Webkul/Inventory/.gitignore new file mode 100755 index 000000000..30bc16279 --- /dev/null +++ b/packages/Webkul/Inventory/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/packages/Webkul/Inventory/composer.json b/packages/Webkul/Inventory/composer.json new file mode 100755 index 000000000..b5aeee94a --- /dev/null +++ b/packages/Webkul/Inventory/composer.json @@ -0,0 +1,27 @@ +{ + "name": "bagisto/laravel-inventory", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": { + "propaganistas/laravel-intl": "^2.0" + }, + "autoload": { + "psr-4": { + "Webkul\\Inventory\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Inventory\\InventoryServiceProvider" + ], + "aliases": {} + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Inventory/src/Contracts/InventorySource.php b/packages/Webkul/Inventory/src/Contracts/InventorySource.php new file mode 100644 index 000000000..e75e509ec --- /dev/null +++ b/packages/Webkul/Inventory/src/Contracts/InventorySource.php @@ -0,0 +1,7 @@ +increments('id'); + $table->string('code')->unique(); + $table->string('name'); + $table->text('description')->nullable(); + $table->string('contact_name'); + $table->string('contact_email'); + $table->string('contact_number'); + $table->string('contact_fax')->nullable(); + $table->string('country'); + $table->string('state'); + $table->string('city'); + $table->string('street'); + $table->string('postcode'); + $table->integer('priority')->default(0); + $table->decimal('latitude', 10, 5)->nullable(); + $table->decimal('longitude', 10, 5)->nullable(); + $table->boolean('status')->default(1); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('inventory_sources'); + } +} diff --git a/packages/Webkul/Inventory/src/Database/Seeders/DatabaseSeeder.php b/packages/Webkul/Inventory/src/Database/Seeders/DatabaseSeeder.php new file mode 100755 index 000000000..0dbc8a344 --- /dev/null +++ b/packages/Webkul/Inventory/src/Database/Seeders/DatabaseSeeder.php @@ -0,0 +1,18 @@ +call(InventoryTableSeeder::class); + } +} diff --git a/packages/Webkul/Inventory/src/Database/Seeders/InventoryTableSeeder.php b/packages/Webkul/Inventory/src/Database/Seeders/InventoryTableSeeder.php new file mode 100755 index 000000000..e5493fcde --- /dev/null +++ b/packages/Webkul/Inventory/src/Database/Seeders/InventoryTableSeeder.php @@ -0,0 +1,29 @@ +delete(); + + DB::table('inventory_sources')->insert([ + 'id' => 1, + 'code' => 'default', + 'name' => 'Default', + 'contact_name' => 'Detroit Warehouse', + 'contact_email' => 'warehouse@example.com', + 'contact_number' => 1234567899, + 'status' => 1, + 'country' => 'US', + 'state' => 'MI', + 'street' => '12th Street', + 'city' => 'Detroit', + 'postcode' => '48127', + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Inventory/src/Http/Controllers/Controller.php b/packages/Webkul/Inventory/src/Http/Controllers/Controller.php new file mode 100755 index 000000000..cdfffe386 --- /dev/null +++ b/packages/Webkul/Inventory/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class InventorySourceController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * InventorySourceRepository object + * + * @var array + */ + protected $inventorySourceRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Inventory\Repositories\InventorySourceRepository $inventorySourceRepository + * @return void + */ + public function __construct(InventorySourceRepository $inventorySourceRepository) + { + $this->inventorySourceRepository = $inventorySourceRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'code' => ['required', 'unique:inventory_sources,code', new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required', + 'contact_name' => 'required', + 'contact_email' => 'required|email', + 'contact_number' => 'required', + 'street' => 'required', + 'country' => 'required', + 'state' => 'required', + 'city' => 'required', + 'postcode' => 'required' + ]); + + $data = request()->all(); + + $data['status'] = !isset($data['status']) ? 0 : 1; + + Event::dispatch('inventory.inventory_source.create.before'); + + $inventorySource = $this->inventorySourceRepository->create($data); + + Event::dispatch('inventory.inventory_source.create.after', $inventorySource); + + session()->flash('success', trans('admin::app.settings.inventory_sources.create-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $inventorySource = $this->inventorySourceRepository->findOrFail($id); + + return view($this->_config['view'], compact('inventorySource')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $this->validate(request(), [ + 'code' => ['required', 'unique:inventory_sources,code,' . $id, new \Webkul\Core\Contracts\Validations\Code], + 'name' => 'required', + 'contact_name' => 'required', + 'contact_email' => 'required|email', + 'contact_number' => 'required', + 'street' => 'required', + 'country' => 'required', + 'state' => 'required', + 'city' => 'required', + 'postcode' => 'required' + ]); + + $data = request()->all(); + + $data['status'] = !isset($data['status']) ? 0 : 1; + + Event::dispatch('inventory.inventory_source.update.before', $id); + + $inventorySource = $this->inventorySourceRepository->update($data, $id); + + Event::dispatch('inventory.inventory_source.update.after', $inventorySource); + + session()->flash('success', trans('admin::app.settings.inventory_sources.update-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $inventorySource = $this->inventorySourceRepository->findOrFail($id); + + if ($this->inventorySourceRepository->count() == 1) { + session()->flash('error', trans('admin::app.settings.inventory_sources.last-delete-error')); + } else { + try { + Event::dispatch('inventory.inventory_source.delete.before', $id); + + $this->inventorySourceRepository->delete($id); + + Event::dispatch('inventory.inventory_source.delete.after', $id); + + session()->flash('success', trans('admin::app.settings.inventory_sources.delete-success')); + + return response()->json(['message' => true], 200); + } catch (\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Inventory source'])); + } + } + + return response()->json(['message' => false], 400); + } +} \ No newline at end of file diff --git a/packages/Webkul/Inventory/src/Models/InventorySource.php b/packages/Webkul/Inventory/src/Models/InventorySource.php new file mode 100755 index 000000000..6ab8922ed --- /dev/null +++ b/packages/Webkul/Inventory/src/Models/InventorySource.php @@ -0,0 +1,11 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + } +} \ No newline at end of file diff --git a/packages/Webkul/Inventory/src/Providers/ModuleServiceProvider.php b/packages/Webkul/Inventory/src/Providers/ModuleServiceProvider.php new file mode 100644 index 000000000..5d9b7d661 --- /dev/null +++ b/packages/Webkul/Inventory/src/Providers/ModuleServiceProvider.php @@ -0,0 +1,12 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class InventorySourceRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Inventory\Contracts\InventorySource'; + } +} \ No newline at end of file diff --git a/packages/Webkul/Inventory/src/resources/manifest.php b/packages/Webkul/Inventory/src/resources/manifest.php new file mode 100644 index 000000000..dbad5913f --- /dev/null +++ b/packages/Webkul/Inventory/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto Inventory', + 'version' => '0.0.1' + ]; diff --git a/packages/Webkul/Payment/composer.json b/packages/Webkul/Payment/composer.json new file mode 100755 index 000000000..4a0cec629 --- /dev/null +++ b/packages/Webkul/Payment/composer.json @@ -0,0 +1,27 @@ +{ + "name": "bagisto/laravel-payment", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\Payment\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Payment\\Providers\\PaymentServiceProvider" + ], + "aliases": { + "Bouncer": "Webkul\\Payment\\Facades\\Bouncer" + } + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Payment/src/Config/paymentmethods.php b/packages/Webkul/Payment/src/Config/paymentmethods.php new file mode 100755 index 000000000..864751d7a --- /dev/null +++ b/packages/Webkul/Payment/src/Config/paymentmethods.php @@ -0,0 +1,31 @@ + [ + 'code' => 'cashondelivery', + 'title' => 'Cash On Delivery', + 'description' => 'shop::app.checkout.onepage.cash-desc', + 'class' => 'Webkul\Payment\Payment\CashOnDelivery', + 'active' => true, + 'sort' => 1 + ], + + 'moneytransfer' => [ + 'code' => 'moneytransfer', + 'title' => 'Money Transfer', + 'description' => 'shop::app.checkout.onepage.money-desc', + 'class' => 'Webkul\Payment\Payment\MoneyTransfer', + 'active' => true, + 'sort' => 2 + ], + + 'paypal_standard' => [ + 'code' => 'paypal_standard', + 'title' => 'Paypal Standard', + 'description' => 'shop::app.checkout.onepage.paypal-desc', + 'class' => 'Webkul\Paypal\Payment\Standard', + 'sandbox' => true, + 'active' => true, + 'business_account' => 'test@webkul.com', + 'sort' => 3 + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Payment/src/Config/system.php b/packages/Webkul/Payment/src/Config/system.php new file mode 100755 index 000000000..6fc22a4a2 --- /dev/null +++ b/packages/Webkul/Payment/src/Config/system.php @@ -0,0 +1,200 @@ + 'sales', + 'name' => 'admin::app.admin.system.sales', + 'sort' => 1 + ], [ + 'key' => 'sales.paymentmethods', + 'name' => 'admin::app.admin.system.payment-methods', + 'sort' => 2, + ], [ + 'key' => 'sales.paymentmethods.cashondelivery', + 'name' => 'admin::app.admin.system.cash-on-delivery', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'title', + 'title' => 'admin::app.admin.system.title', + 'type' => 'text', + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'description', + 'title' => 'admin::app.admin.system.description', + 'type' => 'textarea', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'active', + 'title' => 'admin::app.admin.system.status', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'Active', + 'value' => true + ], [ + 'title' => 'Inactive', + 'value' => false + ] + ], + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'sort', + 'title' => 'admin::app.admin.system.sort_order', + 'type' => 'select', + 'options' => [ + [ + 'title' => '1', + 'value' => 1 + ], [ + 'title' => '2', + 'value' => 2 + ], [ + 'title' => '3', + 'value' => 3 + ], [ + 'title' => '4', + 'value' => 4 + ] + ], + ] + ] + ], [ + 'key' => 'sales.paymentmethods.moneytransfer', + 'name' => 'admin::app.admin.system.money-transfer', + 'sort' => 2, + 'fields' => [ + [ + 'name' => 'title', + 'title' => 'admin::app.admin.system.title', + 'type' => 'text', + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'description', + 'title' => 'admin::app.admin.system.description', + 'type' => 'textarea', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'active', + 'title' => 'admin::app.admin.system.status', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'Active', + 'value' => true + ], [ + 'title' => 'Inactive', + 'value' => false + ] + ], + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'sort', + 'title' => 'admin::app.admin.system.sort_order', + 'type' => 'select', + 'options' => [ + [ + 'title' => '1', + 'value' => 1 + ], [ + 'title' => '2', + 'value' => 2 + ], [ + 'title' => '3', + 'value' => 3 + ], [ + 'title' => '4', + 'value' => 4 + ] + ], + ] + ] + ], [ + 'key' => 'sales.paymentmethods.paypal_standard', + 'name' => 'admin::app.admin.system.paypal-standard', + 'sort' => 3, + 'fields' => [ + [ + 'name' => 'title', + 'title' => 'admin::app.admin.system.title', + 'type' => 'text', + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'description', + 'title' => 'admin::app.admin.system.description', + 'type' => 'textarea', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'business_account', + 'title' => 'admin::app.admin.system.business-account', + 'type' => 'select', + 'type' => 'text', + 'validation' => 'required' + ], [ + 'name' => 'active', + 'title' => 'admin::app.admin.system.status', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'Active', + 'value' => true + ], [ + 'title' => 'Inactive', + 'value' => false + ] + ], + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'sandbox', + 'title' => 'admin::app.admin.system.sandbox', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'Active', + 'value' => true + ], [ + 'title' => 'Inactive', + 'value' => false + ] + ], + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'sort', + 'title' => 'admin::app.admin.system.sort_order', + 'type' => 'select', + 'options' => [ + [ + 'title' => '1', + 'value' => 1 + ], [ + 'title' => '2', + 'value' => 2 + ], [ + 'title' => '3', + 'value' => 3 + ], [ + 'title' => '4', + 'value' => 4 + ] + ], + ] + ] + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Payment/src/Facades/Payment.php b/packages/Webkul/Payment/src/Facades/Payment.php new file mode 100755 index 000000000..ee919d03b --- /dev/null +++ b/packages/Webkul/Payment/src/Facades/Payment.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/packages/Webkul/Payment/src/Payment.php b/packages/Webkul/Payment/src/Payment.php new file mode 100755 index 000000000..e70df5d0b --- /dev/null +++ b/packages/Webkul/Payment/src/Payment.php @@ -0,0 +1,70 @@ +getPaymentMethods(); + + return [ + 'jump_to_section' => 'payment', + 'paymentMethods' => $this->getPaymentMethods(), + 'html' => view('shop::checkout.onepage.payment', compact('paymentMethods'))->render() + ]; + } + + /** + * Returns all supported payment methods + * + * @return array + */ + public function getPaymentMethods() + { + $paymentMethods = []; + + foreach (Config::get('paymentmethods') as $paymentMethod) { + $object = app($paymentMethod['class']); + + if ($object->isAvailable()) { + $paymentMethods[] = [ + 'method' => $object->getCode(), + 'method_title' => $object->getTitle(), + 'description' => $object->getDescription(), + 'sort' => $object->getSortOrder(), + ]; + } + } + + usort ($paymentMethods, function($a, $b) { + if ($a['sort'] == $b['sort']) { + return 0; + } + + return ($a['sort'] < $b['sort']) ? -1 : 1; + }); + + return $paymentMethods; + } + + /** + * Returns payment redirect url if have any + * + * @return array + */ + public function getRedirectUrl($cart) + { + $payment = app(Config::get('paymentmethods.' . $cart->payment->method . '.class')); + + return $payment->getRedirectUrl(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Payment/src/Payment/CashOnDelivery.php b/packages/Webkul/Payment/src/Payment/CashOnDelivery.php new file mode 100755 index 000000000..e0e3558b7 --- /dev/null +++ b/packages/Webkul/Payment/src/Payment/CashOnDelivery.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class CashOnDelivery extends Payment +{ + /** + * Payment method code + * + * @var string + */ + protected $code = 'cashondelivery'; + + public function getRedirectUrl() + { + + } +} \ No newline at end of file diff --git a/packages/Webkul/Payment/src/Payment/MoneyTransfer.php b/packages/Webkul/Payment/src/Payment/MoneyTransfer.php new file mode 100755 index 000000000..abf74876b --- /dev/null +++ b/packages/Webkul/Payment/src/Payment/MoneyTransfer.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class MoneyTransfer extends Payment +{ + /** + * Payment method code + * + * @var string + */ + protected $code = 'moneytransfer'; + + public function getRedirectUrl() + { + + } +} \ No newline at end of file diff --git a/packages/Webkul/Payment/src/Payment/Payment.php b/packages/Webkul/Payment/src/Payment/Payment.php new file mode 100755 index 000000000..898fe64ce --- /dev/null +++ b/packages/Webkul/Payment/src/Payment/Payment.php @@ -0,0 +1,122 @@ +getConfigData('active'); + } + + /** + * Returns payment method code + * + * @return array + */ + public function getCode() + { + if (empty($this->code)) { + // throw exception + } + + return $this->code; + } + + /** + * Returns payment method title + * + * @return array + */ + public function getTitle() + { + return $this->getConfigData('title'); + } + + /** + * Returns payment method description + * + * @return array + */ + public function getDescription() + { + return $this->getConfigData('description'); + } + + /** + * Retrieve information from payment configuration + * + * @param string $field + * @param int|string|null $channelId + * + * @return mixed + */ + public function getConfigData($field) + { + return core()->getConfigData('sales.paymentmethods.' . $this->getCode() . '.' . $field); + } + + abstract public function getRedirectUrl(); + + /** + * Assign cart + * + * @var void + */ + public function setCart() + { + if (! $this->cart) + $this->cart = Cart::getCart(); + } + + /** + * Returns cart insrance + * + * @var mixed + */ + public function getCart() + { + if (! $this->cart) + $this->setCart(); + + return $this->cart; + } + + /** + * Return paypal redirect url + * + * @var Collection + */ + public function getCartItems() + { + if (! $this->cart) + $this->setCart(); + + return $this->cart->items; + } + + /** + * Returns payment method sort order + * + * @return int + */ + public function getSortOrder() + { + return $this->getConfigData('sort'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Payment/src/Providers/PaymentServiceProvider.php b/packages/Webkul/Payment/src/Providers/PaymentServiceProvider.php new file mode 100755 index 000000000..2399513bb --- /dev/null +++ b/packages/Webkul/Payment/src/Providers/PaymentServiceProvider.php @@ -0,0 +1,62 @@ +registerFacades(); + + $this->registerConfig(); + } + /** + * Register Bouncer as a singleton. + * + * @return void + */ + protected function registerFacades() + { + $loader = AliasLoader::getInstance(); + $loader->alias('payment', PaymentFacade::class); + + $this->app->singleton('payment', function () { + return new Payment(); + }); + } + /** + * Register package config. + * + * @return void + */ + protected function registerConfig() + { + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/paymentmethods.php', 'paymentmethods' + ); + + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/system.php', 'core' + ); + } +} diff --git a/packages/Webkul/Paypal/src/Helpers/Ipn.php b/packages/Webkul/Paypal/src/Helpers/Ipn.php new file mode 100755 index 000000000..8a0f7257c --- /dev/null +++ b/packages/Webkul/Paypal/src/Helpers/Ipn.php @@ -0,0 +1,176 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Ipn +{ + /** + * Ipn post data + * + * @var array + */ + protected $post; + + /** + * Order object + * + * @var object + */ + protected $order; + + /** + * OrderRepository object + * + * @var object + */ + protected $orderRepository; + + /** + * InvoiceRepository object + * + * @var object + */ + protected $invoiceRepository; + + /** + * Create a new helper instance. + * + * @param Webkul\Sales\Repositories\OrderRepository $orderRepository + * @param Webkul\Sales\Repositories\InvoiceRepository $invoiceRepository + * @return void + */ + public function __construct( + OrderRepository $orderRepository, + InvoiceRepository $invoiceRepository + ) + { + $this->orderRepository = $orderRepository; + + $this->invoiceRepository = $invoiceRepository; + } + + /** + * This function process the ipn sent from paypal end + * + * @param array $post + * @return void + */ + public function processIpn($post) + { + $this->post = $post; + + if (! $this->postBack()) + return; + + try { + if (isset($this->post['txn_type']) && 'recurring_payment' == $this->post['txn_type']) { + + } else { + $this->getOrder(); + + $this->processOrder(); + } + } catch (\Exception $e) { + throw $e; + } + } + + /** + * Load order via ipn invoice id + * + * + * @return void + */ + protected function getOrder() + { + if (empty($this->order)) { + $this->order = $this->orderRepository->findOneByField(['cart_id' => $this->post['invoice']]); + } + } + + /** + * Process order and create invoice + * + * + * @return void + */ + protected function processOrder() + { + if ($this->post['payment_status'] == 'Completed') { + if ($this->post['mc_gross'] != $this->order->grand_total) { + + } else { + $this->orderRepository->update(['status' => 'processing'], $this->order->id); + + if ($this->order->canInvoice()) { + $this->invoiceRepository->create($this->prepareInvoiceData()); + } + } + } + } + + /** + * Prepares order's invoice data for creation + * + * + * @return array + */ + protected function prepareInvoiceData() + { + $invoiceData = [ + "order_id" => $this->order->id + ]; + + foreach ($this->order->items as $item) { + $invoiceData['invoice']['items'][$item->id] = $item->qty_to_invoice; + } + + return $invoiceData; + } + + /** + * Post back to PayPal to check whether this request is a valid one + * + * @param Zend_Http_Client_Adapter_Interface $httpAdapter + */ + protected function postBack() + { + if (array_key_exists('test_ipn', $this->post) && 1 === (int) $this->post['test_ipn']) + $url = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; + else + $url = 'https://www.paypal.com/cgi-bin/webscr'; + + // Set up request to PayPal + $request = curl_init(); + curl_setopt_array($request, array + ( + CURLOPT_URL => $url, + CURLOPT_POST => TRUE, + CURLOPT_POSTFIELDS => http_build_query(array('cmd' => '_notify-validate') + $this->post), + CURLOPT_RETURNTRANSFER => TRUE, + CURLOPT_HEADER => FALSE, + )); + + // Execute request and get response and status code + $response = curl_exec($request); + $status = curl_getinfo($request, CURLINFO_HTTP_CODE); + + // Close connection + curl_close($request); + + if ($status == 200 && $response == 'VERIFIED') { + return true; + } + + return false; + } +} \ No newline at end of file diff --git a/packages/Webkul/Paypal/src/Http/Controllers/Controller.php b/packages/Webkul/Paypal/src/Http/Controllers/Controller.php new file mode 100755 index 000000000..552c5ed36 --- /dev/null +++ b/packages/Webkul/Paypal/src/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class StandardController extends Controller +{ + /** + * OrderRepository object + * + * @var array + */ + protected $orderRepository; + + /** + * Ipn object + * + * @var array + */ + protected $ipnHelper; + + /** + * Create a new controller instance. + * + * @param \Webkul\Attribute\Repositories\OrderRepository $orderRepository + * @return void + */ + public function __construct( + OrderRepository $orderRepository, + Ipn $ipnHelper + ) + { + $this->orderRepository = $orderRepository; + + $this->ipnHelper = $ipnHelper; + } + + /** + * Redirects to the paypal. + * + * @return \Illuminate\View\View + */ + public function redirect() + { + return view('paypal::standard-redirect'); + } + + /** + * Cancel payment from paypal. + * + * @return \Illuminate\Http\Response + */ + public function cancel() + { + session()->flash('error', 'Paypal payment has been canceled.'); + + return redirect()->route('shop.checkout.cart.index'); + } + + /** + * Success payment + * + * @return \Illuminate\Http\Response + */ + public function success() + { + $order = $this->orderRepository->create(Cart::prepareDataForOrder()); + + Cart::deActivateCart(); + + session()->flash('order', $order); + + return redirect()->route('shop.checkout.success'); + } + + /** + * Paypal Ipn listener + * + * @return \Illuminate\Http\Response + */ + public function ipn() + { + $this->ipnHelper->processIpn(request()->all()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Paypal/src/Http/routes.php b/packages/Webkul/Paypal/src/Http/routes.php new file mode 100755 index 000000000..819e96b3f --- /dev/null +++ b/packages/Webkul/Paypal/src/Http/routes.php @@ -0,0 +1,16 @@ + ['web']], function () { + Route::prefix('paypal/standard')->group(function () { + + Route::get('/redirect', 'Webkul\Paypal\Http\Controllers\StandardController@redirect')->name('paypal.standard.redirect'); + + Route::get('/success', 'Webkul\Paypal\Http\Controllers\StandardController@success')->name('paypal.standard.success'); + + Route::get('/cancel', 'Webkul\Paypal\Http\Controllers\StandardController@cancel')->name('paypal.standard.cancel'); + }); +}); + +Route::get('paypal/standard/ipn', 'Webkul\Paypal\Http\Controllers\StandardController@ipn')->name('paypal.standard.ipn'); + +Route::post('paypal/standard/ipn', 'Webkul\Paypal\Http\Controllers\StandardController@ipn')->name('paypal.standard.ipn'); diff --git a/packages/Webkul/Paypal/src/Payment/Paypal.php b/packages/Webkul/Paypal/src/Payment/Paypal.php new file mode 100755 index 000000000..eba0c1a98 --- /dev/null +++ b/packages/Webkul/Paypal/src/Payment/Paypal.php @@ -0,0 +1,86 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +abstract class Paypal extends Payment +{ + /** + * PayPal web URL generic getter + * + * @param array $params + * @return string + */ + public function getPaypalUrl($params = []) + { + return sprintf('https://www.%spaypal.com/cgi-bin/webscr%s', + $this->getConfigData('sandbox') ? 'sandbox.' : '', + $params ? '?' . http_build_query($params) : '' + ); + } + + /** + * Add order item fields + * + * @param array $fields + * @param int $i + * @return void + */ + protected function addLineItemsFields(&$fields, $i = 1) + { + $cartItems = $this->getCartItems(); + + foreach ($cartItems as $item) { + + foreach ($this->itemFieldsFormat as $modelField => $paypalField) { + $fields[sprintf($paypalField, $i)] = $item->{$modelField}; + } + + $i++; + } + } + + /** + * Add billing address fields + * + * @param array $fields + * @return void + */ + protected function addAddressFields(&$fields) + { + $cart = $this->getCart(); + + $billingAddress = $cart->billing_address; + + $fields = array_merge($fields, [ + 'city' => $billingAddress->city, + 'country' => $billingAddress->country, + 'email' => $billingAddress->email, + 'first_name' => $billingAddress->first_name, + 'last_name' => $billingAddress->last_name, + 'zip' => $billingAddress->postcode, + 'state' => $billingAddress->state, + 'address1' => $billingAddress->address1, + 'address_override' => 1 + ]); + } + + /** + * Checks if line items enabled or not + * + * @param array $fields + * @return void + */ + public function getIsLineItemsEnabled() + { + return true; + } +} \ No newline at end of file diff --git a/packages/Webkul/Paypal/src/Payment/Standard.php b/packages/Webkul/Paypal/src/Payment/Standard.php new file mode 100755 index 000000000..a0305185e --- /dev/null +++ b/packages/Webkul/Paypal/src/Payment/Standard.php @@ -0,0 +1,113 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Standard extends Paypal +{ + /** + * Payment method code + * + * @var string + */ + protected $code = 'paypal_standard'; + + /** + * Line items fields mapping + * + * @var array + */ + protected $itemFieldsFormat = [ + 'id' => 'item_number_%d', + 'name' => 'item_name_%d', + 'quantity' => 'quantity_%d', + 'price' => 'amount_%d', + ]; + + /** + * Return paypal redirect url + * + * @var string + */ + public function getRedirectUrl() + { + return route('paypal.standard.redirect'); + } + + /** + * Return form field array + * + * @return array + */ + public function getFormFields() + { + $cart = $this->getCart(); + + $fields = [ + 'business' => $this->getConfigData('business_account'), + 'invoice' => $cart->id, + 'currency_code' => $cart->cart_currency_code, + 'paymentaction' => 'sale', + 'return' => route('paypal.standard.success'), + 'cancel_return' => route('paypal.standard.cancel'), + 'notify_url' => route('paypal.standard.ipn'), + 'charset' => 'utf-8', + 'item_name' => core()->getCurrentChannel()->name, + 'amount' => $cart->sub_total, + 'tax' => $cart->tax_total, + 'shipping' => $cart->selected_shipping_rate ? $cart->selected_shipping_rate->price : 0, + 'discount_amount' => $cart->discount_amount + ]; + + if ($this->getIsLineItemsEnabled()) { + $fields = array_merge($fields, array( + 'cmd' => '_cart', + 'upload' => 1, + )); + + $this->addLineItemsFields($fields); + + if ($cart->selected_shipping_rate) + $this->addShippingAsLineItems($fields, $cart->items()->count() + 1); + + if (isset($fields['tax'])) { + $fields['tax_cart'] = $fields['tax']; + } + + if (isset($fields['discount_amount'])) { + $fields['discount_amount_cart'] = $fields['discount_amount']; + } + } else { + $fields = array_merge($fields, array( + 'cmd' => '_ext-enter', + 'redirect_cmd' => '_xclick', + )); + } + + $this->addAddressFields($fields); + + return $fields; + } + + /** + * Add shipping as item + * + * @param array $fields + * @param int $i + * @return void + */ + protected function addShippingAsLineItems(&$fields, $i) + { + $cart = $this->getCart(); + + $fields[sprintf('item_number_%d', $i)] = $cart->selected_shipping_rate->carrier_title; + $fields[sprintf('item_name_%d', $i)] = 'Shipping'; + $fields[sprintf('quantity_%d', $i)] = 1; + $fields[sprintf('amount_%d', $i)] = $cart->selected_shipping_rate->price; + } +} \ No newline at end of file diff --git a/packages/Webkul/Paypal/src/Providers/PaypalServiceProvider.php b/packages/Webkul/Paypal/src/Providers/PaypalServiceProvider.php new file mode 100755 index 000000000..a17382b3e --- /dev/null +++ b/packages/Webkul/Paypal/src/Providers/PaypalServiceProvider.php @@ -0,0 +1,20 @@ +loadViewsFrom(__DIR__ . '/../Resources/views', 'paypal'); + } +} diff --git a/packages/Webkul/Paypal/src/Resources/views/standard-redirect.blade.php b/packages/Webkul/Paypal/src/Resources/views/standard-redirect.blade.php new file mode 100755 index 000000000..c94364c15 --- /dev/null +++ b/packages/Webkul/Paypal/src/Resources/views/standard-redirect.blade.php @@ -0,0 +1,20 @@ + + + + You will be redirected to the PayPal website in a few seconds. + + +
+ + + @foreach ($paypalStandard->getFormFields() as $name => $value) + + + + @endforeach +
+ + + \ No newline at end of file diff --git a/packages/Webkul/Product/.gitignore b/packages/Webkul/Product/.gitignore new file mode 100755 index 000000000..30bc16279 --- /dev/null +++ b/packages/Webkul/Product/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/packages/Webkul/Product/composer.json b/packages/Webkul/Product/composer.json new file mode 100755 index 000000000..c37100136 --- /dev/null +++ b/packages/Webkul/Product/composer.json @@ -0,0 +1,27 @@ +{ + "name": "bagisto/laravel-product", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\Product\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Product\\Providers\\ProductServiceProvider" + ], + "aliases": { + "Bouncer": "Webkul\\Product\\Facades\\Bouncer" + } + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Product/src/CacheFilters/Large.php b/packages/Webkul/Product/src/CacheFilters/Large.php new file mode 100755 index 000000000..25cf4a75e --- /dev/null +++ b/packages/Webkul/Product/src/CacheFilters/Large.php @@ -0,0 +1,16 @@ +resize(480, null, function ($constraint) { + $constraint->aspectRatio(); + }); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/CacheFilters/Medium.php b/packages/Webkul/Product/src/CacheFilters/Medium.php new file mode 100755 index 000000000..897114a75 --- /dev/null +++ b/packages/Webkul/Product/src/CacheFilters/Medium.php @@ -0,0 +1,20 @@ +resize($width, $height, function ($constraint) { + $constraint->aspectRatio(); + }); + + return $image->resizeCanvas($width, $height, 'center', false, '#fff'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/CacheFilters/Small.php b/packages/Webkul/Product/src/CacheFilters/Small.php new file mode 100755 index 000000000..baf70d0ce --- /dev/null +++ b/packages/Webkul/Product/src/CacheFilters/Small.php @@ -0,0 +1,20 @@ +resize($width, $height, function ($constraint) { + $constraint->aspectRatio(); + }); + + return $image->resizeCanvas($width, $height, 'center', false, '#fff'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Config/imagecache.php b/packages/Webkul/Product/src/Config/imagecache.php new file mode 100644 index 000000000..9dd290040 --- /dev/null +++ b/packages/Webkul/Product/src/Config/imagecache.php @@ -0,0 +1,71 @@ + 'cache', + + /* + |-------------------------------------------------------------------------- + | Storage paths + |-------------------------------------------------------------------------- + | + | The following paths will be searched for the image filename, submited + | by URI. + | + | Define as many directories as you like. + | + */ + + 'paths' => array( + storage_path('app/public'), + public_path('storage') + ), + + /* + |-------------------------------------------------------------------------- + | Manipulation templates + |-------------------------------------------------------------------------- + | + | Here you may specify your own manipulation filter templates. + | The keys of this array will define which templates + | are available in the URI: + | + | {route}/{template}/{filename} + | + | The values of this array will define which filter class + | will be applied, by its fully qualified name. + | + */ + + 'templates' => array( + 'small' => 'Webkul\Product\CacheFilters\Small', + 'medium' => 'Webkul\Product\CacheFilters\Medium', + 'large' => 'Webkul\Product\CacheFilters\Large', + ), + + /* + |-------------------------------------------------------------------------- + | Image Cache Lifetime + |-------------------------------------------------------------------------- + | + | Lifetime in minutes of the images handled by the imagecache route. + | + */ + + 'lifetime' => 43200, + +); \ No newline at end of file diff --git a/packages/Webkul/Product/src/Config/product_types.php b/packages/Webkul/Product/src/Config/product_types.php new file mode 100644 index 000000000..41903f5a9 --- /dev/null +++ b/packages/Webkul/Product/src/Config/product_types.php @@ -0,0 +1,40 @@ + [ + 'key' => 'simple', + 'name' => 'Simple', + 'class' => 'Webkul\Product\Type\Simple', + 'sort' => 1 + ], + 'configurable' => [ + 'key' => 'configurable', + 'name' => 'Configurable', + 'class' => 'Webkul\Product\Type\Configurable', + 'sort' => 2 + ], + 'virtual' => [ + 'key' => 'virtual', + 'name' => 'Virtual', + 'class' => 'Webkul\Product\Type\Virtual', + 'sort' => 3 + ], + 'grouped' => [ + 'key' => 'grouped', + 'name' => 'Grouped', + 'class' => 'Webkul\Product\Type\Grouped', + 'sort' => 4 + ], + 'downloadable' => [ + 'key' => 'downloadable', + 'name' => 'Downloadable', + 'class' => 'Webkul\Product\Type\Downloadable', + 'sort' => 5 + ], + 'bundle' => [ + 'key' => 'bundle', + 'name' => 'Bundle', + 'class' => 'Webkul\Product\Type\Bundle', + 'sort' => 6 + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Product/src/Console/Commands/PriceUpdate.php b/packages/Webkul/Product/src/Console/Commands/PriceUpdate.php new file mode 100644 index 000000000..c15f09c33 --- /dev/null +++ b/packages/Webkul/Product/src/Console/Commands/PriceUpdate.php @@ -0,0 +1,91 @@ +productFlatRepository = $productFlatRepository; + + parent::__construct(); + } + + /** + * Execute the console command. + * + * @return mixed + */ + public function handle() + { + $products = $this->productFlatRepository->findWhere([['special_price', '>', 0]]); + + foreach ($products as $product) { + request()->request->set('channel', $product->channel); + + $product->min_price = $product->getTypeInstance()->getMinimalPrice(); + + $product->max_price = $product->getTypeInstance()->getMaximamPrice(); + + $product->save(); + + if ($product->parent) { + $product->parent->min_price = $product->parent->getTypeInstance()->getMinimalPrice(); + + $product->parent->max_price = $product->parent->getTypeInstance()->getMaximamPrice(); + + $product->parent->save(); + } else { + $bundleProducts = $this->productFlatRepository->getModel() + ->addSelect('product_flat.*') + ->distinct() + ->leftJoin('products', 'product_flat.product_id', 'products.id') + ->leftJoin('product_bundle_options', 'products.id', 'product_bundle_options.product_id') + ->leftJoin('product_bundle_option_products', 'product_bundle_options.id', 'product_bundle_option_products.product_bundle_option_id') + ->where('product_bundle_option_products.product_id', $product->product_id) + ->get(); + + foreach ($bundleProducts as $bundleProduct) { + $bundleProduct->min_price = $bundleProduct->getTypeInstance()->getMinimalPrice(); + + $bundleProduct->max_price = $bundleProduct->getTypeInstance()->getMaximamPrice(); + + $bundleProduct->save(); + } + } + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Contracts/Product.php b/packages/Webkul/Product/src/Contracts/Product.php new file mode 100644 index 000000000..1ae73d1ec --- /dev/null +++ b/packages/Webkul/Product/src/Contracts/Product.php @@ -0,0 +1,7 @@ +model->getPerPage(); + + $results = ($total = $this->toBase()->getCountForPagination($columns)) + ? $this->forPage($page, $perPage)->get($columns) + : $this->model->newCollection(); + + return $this->paginator($results, $total, $perPage, $page, [ + 'path' => Paginator::resolveCurrentPath(), + 'pageName' => $pageName, + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Database/Migrations/2018_07_27_065727_create_products_table.php b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_065727_create_products_table.php new file mode 100755 index 000000000..8a7d5bdec --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_065727_create_products_table.php @@ -0,0 +1,85 @@ +increments('id'); + $table->string('sku')->unique(); + $table->string('type'); + $table->timestamps(); + $table->integer('parent_id')->unsigned()->nullable(); + $table->integer('attribute_family_id')->unsigned()->nullable(); + $table->foreign('attribute_family_id')->references('id')->on('attribute_families')->onDelete('restrict'); + }); + + Schema::table('products', function (Blueprint $table) { + $table->foreign('parent_id')->references('id')->on('products')->onDelete('cascade'); + }); + + Schema::create('product_categories', function (Blueprint $table) { + $table->integer('product_id')->unsigned(); + $table->integer('category_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); + }); + + Schema::create('product_relations', function (Blueprint $table) { + $table->integer('parent_id')->unsigned(); + $table->integer('child_id')->unsigned(); + $table->foreign('parent_id')->references('id')->on('products')->onDelete('cascade'); + $table->foreign('child_id')->references('id')->on('products')->onDelete('cascade'); + }); + + Schema::create('product_super_attributes', function (Blueprint $table) { + $table->integer('product_id')->unsigned(); + $table->integer('attribute_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + $table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('restrict'); + }); + + Schema::create('product_up_sells', function (Blueprint $table) { + $table->integer('parent_id')->unsigned(); + $table->integer('child_id')->unsigned(); + $table->foreign('parent_id')->references('id')->on('products')->onDelete('cascade'); + $table->foreign('child_id')->references('id')->on('products')->onDelete('cascade'); + }); + + Schema::create('product_cross_sells', function (Blueprint $table) { + $table->integer('parent_id')->unsigned(); + $table->integer('child_id')->unsigned(); + $table->foreign('parent_id')->references('id')->on('products')->onDelete('cascade'); + $table->foreign('child_id')->references('id')->on('products')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_cross_sells'); + + Schema::dropIfExists('product_up_sells'); + + Schema::dropIfExists('product_super_attributes'); + + Schema::dropIfExists('product_relations'); + + Schema::dropIfExists('product_categories'); + + Schema::dropIfExists('products'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2018_07_27_070011_create_product_attribute_values_table.php b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_070011_create_product_attribute_values_table.php new file mode 100755 index 000000000..f07b7d0a9 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_070011_create_product_attribute_values_table.php @@ -0,0 +1,44 @@ +increments('id'); + $table->string('locale')->nullable(); + $table->string('channel')->nullable(); + $table->text('text_value')->nullable(); + $table->boolean('boolean_value')->nullable(); + $table->integer('integer_value')->nullable(); + $table->double('float_value')->nullable(); + $table->dateTime('datetime_value')->nullable(); + $table->date('date_value')->nullable(); + $table->json('json_value')->nullable(); + $table->integer('product_id')->unsigned(); + $table->integer('attribute_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + $table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade'); + $table->unique(['channel', 'locale', 'attribute_id', 'product_id'], 'chanel_locale_attribute_value_index_unique'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_attribute_values'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2018_07_27_092623_create_product_reviews_table.php b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_092623_create_product_reviews_table.php new file mode 100755 index 000000000..7a244e715 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_092623_create_product_reviews_table.php @@ -0,0 +1,39 @@ +increments('id'); + $table->string('title'); + $table->integer('rating'); + $table->text('comment')->nullable(); + $table->string('status'); + $table->timestamps(); + $table->integer('product_id')->unsigned(); + $table->integer('customer_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_reviews'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2018_07_27_113941_create_product_images_table.php b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_113941_create_product_images_table.php new file mode 100755 index 000000000..53dcc84a7 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_113941_create_product_images_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->string('type')->nullable(); + $table->string('path'); + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_images'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2018_07_27_113956_create_product_inventories_table.php b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_113956_create_product_inventories_table.php new file mode 100755 index 000000000..93424a4b3 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2018_07_27_113956_create_product_inventories_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->integer('qty')->default(0); + $table->integer('product_id')->unsigned(); + $table->integer('inventory_source_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + $table->foreign('inventory_source_id')->references('id')->on('inventory_sources')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_inventories'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2018_12_06_185202_create_product_flat_table.php b/packages/Webkul/Product/src/Database/Migrations/2018_12_06_185202_create_product_flat_table.php new file mode 100755 index 000000000..e4064466b --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2018_12_06_185202_create_product_flat_table.php @@ -0,0 +1,58 @@ +increments('id'); + $table->string('sku'); + $table->string('name')->nullable(); + $table->string('description')->nullable(); + $table->string('url_key')->nullable(); + $table->boolean('new')->nullable(); + $table->boolean('featured')->nullable(); + $table->boolean('status')->nullable(); + $table->string('thumbnail')->nullable(); + + $table->decimal('price', 12, 4)->nullable(); + $table->decimal('cost', 12, 4)->nullable(); + $table->boolean('special_price')->nullable(); + $table->date('special_price_from')->nullable(); + $table->date('special_price_to')->nullable(); + + $table->decimal('weight', 12, 4)->nullable(); + $table->integer('color')->nullable(); + $table->string('color_label')->nullable(); + $table->integer('size')->nullable(); + $table->integer('size_label')->nullable(); + + $table->date('created_at')->nullable(); + + $table->string('locale')->nullable(); + $table->string('channel')->nullable(); + + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_flat'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2018_12_26_165327_create_product_ordered_inventories_table.php b/packages/Webkul/Product/src/Database/Migrations/2018_12_26_165327_create_product_ordered_inventories_table.php new file mode 100644 index 000000000..02068d174 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2018_12_26_165327_create_product_ordered_inventories_table.php @@ -0,0 +1,37 @@ +increments('id'); + $table->integer('qty')->default(0); + $table->integer('product_id')->unsigned(); + $table->integer('channel_id')->unsigned(); + + $table->unique(['product_id', 'channel_id']); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_ordered_inventories'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_01_11_122452_add_vendor_id_column_in_product_inventories_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_01_11_122452_add_vendor_id_column_in_product_inventories_table.php new file mode 100644 index 000000000..eaae807c5 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_01_11_122452_add_vendor_id_column_in_product_inventories_table.php @@ -0,0 +1,31 @@ +integer('vendor_id')->default(0); + $table->unique(['product_id', 'inventory_source_id', 'vendor_id'], 'product_source_vendor_index_unique'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_01_25_124522_add_updated_at_column_in_product_flat_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_01_25_124522_add_updated_at_column_in_product_flat_table.php new file mode 100644 index 000000000..6aacbc85d --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_01_25_124522_add_updated_at_column_in_product_flat_table.php @@ -0,0 +1,44 @@ +datetime('created_at')->change(); + $table->string('size_label')->change(); + $table->datetime('updated_at')->nullable(); + $table->integer('parent_id')->unsigned()->nullable(); + $table->boolean('visible_individually')->nullable(); + + $table->foreign('parent_id')->references('id')->on('product_flat')->onDelete('cascade'); + $table->unique(['product_id', 'channel', 'locale'], 'product_flat_unique_index'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // Schema::table('product_flat', function (Blueprint $table) { + // $table->dropColumn('created_at'); + // $table->dropColumn('size_label'); + // $table->dropColumn('updated_at'); + // $table->dropColumn('parent_id'); + // $table->dropColumn('visible_individually'); + // $table->dropIndex('product_flat_unique_index'); + // }); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_01_29_123053_add_min_price_and_max_price_column_in_product_flat_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_01_29_123053_add_min_price_and_max_price_column_in_product_flat_table.php new file mode 100644 index 000000000..d03af3446 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_01_29_123053_add_min_price_and_max_price_column_in_product_flat_table.php @@ -0,0 +1,35 @@ +decimal('min_price', 12, 4)->nullable(); + $table->decimal('max_price', 12, 4)->nullable(); + $table->decimal('special_price', 12, 4)->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('product_flat', function (Blueprint $table) { + $table->dropColumn('min_price'); + $table->dropColumn('max_price'); + }); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_02_21_145238_alter_product_reviews_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_145238_alter_product_reviews_table.php new file mode 100644 index 000000000..b7c19b3d4 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_145238_alter_product_reviews_table.php @@ -0,0 +1,31 @@ +string('name')->default(''); + $table->dropForeign('product_reviews_customer_id_foreign'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_in_product_reviews_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_in_product_reviews_table.php new file mode 100644 index 000000000..cdae0eff5 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_in_product_reviews_table.php @@ -0,0 +1,32 @@ +integer('customer_id')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('product_reviews', function (Blueprint $table) { + $table->dropColumn('customer_id'); + }); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_04_24_155820_alter_product_flat_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_04_24_155820_alter_product_flat_table.php new file mode 100644 index 000000000..a93dd3605 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_04_24_155820_alter_product_flat_table.php @@ -0,0 +1,30 @@ +text('description')->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_05_23_113407_add_remaining_column_in_product_flat_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_05_23_113407_add_remaining_column_in_product_flat_table.php new file mode 100644 index 000000000..b47597a4c --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_05_23_113407_add_remaining_column_in_product_flat_table.php @@ -0,0 +1,72 @@ +text('short_description')->nullable(); + } + if (! Schema::hasColumn('product_flat', 'meta_title')) { + $table->text('meta_title')->nullable(); + } + if (! Schema::hasColumn('product_flat', 'meta_keywords')) { + $table->text('meta_keywords')->nullable(); + } + if (! Schema::hasColumn('product_flat', 'meta_description')) { + $table->text('meta_description')->nullable(); + } + if (! Schema::hasColumn('product_flat', 'width')) { + $table->decimal('width', 12, 4)->nullable(); + } + if (! Schema::hasColumn('product_flat', 'height')) { + $table->decimal('height', 12, 4)->nullable(); + } + if (! Schema::hasColumn('product_flat', 'depth')) { + $table->decimal('depth', 12, 4)->nullable(); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('product_flat', function (Blueprint $table) { + if (Schema::hasColumn('product_flat', 'short_description')) { + $table->dropColumn('short_description'); + } + if (Schema::hasColumn('product_flat', 'meta_title')) { + $table->dropColumn('meta_title'); + } + if (Schema::hasColumn('product_flat', 'meta_keywords')) { + $table->dropColumn('meta_keywords'); + } + if (Schema::hasColumn('product_flat', 'meta_description')) { + $table->dropColumn('meta_description'); + } + if (Schema::hasColumn('product_flat', 'width')) { + $table->dropColumn('width'); + } + if (Schema::hasColumn('product_flat', 'height')) { + $table->dropColumn('height'); + } + if (Schema::hasColumn('product_flat', 'depth')) { + $table->dropColumn('depth'); + } + }); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180258_create_product_downloadable_samples_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180258_create_product_downloadable_samples_table.php new file mode 100644 index 000000000..b1cbafbd2 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180258_create_product_downloadable_samples_table.php @@ -0,0 +1,40 @@ +increments('id'); + $table->string('url')->nullable(); + $table->string('file')->nullable(); + $table->string('file_name')->nullable(); + $table->string('type'); + $table->integer('sort_order')->nullable(); + + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_downloadable_samples'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180314_create_product_downloadable_sample_translations_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180314_create_product_downloadable_sample_translations_table.php new file mode 100644 index 000000000..959e6c6ec --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180314_create_product_downloadable_sample_translations_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('locale'); + $table->text('title')->nullable(); + + $table->integer('product_downloadable_sample_id')->unsigned(); + $table->foreign('product_downloadable_sample_id', 'sample_translations_sample_id_foreign')->references('id')->on('product_downloadable_samples')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_downloadable_sample_translations'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180325_create_product_downloadable_links_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180325_create_product_downloadable_links_table.php new file mode 100644 index 000000000..96c5186ee --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180325_create_product_downloadable_links_table.php @@ -0,0 +1,46 @@ +increments('id'); + $table->string('url')->nullable(); + $table->string('file')->nullable(); + $table->string('file_name')->nullable(); + $table->string('type'); + $table->decimal('price', 12, 4)->default(0); + $table->string('sample_url')->nullable(); + $table->string('sample_file')->nullable(); + $table->string('sample_file_name')->nullable(); + $table->string('sample_type')->nullable(); + $table->integer('downloads')->default(0); + $table->integer('sort_order')->nullable(); + + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_downloadable_links'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180346_create_product_downloadable_link_translations_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180346_create_product_downloadable_link_translations_table.php new file mode 100644 index 000000000..5926ed322 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_06_17_180346_create_product_downloadable_link_translations_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('locale'); + $table->text('title')->nullable(); + + $table->integer('product_downloadable_link_id')->unsigned(); + $table->foreign('product_downloadable_link_id', 'link_translations_link_id_foreign')->references('id')->on('product_downloadable_links')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_downloadable_link_translations'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_08_02_105320_create_product_grouped_products_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_08_02_105320_create_product_grouped_products_table.php new file mode 100644 index 000000000..9ed75e293 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_08_02_105320_create_product_grouped_products_table.php @@ -0,0 +1,38 @@ +increments('id'); + $table->integer('qty')->default(0); + $table->integer('sort_order')->default(0); + + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + + $table->integer('associated_product_id')->unsigned(); + $table->foreign('associated_product_id')->references('id')->on('products')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_grouped_products'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_08_20_170510_create_product_bundle_options_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_08_20_170510_create_product_bundle_options_table.php new file mode 100644 index 000000000..f06670974 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_08_20_170510_create_product_bundle_options_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->string('type'); + $table->boolean('is_required')->default(1); + $table->integer('sort_order')->default(0); + + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_bundle_options'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_08_20_170520_create_product_bundle_option_translations_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_08_20_170520_create_product_bundle_option_translations_table.php new file mode 100644 index 000000000..c9ce2fba6 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_08_20_170520_create_product_bundle_option_translations_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('locale'); + $table->text('label')->nullable(); + $table->integer('product_bundle_option_id')->unsigned(); + $table->unique(['product_bundle_option_id', 'locale'], 'product_bundle_option_translations_option_id_locale_unique'); + $table->foreign('product_bundle_option_id', 'product_bundle_option_translations_option_id_foreign')->references('id')->on('product_bundle_options')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_bundle_option_translations'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_08_20_170528_create_product_bundle_option_products_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_08_20_170528_create_product_bundle_option_products_table.php new file mode 100644 index 000000000..0343bdc48 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_08_20_170528_create_product_bundle_option_products_table.php @@ -0,0 +1,40 @@ +increments('id'); + $table->integer('qty')->default(0); + $table->boolean('is_user_defined')->default(1); + $table->boolean('is_default')->default(0); + $table->integer('sort_order')->default(0); + + $table->integer('product_bundle_option_id')->unsigned(); + $table->foreign('product_bundle_option_id')->references('id')->on('product_bundle_options')->onDelete('cascade'); + + $table->integer('product_id')->unsigned(); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_bundle_option_products'); + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2020_01_13_131431_alter_float_value_column_type_in_product_attribute_values_table.php b/packages/Webkul/Product/src/Database/Migrations/2020_01_13_131431_alter_float_value_column_type_in_product_attribute_values_table.php new file mode 100644 index 000000000..8480dc59c --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2020_01_13_131431_alter_float_value_column_type_in_product_attribute_values_table.php @@ -0,0 +1,32 @@ +decimal('float_value', 12, 4)->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('product_attribute_values', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Product/src/Database/Seeders/DatabaseSeeder.php b/packages/Webkul/Product/src/Database/Seeders/DatabaseSeeder.php new file mode 100755 index 000000000..919833da8 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Seeders/DatabaseSeeder.php @@ -0,0 +1,18 @@ +call(ProductTableSeeder::class); + } +} diff --git a/packages/Webkul/Product/src/Database/Seeders/ProductTableSeeder.php b/packages/Webkul/Product/src/Database/Seeders/ProductTableSeeder.php new file mode 100755 index 000000000..e333dc917 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Seeders/ProductTableSeeder.php @@ -0,0 +1,14 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +abstract class AbstractProduct +{ + /** + * array + * + * @var array + */ + protected $productFlat = []; + + /** + * Add Channle and Locale filter + * + * @param Attribute $attribute + * @param QB $qb + * @param sting $alias + * @return QB + */ + public function applyChannelLocaleFilter($attribute, $qb, $alias = 'product_attribute_values') + { + $channel = request()->get('channel') ?: (core()->getCurrentChannelCode() ?: core()->getDefaultChannelCode()); + + $locale = request()->get('locale') ?: app()->getLocale(); + + if ($attribute->value_per_channel) { + if ($attribute->value_per_locale) { + $qb->where($alias . '.channel', $channel) + ->where($alias . '.locale', $locale); + } else { + $qb->where($alias . '.channel', $channel); + } + } else { + if ($attribute->value_per_locale) { + $qb->where($alias . '.locale', $locale); + } + } + + return $qb; + } + + /** + * Sets product flat variable + * + * @param Product $product + * @return void + */ + public function setProductFlat($product) + { + if (array_key_exists($product->id, $this->productFlat)) + return; + + if (! $product instanceof ProductFlat) { + $this->productFlat[$product->id] = ProductFlatProxy::modelClass() + ::where('product_flat.product_id', $product->id) + ->where('product_flat.locale', app()->getLocale()) + ->where('product_flat.channel', core()->getCurrentChannelCode()) + ->select('product_flat.*') + ->first(); + } else { + $this->productFlat[$product->id] = $product; + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Helpers/BundleOption.php b/packages/Webkul/Product/src/Helpers/BundleOption.php new file mode 100644 index 000000000..b3232ad36 --- /dev/null +++ b/packages/Webkul/Product/src/Helpers/BundleOption.php @@ -0,0 +1,92 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class BundleOption extends AbstractProduct +{ + /** + * Product + * + * @var Product + */ + protected $product; + + /** + * Returns bundle option config + * + * @param Product $product + * @return array + */ + public function getBundleConfig($product) + { + $this->product = $product; + + return [ + 'options' => $this->getOptions() + ]; + } + + /** + * Returns bundle options + * + * @return array + */ + public function getOptions() + { + $options = []; + + foreach ($this->product->bundle_options as $option) { + $options[$option->id] = $this->getOptionItemData($option); + } + + return $options; + } + + /** + * Get formed data from bundle option + * + * @param ProductBundleOption $option + * @return array + */ + private function getOptionItemData($option) + { + return [ + 'id' => $option->id, + 'label' => $option->label, + 'type' => $option->type, + 'is_required' => $option->is_required, + 'products' => $this->getOptionProducts($option), + 'sort_order' => $option->sort_order + ]; + } + + /** + * Get formed data from bundle option product + * + * @param ProductBundleOption $option + * @return array + */ + private function getOptionProducts($option) + { + $products = []; + + foreach ($option->bundle_option_products as $index => $bundleOptionProduct) { + $products[$bundleOptionProduct->id] = [ + 'id' => $bundleOptionProduct->id, + 'qty' => $bundleOptionProduct->qty, + 'price' => $bundleOptionProduct->product->getTypeInstance()->getProductPrices(), + 'name' => $bundleOptionProduct->product->name, + 'product_id' => $bundleOptionProduct->product_id, + 'is_default' => $bundleOptionProduct->is_default + ]; + } + + return $products; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Helpers/ConfigurableOption.php b/packages/Webkul/Product/src/Helpers/ConfigurableOption.php new file mode 100755 index 000000000..2f25463ce --- /dev/null +++ b/packages/Webkul/Product/src/Helpers/ConfigurableOption.php @@ -0,0 +1,249 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ConfigurableOption extends AbstractProduct +{ + /** + * AttributeOptionRepository object + * + * @var array + */ + protected $attributeOption; + + /** + * ProductImage object + * + * @var array + */ + protected $productImage; + + /** + * Create a new controller instance. + * + * @param Webkul\Attribute\Repositories\AttributeOptionRepository $attributeOption + * @param Webkul\Product\Helpers\ProductImage $productImage + * @return void + */ + public function __construct( + AttributeOption $attributeOption, + ProductImage $productImage + ) + { + $this->attributeOption = $attributeOption; + + $this->productImage = $productImage; + } + + /** + * Returns the allowed variants + * + * @param Product $product + * @return float + */ + public function getAllowedProducts($product) + { + static $variants = []; + + if (count($variants)) + return $variants; + + foreach ($product->variants as $variant) { + if ($variant->isSaleable()) { + $variants[] = $variant; + } + } + + return $variants; + } + + /** + * Returns the allowed variants JSON + * + * @param Product $product + * @return array + */ + public function getConfigurationConfig($product) + { + $options = $this->getOptions($product, $this->getAllowedProducts($product)); + + $config = [ + 'attributes' => $this->getAttributesData($product, $options), + 'index' => isset($options['index']) ? $options['index'] : [], + 'regular_price' => [ + 'formated_price' => core()->currency($product->getTypeInstance()->getMinimalPrice()), + 'price' => $product->getTypeInstance()->getMinimalPrice() + ], + 'variant_prices' => $this->getVariantPrices($product), + 'variant_images' => $this->getVariantImages($product), + 'chooseText' => trans('shop::app.products.choose-option') + ]; + + return $config; + } + + /** + * Get allowed attributes + * + * @param Product $product + * @return array + */ + public function getAllowAttributes($product) + { + return $product->product->super_attributes; + } + + /** + * Get Configurable Product Options + * + * @param Product $currentProduct + * @param array $allowedProducts + * @return array + */ + public function getOptions($currentProduct, $allowedProducts) + { + $options = []; + + $allowAttributes = $this->getAllowAttributes($currentProduct); + + foreach ($allowedProducts as $product) { + if ($product instanceof \Webkul\Product\Models\ProductFlat) { + $productId = $product->product_id; + } else { + $productId = $product->id; + } + + foreach ($allowAttributes as $productAttribute) { + $productAttributeId = $productAttribute->id; + + $attributeValue = $product->{$productAttribute->code}; + + if ($attributeValue == '' && $product instanceof \Webkul\Product\Models\ProductFlat) + $attributeValue = $product->product->{$productAttribute->code}; + + $options[$productAttributeId][$attributeValue][] = $productId; + + $options['index'][$productId][$productAttributeId] = $attributeValue; + } + } + + return $options; + } + + /** + * Get product attributes + * + * @param Product $product + * @param array $options + * @return array + */ + public function getAttributesData($product, array $options = []) + { + $defaultValues = []; + + $attributes = []; + + $allowAttributes = $this->getAllowAttributes($product); + + foreach ($allowAttributes as $attribute) { + + $attributeOptionsData = $this->getAttributeOptionsData($attribute, $options); + + if ($attributeOptionsData) { + $attributeId = $attribute->id; + + $attributes[] = [ + 'id' => $attributeId, + 'code' => $attribute->code, + 'label' => $attribute->name ? $attribute->name : $attribute->admin_name, + 'swatch_type' => $attribute->swatch_type, + 'options' => $attributeOptionsData + ]; + } + } + + return $attributes; + } + + /** + * @param Attribute $attribute + * @param array $options + * @return array + */ + protected function getAttributeOptionsData($attribute, $options) + { + $attributeOptionsData = []; + + foreach ($attribute->options as $attributeOption) { + + $optionId = $attributeOption->id; + + if (isset($options[$attribute->id][$optionId])) { + $attributeOptionsData[] = [ + 'id' => $optionId, + 'label' => $attributeOption->label, + 'swatch_value' => $attribute->swatch_type == 'image' ? $attributeOption->swatch_value_url : $attributeOption->swatch_value, + 'products' => $options[$attribute->id][$optionId] + ]; + } + } + + return $attributeOptionsData; + } + + /** + * Get product prices for configurable variations + * + * @param Product $product + * @return array + */ + protected function getVariantPrices($product) + { + $prices = []; + + foreach ($this->getAllowedProducts($product) as $variant) { + if ($variant instanceof \Webkul\Product\Models\ProductFlat) { + $variantId = $variant->product_id; + } else { + $variantId = $variant->id; + } + + $prices[$variantId] = $variant->getTypeInstance()->getProductPrices(); + } + + return $prices; + } + + /** + * Get product images for configurable variations + * + * @param Product $product + * @return array + */ + protected function getVariantImages($product) + { + $images = []; + + foreach ($this->getAllowedProducts($product) as $variant) { + if ($variant instanceof \Webkul\Product\Models\ProductFlat) { + $variantId = $variant->product_id; + } else { + $variantId = $variant->id; + } + + $images[$variantId] = $this->productImage->getGalleryImages($variant); + } + + return $images; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Helpers/GenerateProduct.php b/packages/Webkul/Product/src/Helpers/GenerateProduct.php new file mode 100644 index 000000000..e3e239f33 --- /dev/null +++ b/packages/Webkul/Product/src/Helpers/GenerateProduct.php @@ -0,0 +1,180 @@ +product = $product; + + $this->types = [ + 'text', 'textarea', 'boolean', 'select', 'multiselect', 'datetime', 'date', 'price', 'image', 'file', 'checkbox' + ]; + + $this->attributeFamily = $attributeFamily; + } + + public function create() + { + $attributes = $this->getDefaultFamilyAttributes(); + + $attributeFamily = $this->attributeFamily->findWhere([ + 'code' => 'default' + ]); + + $sku = Str::random(10); + $data['sku'] = strtolower($sku); + $data['attribute_family_id'] = $attributeFamily->first()->id; + $data['type'] = 'simple'; + + $product = $this->product->create($data); + + unset($data); + + $faker = \Faker\Factory::create(); + + $date = date('Y-m-d'); + $date = \Carbon\Carbon::parse($date); + $specialFrom = $date->toDateString(); + $specialTo = $date->addDays(7)->toDateString(); + + foreach ($attributes as $attribute) { + if ($attribute->type == 'text') { + if ($attribute->code == 'width' || $attribute->code == 'height' || $attribute->code == 'depth' || $attribute->code == 'weight') { + $data[$attribute->code] = $faker->randomNumber(3); + } else if ($attribute->code == 'url_key') { + $data[$attribute->code] = strtolower($sku); + } else if ($attribute->code != 'sku') { + $data[$attribute->code] = $faker->name; + } else { + $data[$attribute->code] = $sku; + } + } else if ($attribute->type == 'textarea') { + $data[$attribute->code] = $faker->text; + + if ($attribute->code == 'description' || $attribute->code == 'short_description') { + $data[$attribute->code] = '

'. $data[$attribute->code] . '

'; + } + } else if ($attribute->type == 'boolean') { + $data[$attribute->code] = $faker->boolean; + } else if ($attribute->type == 'price') { + $data[$attribute->code] = $faker->randomNumber(2); + } else if ($attribute->type == 'datetime') { + $data[$attribute->code] = $date->toDateTimeString(); + } else if ($attribute->type == 'date') { + if ($attribute->code == 'special_price_from') { + $data[$attribute->code] = $specialFrom; + } else if ($attribute->code == 'special_price_to') { + $data[$attribute->code] = $specialTo; + } else { + $data[$attribute->code] = $date->toDateString(); + } + } else if ($attribute->code != 'tax_category_id' && ($attribute->type == 'select' || $attribute->type == 'multiselect')) { + $options = $attribute->options; + + if ($attribute->type == 'select') { + if ($options->count()) { + $option = $options->first()->id; + + $data[$attribute->code] = $option; + } else { + $data[$attribute->code] = ""; + } + } else if ($attribute->type == 'multiselect') { + if ($options->count()) { + $option = $options->first()->id; + + $optionArray = []; + + array_push($optionArray, $option); + + $data[$attribute->code] = $optionArray; + } else { + $data[$attribute->code] = ""; + } + } else { + $data[$attribute->code] = ""; + } + } else if ($attribute->code == 'checkbox') { + $options = $attribute->options; + + if ($options->count()) { + $option = $options->first()->id; + + $optionArray = []; + + array_push($optionArray, $option); + + $data[$attribute->code] = $optionArray; + } else { + $data[$attribute->code] = ""; + } + } + } + + $channel = core()->getCurrentChannel(); + + $data['locale'] = core()->getCurrentLocale()->code; + + $data['channel'] = $channel->code; + + $data['channels'] = [ + 0 => $channel->id + ]; + + $inventorySource = $channel->inventory_sources[0]; + + $data['inventories'] = [ + $inventorySource->id => 10 + ]; + + $data['categories'] = [ + 0 => $channel->root_category->id + ]; + + $updated = $this->product->update($data, $product->id); + + return $updated; + } + + public function getDefaultFamilyAttributes() + { + $attributeFamily = $this->attributeFamily->findWhere([ + 'code' => 'default' + ]); + + $attributes = collect(); + + if ($attributeFamily->count()) { + $attributeGroups = $attributeFamily->first()->attribute_groups; + + foreach ($attributeGroups as $attributeGroup) { + foreach ($attributeGroup->custom_attributes as $customAttribute) { + $attributes->push($customAttribute); + } + } + } + + return $attributes; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Helpers/ProductImage.php b/packages/Webkul/Product/src/Helpers/ProductImage.php new file mode 100755 index 000000000..98b6e49c3 --- /dev/null +++ b/packages/Webkul/Product/src/Helpers/ProductImage.php @@ -0,0 +1,81 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductImage extends AbstractProduct +{ + /** + * Retrieve collection of gallery images + * + * @param Product $product + * @return array + */ + public function getGalleryImages($product) + { + if (! $product) + return []; + + $images = []; + + foreach ($product->images as $image) { + if (! Storage::has($image->path)) + continue; + + $images[] = [ + 'small_image_url' => url('cache/small/' . $image->path), + 'medium_image_url' => url('cache/medium/' . $image->path), + 'large_image_url' => url('cache/large/' . $image->path), + 'original_image_url' => url('cache/original/' . $image->path), + ]; + } + + if (! $product->parent_id && ! count($images)) { + $images[] = [ + 'small_image_url' => asset('vendor/webkul/ui/assets/images/product/small-product-placeholder.png'), + 'medium_image_url' => asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.png'), + 'large_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.png'), + 'original_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.png') + ]; + } + + return $images; + } + + /** + * Get product's base image + * + * @param Product $product + * @return array + */ + public function getProductBaseImage($product) + { + $images = $product ? $product->images : null; + + if ($images && $images->count()) { + $image = [ + 'small_image_url' => url('cache/small/' . $images[0]->path), + 'medium_image_url' => url('cache/medium/' . $images[0]->path), + 'large_image_url' => url('cache/large/' . $images[0]->path), + 'original_image_url' => url('cache/original/' . $images[0]->path), + ]; + } else { + $image = [ + 'small_image_url' => asset('vendor/webkul/ui/assets/images/product/small-product-placeholder.png'), + 'medium_image_url' => asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.png'), + 'large_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.png'), + 'original_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.png'), + ]; + } + + return $image; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Helpers/ProductType.php b/packages/Webkul/Product/src/Helpers/ProductType.php new file mode 100644 index 000000000..68c523b50 --- /dev/null +++ b/packages/Webkul/Product/src/Helpers/ProductType.php @@ -0,0 +1,40 @@ +hasVariants(); + } + + /** + * Get all ProductTypes that are allowed to have variants + * + * @return array of product_types->keys + */ + public static function getAllTypesHavingVariants(): array + { + $havingVariants = []; + foreach (config('product_types') as $type) { + if (self::hasVariants($type['key'])) { + array_push($havingVariants, $type['key']); + } + } + + return $havingVariants; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Helpers/Review.php b/packages/Webkul/Product/src/Helpers/Review.php new file mode 100755 index 000000000..6d109f729 --- /dev/null +++ b/packages/Webkul/Product/src/Helpers/Review.php @@ -0,0 +1,112 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Review extends AbstractProduct +{ + /** + * Returns the product's avg rating + * + * @param Product $product + * @return float + */ + public function getReviews($product) + { + static $reviews = []; + + if(array_key_exists($product->id, $reviews)) + return $reviews[$product->id]; + + return $reviews[$product->id] = $product->reviews()->where('status', 'approved'); + } + + /** + * Returns the product's avg rating + * + * @param Product $product + * @return float + */ + public function getAverageRating($product) + { + static $avgRating = []; + + if(array_key_exists($product->id, $avgRating)) + return $avgRating[$product->id]; + + return $avgRating[$product->id] = number_format(round($product->reviews()->where('status', 'approved')->avg('rating'), 2), 1); + } + + /** + * Returns the total review of the product + * + * @param Product $product + * @return integer + */ + public function getTotalReviews($product) + { + static $totalReviews = []; + + if(array_key_exists($product->id, $totalReviews)) + return $totalReviews[$product->id]; + + return $totalReviews[$product->id] = $product->reviews()->where('status', 'approved')->count(); + } + + /** + * Returns the total rating of the product + * + * @param Product $product + * @return integer + */ + public function getTotalRating($product) + { + static $totalRating = []; + + if(array_key_exists($product->id, $totalRating)) + return $totalRating[$product->id]; + + return $totalRating[$product->id] = $product->reviews()->where('status','approved')->sum('rating'); + } + + /** + * Returns the Percentage rating of the product + * + * @param Product $product + * @return integer + */ + public function getPercentageRating($product) + { + $reviews = $product->reviews()->where('status', 'approved') + ->select('rating', DB::raw('count(*) as total')) + ->groupBy('rating') + ->orderBy('rating','desc') + ->get(); + + $totalReviews = $this->getTotalReviews($product); + + for ($i = 5; $i >= 1; $i--) { + if (! $reviews->isEmpty()) { + foreach ($reviews as $review) { + if ($review->rating == $i) { + $percentage[$i] = round(($review->total / $totalReviews) * 100); + + break; + } else { + $percentage[$i]=0; + } + } + } else { + $percentage[$i]=0; + } + } + + return $percentage; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Helpers/Toolbar.php b/packages/Webkul/Product/src/Helpers/Toolbar.php new file mode 100755 index 000000000..cee7e5fdc --- /dev/null +++ b/packages/Webkul/Product/src/Helpers/Toolbar.php @@ -0,0 +1,148 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Toolbar extends AbstractProduct +{ + /** + * Returns available sort orders + * + * @param string $key + * @return string + */ + public function getAvailableOrders() + { + return [ + 'name-asc' => 'from-a-z', + 'name-desc' => 'from-z-a', + 'created_at-desc' => 'newest-first', + 'created_at-asc' => 'oldest-first', + 'price-asc' => 'cheapest-first', + 'price-desc' => 'expensive-first' + ]; + } + /** + * Returns available limits + * + * @param string $key + * @return string + */ + public function getAvailableLimits() + { + return [9, 15, 21, 28]; + } + + /** + * Returns the sort order url + * + * @param string $key + * @return string + */ + public function getOrderUrl($key) + { + $keys = explode('-', $key); + + return request()->fullUrlWithQuery([ + 'sort' => current($keys), + 'order' => end($keys) + ]); + } + + /** + * Returns the limit url + * + * @param integer $limit + * @return string + */ + public function getLimitUrl($limit) + { + return request()->fullUrlWithQuery([ + 'limit' => $limit + ]); + } + + /** + * Returns the mode url + * + * @param string $mode + * @return string + */ + public function getModeUrl($mode) + { + return request()->fullUrlWithQuery([ + 'mode' => $mode + ]); + } + + /** + * Checks if sort order is active + * + * @param string $key + * @return boolean + */ + public function isOrderCurrent($key) + { + $params = request()->input(); + + if (isset($params['sort']) && $key == $params['sort'] . '-' . $params['order']) + return true; + else if (! isset($params['sort']) && $key == 'created_at-desc') + return true; + + return false; + } + + /** + * Checks if limit is active + * + * @param integer $limit + * @return boolean + */ + public function isLimitCurrent($limit) + { + $params = request()->input(); + + if (isset($params['limit']) && $limit == $params['limit']) + return true; + + return false; + } + + /** + * Checks if mode is active + * + * @param string $key + * @return boolean + */ + public function isModeActive($key) + { + $params = request()->input(); + + if (isset($params['mode']) && $key == $params['mode']) + return true; + + return false; + } + + /** + * Returns the current mode + * + * @param string $mode + * @return string + */ + public function getCurrentMode() + { + $params = request()->input(); + + if (isset($params['mode'])) + return $params['mode']; + + return 'grid'; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Helpers/View.php b/packages/Webkul/Product/src/Helpers/View.php new file mode 100755 index 000000000..1cf9002df --- /dev/null +++ b/packages/Webkul/Product/src/Helpers/View.php @@ -0,0 +1,74 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class View extends AbstractProduct +{ + /** + * Returns the visible custom attributes + * + * @param Webkul\Product\Models\Product $product + * @return integer + */ + public function getAdditionalData($product) + { + $data = []; + + $attributes = $product->attribute_family->custom_attributes()->where('attributes.is_visible_on_front', 1)->get(); + + $attributeOptionReposotory = app('Webkul\Attribute\Repositories\AttributeOptionRepository'); + + foreach ($attributes as $attribute) { + if ($product instanceof \Webkul\Product\Models\ProductFlat) { + $value = $product->product->{$attribute->code}; + } else { + $value = $product->{$attribute->code}; + } + + if ($attribute->type == 'boolean') { + $value = $value ? 'Yes' : 'No'; + } else if($value) { + if ($attribute->type == 'select') { + $attributeOption = $attributeOptionReposotory->find($value); + + if ($attributeOption) { + $value = $attributeOption->label ?? null; + + if (! $value) { + continue; + } + } + } else if ($attribute->type == 'multiselect' || $attribute->type == 'checkbox') { + $lables = []; + + $attributeOptions = $attributeOptionReposotory->findWhereIn('id', explode(",", $value)); + + foreach ($attributeOptions as $attributeOption) { + if ($label = $attributeOption->label) { + $lables[] = $label; + } + } + + $value = implode(", ", $lables); + } + } + + $data[] = [ + 'id' => $attribute->id, + 'code' => $attribute->code, + 'label' => $attribute->name, + 'value' => $value, + 'admin_name' => $attribute->admin_name, + 'type' => $attribute->type, + ]; + } + + return $data; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Http/Controllers/Controller.php b/packages/Webkul/Product/src/Http/Controllers/Controller.php new file mode 100755 index 000000000..59b522ad3 --- /dev/null +++ b/packages/Webkul/Product/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * CategoryRepository object + * + * @var Object + */ + protected $categoryRepository; + + /** + * ProductRepository object + * + * @var Object + */ + protected $productRepository; + + /** + * ProductDownloadableLinkRepository object + * + * @var Object + */ + protected $productDownloadableLinkRepository; + + /** + * ProductDownloadableSampleRepository object + * + * @var Object + */ + protected $productDownloadableSampleRepository; + + /** + * AttributeFamilyRepository object + * + * @var Object + */ + protected $attributeFamilyRepository; + + /** + * InventorySourceRepository object + * + * @var Object + */ + protected $inventorySourceRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Category\Repositories\CategoryRepository $categoryRepository + * @param \Webkul\Product\Repositories\ProductRepository $productRepository + * @param \Webkul\Product\Repositories\ProductDownloadableLinkRepository $productDownloadableLinkRepository + * @param \Webkul\Product\Repositories\ProductDownloadableSampleRepository $productDownloadableSampleRepository + * @param \Webkul\Attribute\Repositories\AttributeFamilyRepository $attributeFamilyRepository + * @param \Webkul\Inventory\Repositories\InventorySourceRepository $inventorySource + * @return void + */ + public function __construct( + CategoryRepository $categoryRepository, + ProductRepository $productRepository, + ProductDownloadableLinkRepository $productDownloadableLinkRepository, + ProductDownloadableSampleRepository $productDownloadableSampleRepository, + AttributeFamilyRepository $attributeFamilyRepository, + InventorySourceRepository $inventorySourceRepository + ) + { + $this->_config = request('_config'); + + $this->categoryRepository = $categoryRepository; + + $this->productRepository = $productRepository; + + $this->productDownloadableLinkRepository = $productDownloadableLinkRepository; + + $this->productDownloadableSampleRepository = $productDownloadableSampleRepository; + + $this->attributeFamilyRepository = $attributeFamilyRepository; + + $this->inventorySourceRepository = $inventorySourceRepository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + $families = $this->attributeFamilyRepository->all(); + + $configurableFamily = null; + + if ($familyId = request()->get('family')) { + $configurableFamily = $this->attributeFamilyRepository->find($familyId); + } + + return view($this->_config['view'], compact('families', 'configurableFamily')); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + if (! request()->get('family') + && ProductType::hasVariants(request()->input('type')) + && request()->input('sku') != '') { + + return redirect(url()->current() . '?type=' . request()->input('type') . '&family=' . request()->input('attribute_family_id') . '&sku=' . request()->input('sku')); + } + + if (ProductType::hasVariants(request()->input('type')) + && (! request()->has('super_attributes') + || ! count(request()->get('super_attributes')))) { + + session()->flash('error', trans('admin::app.catalog.products.configurable-error')); + + return back(); + } + + $this->validate(request(), [ + 'type' => 'required', + 'attribute_family_id' => 'required', + 'sku' => ['required', 'unique:products,sku', new \Webkul\Core\Contracts\Validations\Slug] + ]); + + $product = $this->productRepository->create(request()->all()); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Product'])); + + return redirect()->route($this->_config['redirect'], ['id' => $product->id]); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $product = $this->productRepository->with(['variants', 'variants.inventories'])->findOrFail($id); + + $categories = $this->categoryRepository->getCategoryTree(); + + $inventorySources = $this->inventorySourceRepository->all(); + + return view($this->_config['view'], compact('product', 'categories', 'inventorySources')); + } + + /** + * Update the specified resource in storage. + * + * @param \Webkul\Product\Http\Requests\ProductForm $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(ProductForm $request, $id) + { + $product = $this->productRepository->update(request()->all(), $id); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Product'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Uploads downloadable file + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function uploadLink($id) + { + return response()->json( + $this->productDownloadableLinkRepository->upload(request()->all(), $id) + ); + } + + /** + * Uploads downloadable sample file + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function uploadSample($id) + { + return response()->json( + $this->productDownloadableSampleRepository->upload(request()->all(), $id) + ); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $product = $this->productRepository->findOrFail($id); + + try { + $this->productRepository->delete($id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Product'])); + + return response()->json(['message' => true], 200); + } catch (\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Product'])); + } + + return response()->json(['message' => false], 400); + } + + /** + * Mass Delete the products + * + * @return response + */ + public function massDestroy() + { + $productIds = explode(',', request()->input('indexes')); + + foreach ($productIds as $productId) { + $product = $this->productRepository->find($productId); + + if (isset($product)) { + $this->productRepository->delete($productId); + } + } + + session()->flash('success', trans('admin::app.catalog.products.mass-delete-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Mass updates the products + * + * @return response + */ + public function massUpdate() + { + $data = request()->all(); + + if (! isset($data['massaction-type'])) { + return redirect()->back(); + } + + if (!$data['massaction-type'] == 'update') { + return redirect()->back(); + } + + $productIds = explode(',', $data['indexes']); + + foreach ($productIds as $productId) { + $this->productRepository->update([ + 'channel' => null, + 'locale' => null, + 'status' => $data['update-options'] + ], $productId); + } + + session()->flash('success', trans('admin::app.catalog.products.mass-update-success')); + + return redirect()->route($this->_config['redirect']); + } + + /* + * To be manually invoked when data is seeded into products + */ + public function sync() + { + Event::dispatch('products.datagrid.sync', true); + + return redirect()->route('admin.catalog.products.index'); + } + + /** + * Result of search product. + * + * @return \Illuminate\View\View | \Illuminate\Http\JsonResponse + */ + public function productLinkSearch() + { + if (request()->ajax()) { + $results = []; + + foreach ($this->productRepository->searchProductByAttribute(request()->input('query')) as $row) { + $results[] = [ + 'id' => $row->product_id, + 'sku' => $row->sku, + 'name' => $row->name, + ]; + } + + return response()->json($results); + } else { + return view($this->_config['view']); + } + } + + /** + * Download image or file + * + * @param int $productId, $attributeId + * @return \Illuminate\Http\Response + */ + public function download($productId, $attributeId) + { + $productAttribute = $this->productAttributeValue->findOneWhere([ + 'product_id' => $productId, + 'attribute_id' => $attributeId + ]); + + return Storage::download($productAttribute['text_value']); + } + + /** + * Search simple products + * + * @return \Illuminate\Http\JsonResponse + */ + public function searchSimpleProducts() + { + return response()->json( + $this->productRepository->searchSimpleProducts(request()->input('query')) + ); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Http/Controllers/ReviewController.php b/packages/Webkul/Product/src/Http/Controllers/ReviewController.php new file mode 100755 index 000000000..10f51d987 --- /dev/null +++ b/packages/Webkul/Product/src/Http/Controllers/ReviewController.php @@ -0,0 +1,208 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ReviewController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * ProductReviewRepository object + * + * @var Object + */ + protected $productReviewRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Product\Repositories\ProductReviewRepository $productReview + * @return void + */ + public function __construct( + ProductReviewRepository $productReviewRepository + ) + { + $this->productReviewRepository = $productReviewRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $review = $this->productReviewRepository->findOrFail($id); + + return view($this->_config['view'], compact('review')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + Event::dispatch('customer.review.update.before', $id); + + $this->productReviewRepository->update(request()->all(), $id); + + Event::dispatch('customer.review.update.after', $id); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Review'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Delete the review of the current product + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $productReview = $this->productReviewRepository->findOrFail($id); + + try { + Event::dispatch('customer.review.delete.before', $id); + + $this->productReviewRepository->delete($id); + + Event::dispatch('customer.review.delete.after', $id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Review'])); + + return response()->json(['message' => true], 200); + } catch (\Exception $e) { + session()->flash('success', trans('admin::app.response.delete-failed', ['name' => 'Review'])); + } + + return response()->json(['message' => false], 400); + } + + /** + * Mass delete the reviews on the products. + * + * @return response + */ + public function massDestroy() + { + $suppressFlash = false; + + if (request()->isMethod('post')) { + $data = request()->all(); + + $indexes = explode(',', request()->input('indexes')); + + foreach ($indexes as $key => $value) { + try { + Event::dispatch('customer.review.delete.before', $value); + + $this->productReviewRepository->delete($value); + + Event::dispatch('customer.review.delete.after', $value); + } catch(\Exception $e) { + $suppressFlash = true; + + continue; + } + } + + if (! $suppressFlash) + session()->flash('success', trans('admin::app.datagrid.mass-ops.delete-success', ['resource' => 'Reviews'])); + else + session()->flash('info', trans('admin::app.datagrid.mass-ops.partial-action', ['resource' => 'Reviews'])); + + return redirect()->route($this->_config['redirect']); + + } else { + session()->flash('error', trans('admin::app.datagrid.mass-ops.method-error')); + + return redirect()->back(); + } + } + + /** + * Mass approve the reviews on the products. + * + * @return response + */ + public function massUpdate() + { + $suppressFlash = false; + + if (request()->isMethod('post')) { + $data = request()->all(); + + $indexes = explode(',', request()->input('indexes')); + + foreach ($indexes as $key => $value) { + $review = $this->productReviewRepository->findOneByField('id', $value); + + try { + if ($data['massaction-type'] == 'update') { + if ($data['update-options'] == 1) { + Event::dispatch('customer.review.update.before', $value); + + $review->update(['status' => 'approved']); + + Event::dispatch('customer.review.update.after', $review); + } else if ($data['update-options'] == 0) { + $review->update(['status' => 'pending']); + } else if ($data['update-options'] == 2) { + $review->update(['status' => 'disapproved']); + } else { + continue; + } + } + } catch(\Exception $e) { + $suppressFlash = true; + + continue; + } + } + + if (! $suppressFlash) + session()->flash('success', trans('admin::app.datagrid.mass-ops.update-success', ['resource' => 'Reviews'])); + else + session()->flash('info', trans('admin::app.datagrid.mass-ops.partial-action', ['resource' => 'Reviews'])); + + return redirect()->route($this->_config['redirect']); + } else { + session()->flash('error', trans('admin::app.datagrid.mass-ops.method-error')); + + return redirect()->back(); + } + } +} diff --git a/packages/Webkul/Product/src/Http/Requests/ProductForm.php b/packages/Webkul/Product/src/Http/Requests/ProductForm.php new file mode 100755 index 000000000..7304c2f82 --- /dev/null +++ b/packages/Webkul/Product/src/Http/Requests/ProductForm.php @@ -0,0 +1,128 @@ +attributeFamily = $attributeFamily; + + $this->product = $product; + + $this->attributeValue = $attributeValue; + } + + protected $rules; + + /** + * Determine if the product is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + $product = $this->product->find($this->id); + + $this->rules = array_merge($product->getTypeInstance()->getTypeValidationRules(), [ + 'sku' => ['required', 'unique:products,sku,' . $this->id, new \Webkul\Core\Contracts\Validations\Slug], + 'images.*' => 'mimes:jpeg,jpg,bmp,png', + 'special_price_from' => 'nullable|date', + 'special_price_to' => 'nullable|date|after_or_equal:special_price_from' + ]); + + foreach ($product->getEditableAttributes() as $attribute) { + if ($attribute->code == 'sku' || $attribute->type == 'boolean') + continue; + + $validations = []; + + if (! isset($this->rules[$attribute->code])) + array_push($validations, $attribute->is_required ? 'required' : 'nullable'); + else + $validations = $this->rules[$attribute->code]; + + if ($attribute->type == 'text' && $attribute->validation) { + array_push($validations, + $attribute->validation == 'decimal' + ? new \Webkul\Core\Contracts\Validations\Decimal + : $attribute->validation + ); + } + + if ($attribute->type == 'price') + array_push($validations, new \Webkul\Core\Contracts\Validations\Decimal); + + if ($attribute->is_unique) { + array_push($validations, function ($field, $value, $fail) use ($attribute) { + $column = ProductAttributeValue::$attributeTypeFields[$attribute->type]; + + if (! $this->attributeValue->isValueUnique($this->id, $attribute->id, $column, request($attribute->code))) + $fail('The :attribute has already been taken.'); + }); + } + + $this->rules[$attribute->code] = $validations; + } + + return $this->rules; + } + + /** + * Custom message for validation + * + * @return array + */ + public function messages() + { + return [ + 'variants.*.sku.unique' => 'The sku has already been taken.', + ]; + } +} diff --git a/packages/Webkul/Product/src/Listeners/ProductFlat.php b/packages/Webkul/Product/src/Listeners/ProductFlat.php new file mode 100644 index 000000000..338ade5fd --- /dev/null +++ b/packages/Webkul/Product/src/Listeners/ProductFlat.php @@ -0,0 +1,303 @@ + + * @author Prashant Singh + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductFlat +{ + /** + * AttributeRepository Repository Object + * + * @var object + */ + protected $attributeRepository; + + /** + * AttributeOptionRepository Repository Object + * + * @var object + */ + protected $attributeOptionRepository; + + /** + * ProductFlatRepository Repository Object + * + * @var object + */ + protected $productFlatRepository; + + /** + * ProductAttributeValueRepository Repository Object + * + * @var object + */ + protected $productAttributeValueRepository; + + /** + * Attribute Object + * + * @var object + */ + protected $attribute; + + /** + * @var object + */ + public $attributeTypeFields = [ + 'text' => 'text', + 'textarea' => 'text', + 'price' => 'float', + 'boolean' => 'boolean', + 'select' => 'integer', + 'multiselect' => 'text', + 'datetime' => 'datetime', + 'date' => 'date', + 'file' => 'text', + 'image' => 'text', + 'checkbox' => 'text' + ]; + + /** + * Create a new listener instance. + * + * @param Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @param Webkul\Attribute\Repositories\AttributeOptionRepository $attributeOptionRepository + * @param Webkul\Product\Repositories\ProductFlatRepository $productFlatRepository + * @param Webkul\Product\Repositories\ProductAttributeValueRepository $productAttributeValueRepository + * @return void + */ + public function __construct( + AttributeRepository $attributeRepository, + AttributeOptionRepository $attributeOptionRepository, + ProductFlatRepository $productFlatRepository, + ProductAttributeValueRepository $productAttributeValueRepository + ) + { + $this->attributeRepository = $attributeRepository; + + $this->attributeOptionRepository = $attributeOptionRepository; + + $this->productAttributeValueRepository = $productAttributeValueRepository; + + $this->productFlatRepository = $productFlatRepository; + } + + /** + * After the attribute is created + * + * @return void + */ + public function afterAttributeCreatedUpdated($attribute) + { + if (! $attribute->is_user_defined) { + return false; + } + + if (! $attribute->use_in_flat) { + $this->afterAttributeDeleted($attribute->id); + return false; + } + + if (! Schema::hasColumn('product_flat', $attribute->code)) { + Schema::table('product_flat', function (Blueprint $table) use($attribute) { + $table->{$this->attributeTypeFields[$attribute->type]}($attribute->code)->nullable(); + + if ($attribute->type == 'select' || $attribute->type == 'multiselect') { + $table->string($attribute->code . '_label')->nullable(); + } + }); + } + } + + public function afterAttributeDeleted($attributeId) + { + $attribute = $this->attributeRepository->find($attributeId); + + if (Schema::hasColumn('product_flat', strtolower($attribute->code))) { + Schema::table('product_flat', function (Blueprint $table) use($attribute) { + $table->dropColumn($attribute->code); + + if ($attribute->type == 'select' || $attribute->type == 'multiselect') { + $table->dropColumn($attribute->code . '_label'); + } + }); + } + } + + /** + * Creates product flat + * + * @param Product $product + * @return void + */ + public function afterProductCreatedUpdated($product) + { + $this->createFlat($product); + + if (ProductType::hasVariants($product->type)) { + foreach ($product->variants()->get() as $variant) { + $this->createFlat($variant, $product); + } + } + } + + /** + * Creates product flat + * + * @param Product $product + * @param Product $parentProduct + * @return void + */ + public function createFlat($product, $parentProduct = null) + { + static $familyAttributes = []; + + static $superAttributes = []; + + if (! array_key_exists($product->attribute_family->id, $familyAttributes)) + $familyAttributes[$product->attribute_family->id] = $product->attribute_family->custom_attributes; + + if ($parentProduct && ! array_key_exists($parentProduct->id, $superAttributes)) + $superAttributes[$parentProduct->id] = $parentProduct->super_attributes()->pluck('code')->toArray(); + + if (isset($product['channels'])) { + foreach ($product['channels'] as $channel) { + $channel = app('Webkul\Core\Repositories\ChannelRepository')->findOrFail($channel); + $channels[] = $channel['code']; + } + } else if (isset($parentProduct['channels'])){ + foreach ($parentProduct['channels'] as $channel) { + $channel = app('Webkul\Core\Repositories\ChannelRepository')->findOrFail($channel); + $channels[] = $channel['code']; + } + } else { + $channels[] = core()->getDefaultChannelCode(); + } + + foreach (core()->getAllChannels() as $channel) { + if (in_array($channel->code, $channels)) { + foreach ($channel->locales as $locale) { + $productFlat = $this->productFlatRepository->findOneWhere([ + 'product_id' => $product->id, + 'channel' => $channel->code, + 'locale' => $locale->code + ]); + + if (! $productFlat) { + $productFlat = $this->productFlatRepository->create([ + 'product_id' => $product->id, + 'channel' => $channel->code, + 'locale' => $locale->code + ]); + } + + foreach ($familyAttributes[$product->attribute_family->id] as $attribute) { + if ($parentProduct && ! in_array($attribute->code, array_merge($superAttributes[$parentProduct->id], ['sku', 'name', 'price', 'weight', 'status']))) + continue; + + if (in_array($attribute->code, ['tax_category_id'])) + continue; + + if (! Schema::hasColumn('product_flat', $attribute->code)) + continue; + + if ($attribute->value_per_channel) { + if ($attribute->value_per_locale) { + $productAttributeValue = $product->attribute_values()->where('channel', $channel->code)->where('locale', $locale->code)->where('attribute_id', $attribute->id)->first(); + } else { + $productAttributeValue = $product->attribute_values()->where('channel', $channel->code)->where('attribute_id', $attribute->id)->first(); + } + } else { + if ($attribute->value_per_locale) { + $productAttributeValue = $product->attribute_values()->where('locale', $locale->code)->where('attribute_id', $attribute->id)->first(); + } else { + $productAttributeValue = $product->attribute_values()->where('attribute_id', $attribute->id)->first(); + } + } + + $productFlat->{$attribute->code} = $productAttributeValue[ProductAttributeValue::$attributeTypeFields[$attribute->type]] ?? null; + + if ($attribute->type == 'select') { + $attributeOption = $this->attributeOptionRepository->find($product->{$attribute->code}); + + if ($attributeOption) { + if ($attributeOptionTranslation = $attributeOption->translate($locale->code)) { + $productFlat->{$attribute->code . '_label'} = $attributeOptionTranslation->label; + } else { + $productFlat->{$attribute->code . '_label'} = $attributeOption->admin_name; + } + } + } elseif ($attribute->type == 'multiselect') { + $attributeOptionIds = explode(',', $product->{$attribute->code}); + + if (count($attributeOptionIds)) { + $attributeOptions = $this->attributeOptionRepository->findWhereIn('id', $attributeOptionIds); + + $optionLabels = []; + + foreach ($attributeOptions as $attributeOption) { + if ($attributeOptionTranslation = $attributeOption->translate($locale->code)) { + $optionLabels[] = $attributeOptionTranslation->label; + } else { + $optionLabels[] = $attributeOption->admin_name; + } + } + + $productFlat->{$attribute->code . '_label'} = implode(', ', $optionLabels); + } + } + } + + $productFlat->created_at = $product->created_at; + + $productFlat->updated_at = $product->updated_at; + + $productFlat->min_price = $product->getTypeInstance()->getMinimalPrice(); + + $productFlat->max_price = $product->getTypeInstance()->getMaximamPrice(); + + if ($parentProduct) { + $parentProductFlat = $this->productFlatRepository->findOneWhere([ + 'product_id' => $parentProduct->id, + 'channel' => $channel->code, + 'locale' => $locale->code + ]); + + if ($parentProductFlat) + $productFlat->parent_id = $parentProductFlat->id; + } + + $productFlat->save(); + } + } else { + $route = request()->route() ? request()->route()->getName() : ""; + + if ($route == 'admin.catalog.products.update') { + $productFlat = $this->productFlatRepository->findOneWhere([ + 'product_id' => $product->id, + 'channel' => $channel->code, + ]); + + if ($productFlat) { + $this->productFlatRepository->delete($productFlat->id); + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/Product.php b/packages/Webkul/Product/src/Models/Product.php new file mode 100755 index 000000000..ce9ab9d08 --- /dev/null +++ b/packages/Webkul/Product/src/Models/Product.php @@ -0,0 +1,359 @@ +belongsTo(AttributeFamilyProxy::modelClass()); + } + + /** + * Get the product attribute values that owns the product. + */ + public function attribute_values() + { + return $this->hasMany(ProductAttributeValueProxy::modelClass()); + } + + /** + * Get the product variants that owns the product. + */ + public function variants() + { + return $this->hasMany(static::class, 'parent_id'); + } + + /** + * Get the product reviews that owns the product. + */ + public function reviews() + { + return $this->hasMany(ProductReviewProxy::modelClass()); + } + + /** + * Get the product that owns the product. + */ + public function parent() + { + return $this->belongsTo(static::class, 'parent_id'); + } + + /** + * The categories that belong to the product. + */ + public function categories() + { + return $this->belongsToMany(CategoryProxy::modelClass(), 'product_categories'); + } + + /** + * The inventories that belong to the product. + */ + public function inventories() + { + return $this->hasMany(ProductInventoryProxy::modelClass(), 'product_id'); + } + + /** + * The ordered inventories that belong to the product. + */ + public function ordered_inventories() + { + return $this->hasMany(ProductOrderedInventoryProxy::modelClass(), 'product_id'); + } + + /** + * The inventory sources that belong to the product. + */ + public function inventory_sources() + { + return $this->belongsToMany(InventorySourceProxy::modelClass(), 'product_inventories')->withPivot('id', 'qty'); + } + + /** + * The super attributes that belong to the product. + */ + public function super_attributes() + { + return $this->belongsToMany(AttributeProxy::modelClass(), 'product_super_attributes'); + } + + /** + * The images that belong to the product. + */ + public function images() + { + return $this->hasMany(ProductImageProxy::modelClass(), 'product_id'); + } + + /** + * The images that belong to the product. + */ + public function getBaseImageUrlAttribute() + { + $image = $this->images()->first(); + + return $image ? $image->url : null; + } + + /** + * The related products that belong to the product. + */ + public function related_products() + { + return $this->belongsToMany(static::class, 'product_relations', 'parent_id', 'child_id')->limit(4); + } + + /** + * The up sells that belong to the product. + */ + public function up_sells() + { + return $this->belongsToMany(static::class, 'product_up_sells', 'parent_id', 'child_id')->limit(4); + } + + /** + * The cross sells that belong to the product. + */ + public function cross_sells() + { + return $this->belongsToMany(static::class, 'product_cross_sells', 'parent_id', 'child_id')->limit(4); + } + + /** + * The images that belong to the product. + */ + public function downloadable_samples() + { + return $this->hasMany(ProductDownloadableSampleProxy::modelClass()); + } + + /** + * The images that belong to the product. + */ + public function downloadable_links() + { + return $this->hasMany(ProductDownloadableLinkProxy::modelClass()); + } + + /** + * Get the grouped products that owns the product. + */ + public function grouped_products() + { + return $this->hasMany(ProductGroupedProductProxy::modelClass()); + } + + /** + * Get the bundle options that owns the product. + */ + public function bundle_options() + { + return $this->hasMany(ProductBundleOptionProxy::modelClass()); + } + + /** + * @param integer $qty + * + * @return bool + */ + public function inventory_source_qty($inventorySourceId) + { + return $this->inventories() + ->where('inventory_source_id', $inventorySourceId) + ->sum('qty'); + } + + /** + * Retrieve type instance + * + * @return AbstractType + */ + public function getTypeInstance() + { + if ($this->typeInstance) + return $this->typeInstance; + + $this->typeInstance = app(config('product_types.' . $this->type . '.class')); + + $this->typeInstance->setProduct($this); + + return $this->typeInstance; + } + + /** + * @param string $key + * + * @return bool + */ + public function isSaleable() + { + return $this->getTypeInstance()->isSaleable(); + } + + /** + * @return integer + */ + public function totalQuantity() + { + return $this->getTypeInstance()->totalQuantity(); + } + + /** + * @param integer $qty + * + * @return bool + */ + public function haveSufficientQuantity($qty) + { + return $this->getTypeInstance()->haveSufficientQuantity($qty); + } + + /** + * @return bool + */ + public function isStockable() + { + return $this->getTypeInstance()->isStockable(); + } + + /** + * Retrieve product attributes + * + * @param Group $group + * @param bool $skipSuperAttribute + * @return Collection + */ + public function getEditableAttributes($group = null, $skipSuperAttribute = true) + { + return $this->getTypeInstance()->getEditableAttributes($group, $skipSuperAttribute); + } + + /** + * Get an attribute from the model. + * + * @param string $key + * @return mixed + */ + public function getAttribute($key) + { + if (! method_exists(static::class, $key) && ! in_array($key, ['parent_id', 'attribute_family_id']) && ! isset($this->attributes[$key])) { + if (isset($this->id)) { + $this->attributes[$key] = ''; + + $attribute = core()->getSingletonInstance(\Webkul\Attribute\Repositories\AttributeRepository::class) + ->getAttributeByCode($key); + + $this->attributes[$key] = $this->getCustomAttributeValue($attribute); + + return $this->getAttributeValue($key); + } + } + + return parent::getAttribute($key); + } + + /** + * @return array + */ + public function attributesToArray() + { + $attributes = parent::attributesToArray(); + + $hiddenAttributes = $this->getHidden(); + + if (isset($this->id)) { + $familyAttributes = core()->getSingletonInstance(\Webkul\Attribute\Repositories\AttributeRepository::class) + ->getFamilyAttributes($this->attribute_family); + + foreach ($familyAttributes as $attribute) { + if (in_array($attribute->code, $hiddenAttributes)) { + continue; + } + + $attributes[$attribute->code] = $this->getCustomAttributeValue($attribute); + } + } + + return $attributes; + } + + /** + * Get an product attribute value. + * + * @return mixed + */ + public function getCustomAttributeValue($attribute) + { + if (! $attribute) + return; + + $channel = request()->get('channel') ?: (core()->getCurrentChannelCode() ?: core()->getDefaultChannelCode()); + + $locale = request()->get('locale') ?: app()->getLocale(); + + if ($attribute->value_per_channel) { + if ($attribute->value_per_locale) { + $attributeValue = $this->attribute_values()->where('channel', $channel)->where('locale', $locale)->where('attribute_id', $attribute->id)->first(); + } else { + $attributeValue = $this->attribute_values()->where('channel', $channel)->where('attribute_id', $attribute->id)->first(); + } + } else { + if ($attribute->value_per_locale) { + $attributeValue = $this->attribute_values()->where('locale', $locale)->where('attribute_id', $attribute->id)->first(); + } else { + $attributeValue = $this->attribute_values()->where('attribute_id', $attribute->id)->first(); + } + } + + return $attributeValue[ProductAttributeValue::$attributeTypeFields[$attribute->type]] ?? null; + } + + /** + * Overrides the default Eloquent query builder + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function newEloquentBuilder($query) + { + return new \Webkul\Product\Database\Eloquent\Builder($query); + } + + /** + * Return the product id attribute. + */ + public function getProductIdAttribute() + { + return $this->id; + } + + /** + * Return the product attribute. + */ + public function getProductAttribute() + { + return $this; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductAttributeValue.php b/packages/Webkul/Product/src/Models/ProductAttributeValue.php new file mode 100755 index 000000000..8c4e1c1ef --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductAttributeValue.php @@ -0,0 +1,69 @@ + 'text_value', + 'textarea' => 'text_value', + 'price' => 'float_value', + 'boolean' => 'boolean_value', + 'select' => 'integer_value', + 'multiselect' => 'text_value', + 'datetime' => 'datetime_value', + 'date' => 'date_value', + 'file' => 'text_value', + 'image' => 'text_value', + 'checkbox' => 'text_value', + ]; + + protected $fillable = [ + 'product_id', + 'attribute_id', + 'channel_id', + 'locale', + 'channel', + 'text_value', + 'boolean_value', + 'integer_value', + 'float_value', + 'datetime_value', + 'date_value', + 'json_value' + ]; + + /** + * Get the attribute that owns the attribute value. + */ + public function attribute() + { + return $this->belongsTo(AttributeProxy::modelClass()); + } + + /** + * Get the product that owns the attribute value. + */ + public function product() + { + return $this->belongsTo(ProductProxy::modelClass()); + } + + /** + * Get the channel that owns the attribute value. + */ + public function channel() + { + return $this->belongsTo(ChannelProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductAttributeValueProxy.php b/packages/Webkul/Product/src/Models/ProductAttributeValueProxy.php new file mode 100644 index 000000000..9c3598eb9 --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductAttributeValueProxy.php @@ -0,0 +1,10 @@ +belongsTo(ProductProxy::modelClass()); + } + + /** + * Get the bundle option products that owns the bundle option. + */ + public function bundle_option_products() + { + return $this->hasMany(ProductBundleOptionProductProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductBundleOptionProduct.php b/packages/Webkul/Product/src/Models/ProductBundleOptionProduct.php new file mode 100644 index 000000000..2faa5efce --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductBundleOptionProduct.php @@ -0,0 +1,29 @@ +belongsTo(ProductBundleProductProxy::modelClass()); + } + + /** + * Get the product that owns the image. + */ + public function product() + { + return $this->belongsTo(ProductProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductBundleOptionProductProxy.php b/packages/Webkul/Product/src/Models/ProductBundleOptionProductProxy.php new file mode 100644 index 000000000..2968b065a --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductBundleOptionProductProxy.php @@ -0,0 +1,10 @@ +belongsTo(ProductProxy::modelClass()); + } + + /** + * Get image url for the file. + */ + public function file_url() + { + return Storage::url($this->path); + } + + /** + * Get image url for the file. + */ + public function getFileUrlAttribute() + { + return $this->file_url(); + } + + /** + * Get image url for the sample file. + */ + public function sample_file_url() + { + return Storage::url($this->path); + } + + /** + * Get image url for the sample file. + */ + public function getSampleFileUrlAttribute() + { + return $this->sample_file_url(); + } + + /** + * @return array + */ + public function toArray() + { + $array = parent::toArray(); + + $translation = $this->translate(request()->get('locale') ?: app()->getLocale()); + + $array['title'] = $translation ? $translation->title : ''; + + $array['file_url'] = $this->file ? Storage::url($this->file) : null; + + $array['sample_file_url'] = $this->sample_file ? Storage::url($this->sample_file) : null; + + return $array; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductDownloadableLinkProxy.php b/packages/Webkul/Product/src/Models/ProductDownloadableLinkProxy.php new file mode 100644 index 000000000..9f0036336 --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductDownloadableLinkProxy.php @@ -0,0 +1,10 @@ +belongsTo(ProductProxy::modelClass()); + } + + /** + * Get image url for the file. + */ + public function file_url() + { + return Storage::url($this->path); + } + + /** + * Get image url for the file. + */ + public function getFileUrlAttribute() + { + return $this->file_url(); + } + + /** + * @return array + */ + public function toArray() + { + $array = parent::toArray(); + + + $translation = $this->translate(request()->get('locale') ?: app()->getLocale()); + + $array['title'] = $translation ? $translation->title : ''; + + $array['file_url'] = $this->file ? Storage::url($this->file) : null; + + return $array; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductDownloadableSampleProxy.php b/packages/Webkul/Product/src/Models/ProductDownloadableSampleProxy.php new file mode 100644 index 000000000..6508dba29 --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductDownloadableSampleProxy.php @@ -0,0 +1,10 @@ +product->getTypeInstance(); + } + + /** + * Get the product attribute family that owns the product. + */ + public function getAttributeFamilyAttribute() + { + return $this->product->attribute_family; + } + + /** + * Get the product that owns the attribute value. + */ + public function product() + { + return $this->belongsTo(ProductProxy::modelClass()); + } + + /** + * Get the product variants that owns the product. + */ + public function variants() + { + return $this->hasMany(static::class, 'parent_id'); + } + + /** + * Get the product that owns the product. + */ + public function parent() + { + return $this->belongsTo(self::class, 'parent_id'); + } + + /** + * Get product type value from base product + */ + public function getTypeAttribute() + { + return $this->product->type; + } + + /** + * @param string $key + * + * @return bool + */ + public function isSaleable() + { + return $this->product->isSaleable(); + } + + /** + * @return integer + */ + public function totalQuantity() + { + return $this->product->totalQuantity(); + } + + /** + * @param integer $qty + * + * @return bool + */ + public function haveSufficientQuantity($qty) + { + return $this->product->haveSufficientQuantity($qty); + } + + /** + * @return bool + */ + public function isStockable() + { + return $this->product->isStockable(); + } + + /** + * The images that belong to the product. + */ + public function images() + { + return (ProductImageProxy::modelClass()) + ::where('product_images.product_id', $this->product_id) + ->select('product_images.*'); + } + + /** + * Get all of the attributes for the attribute groups. + */ + public function getImagesAttribute() + { + return $this->images()->get(); + } + + /** + * The reviews that belong to the product. + */ + public function reviews() + { + return (ProductReviewProxy::modelClass()) + ::where('product_reviews.product_id', $this->product_id) + ->select('product_reviews.*'); + } + + /** + * Get all of the reviews for the attribute groups. + */ + public function getReviewsAttribute() + { + return $this->reviews()->get(); + } + + /** + * The related products that belong to the product. + */ + public function related_products() + { + return $this->product->related_products(); + } + + /** + * The up sells that belong to the product. + */ + public function up_sells() + { + return $this->product->up_sells(); + } + + /** + * The cross sells that belong to the product. + */ + public function cross_sells() + { + return $this->product->cross_sells(); + } + + /** + * The images that belong to the product. + */ + public function downloadable_samples() + { + return $this->product->downloadable_samples(); + } + + /** + * The images that belong to the product. + */ + public function downloadable_links() + { + return $this->product->downloadable_links(); + } + + /** + * Get the grouped products that owns the product. + */ + public function grouped_products() + { + return $this->product->grouped_products(); + } + + /** + * Get the bundle options that owns the product. + */ + public function bundle_options() + { + return $this->product->bundle_options(); + } + + /** + * Retrieve product attributes + * + * @param Group $group + * @param bool $skipSuperAttribute + * @return Collection + */ + public function getEditableAttributes($group = null, $skipSuperAttribute = true) + { + return $this->product->getEditableAttributes($groupId, $skipSuperAttribute); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductFlatProxy.php b/packages/Webkul/Product/src/Models/ProductFlatProxy.php new file mode 100644 index 000000000..2d461b427 --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductFlatProxy.php @@ -0,0 +1,10 @@ +belongsTo(ProductProxy::modelClass()); + } + + /** + * Get the product that owns the image. + */ + public function associated_product() + { + return $this->belongsTo(ProductProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductGroupedProductProxy.php b/packages/Webkul/Product/src/Models/ProductGroupedProductProxy.php new file mode 100644 index 000000000..ad7553503 --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductGroupedProductProxy.php @@ -0,0 +1,10 @@ +belongsTo(ProductProxy::modelClass()); + } + + /** + * Get image url for the product image. + */ + public function url() + { + return Storage::url($this->path); + } + + /** + * Get image url for the product image. + */ + public function getUrlAttribute() + { + return $this->url(); + } + + /** + * @param string $key + * + * @return bool + */ + public function isCustomAttribute($attribute) + { + return $this->attribute_family->custom_attributes->pluck('code')->contains($attribute); + } + + /** + * @return array + */ + public function toArray() + { + $array = parent::toArray(); + + $array['url'] = $this->url; + + return $array; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductImageProxy.php b/packages/Webkul/Product/src/Models/ProductImageProxy.php new file mode 100644 index 000000000..158b91121 --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductImageProxy.php @@ -0,0 +1,10 @@ +belongsTo(InventorySourceProxy::modelClass()); + } + + /** + * Get the product that owns the product inventory. + */ + public function product() + { + return $this->belongsTo(ProductProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductInventoryProxy.php b/packages/Webkul/Product/src/Models/ProductInventoryProxy.php new file mode 100644 index 000000000..77bdd32e5 --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductInventoryProxy.php @@ -0,0 +1,10 @@ +belongsTo(ChannelProxy::modelClass()); + } + + /** + * Get the product that owns the product inventory. + */ + public function product() + { + return $this->belongsTo(ProductProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductOrderedInventoryProxy.php b/packages/Webkul/Product/src/Models/ProductOrderedInventoryProxy.php new file mode 100644 index 000000000..78dd084d5 --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductOrderedInventoryProxy.php @@ -0,0 +1,10 @@ +belongsTo(CustomerProxy::modelClass()); + } + + /** + * Get the product. + */ + public function product() + { + return $this->belongsTo(ProductProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductReviewProxy.php b/packages/Webkul/Product/src/Models/ProductReviewProxy.php new file mode 100644 index 000000000..5df262a64 --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductReviewProxy.php @@ -0,0 +1,10 @@ +belongsTo(ChannelProxy::modelClass()); + } + + // /** + // * Get the inventory source owns the product. + // */ + // public function inventory_source() + // { + // return $this->belongsTo(InventorySource::class); + // } + + /** + * Get the product that owns the product inventory. + */ + public function product() + { + return $this->belongsTo(ProductProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductSalableInventoryProxy.php b/packages/Webkul/Product/src/Models/ProductSalableInventoryProxy.php new file mode 100644 index 000000000..95c25ccf0 --- /dev/null +++ b/packages/Webkul/Product/src/Models/ProductSalableInventoryProxy.php @@ -0,0 +1,10 @@ +id); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Providers/EventServiceProvider.php b/packages/Webkul/Product/src/Providers/EventServiceProvider.php new file mode 100644 index 000000000..287296c30 --- /dev/null +++ b/packages/Webkul/Product/src/Providers/EventServiceProvider.php @@ -0,0 +1,27 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + + $this->app->register(EventServiceProvider::class); + + $this->publishes([ + dirname(__DIR__) . '/Config/imagecache.php' => config_path('imagecache.php'), + ]); + + ProductProxy::observe(ProductObserver::class); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + $this->registerConfig(); + + $this->registerCommands(); + } + + public function registerConfig() { + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/product_types.php', 'product_types' + ); + } + + /** + * Register the console commands of this package + */ + protected function registerCommands() + { + if ($this->app->runningInConsole()) + $this->commands([PriceUpdate::class,]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductAttributeValueRepository.php b/packages/Webkul/Product/src/Repositories/ProductAttributeValueRepository.php new file mode 100755 index 000000000..689e262c0 --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductAttributeValueRepository.php @@ -0,0 +1,84 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductAttributeValueRepository extends Repository +{ + /** + * AttributeRepository object + * + * @var array + */ + protected $attributeRepository; + + /** + * Create a new controller instance. + * + * @param Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @return void + */ + public function __construct( + AttributeRepository $attributeRepository, + App $app + ) + { + $this->attributeRepository = $attributeRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Product\Contracts\ProductAttributeValue'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + if (isset($data['attribute_id'])) { + $attribute = $this->attributeRepository->find($data['attribute_id']); + } else { + $attribute = $this->attributeRepository->findOneByField('code', $data['attribute_code']); + } + + if (! $attribute) + return; + + $data[ProductAttributeValue::$attributeTypeFields[$attribute->type]] = $data['value']; + + return $this->model->create($data); + } + + /** + * @param string $column + * @param int $attributeId + * @param int $productId + * @param string $value + * @return boolean + */ + public function isValueUnique($productId, $attributeId, $column, $value) + { + $result = $this->resetScope()->model->where($column, $value)->where('attribute_id', '=', $attributeId)->where('product_id', '!=', $productId)->get(); + + return $result->count() ? false : true; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductBundleOptionProductRepository.php b/packages/Webkul/Product/src/Repositories/ProductBundleOptionProductRepository.php new file mode 100644 index 000000000..a05bc7415 --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductBundleOptionProductRepository.php @@ -0,0 +1,74 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductBundleOptionProductRepository extends Repository +{ + public function model() + { + return 'Webkul\Product\Contracts\ProductBundleOptionProduct'; + } + + /** + * @param array $data + * @param ProductBundleOption $productBundleOption + * @return void + */ + public function saveBundleOptonProducts($data, $productBundleOption) + { + $previousBundleOptionProductIds = $productBundleOption->bundle_option_products()->pluck('id'); + + if (isset($data['products'])) { + $this->setIsDefaultFlag($data); + + foreach ($data['products'] as $bundleOptionProductId => $bundleOptionProductInputs) { + if (Str::contains($bundleOptionProductId, 'product_')) { + $this->create(array_merge([ + 'product_bundle_option_id' => $productBundleOption->id, + ], $bundleOptionProductInputs)); + } else { + if (is_numeric($index = $previousBundleOptionProductIds->search($bundleOptionProductId))) + $previousBundleOptionProductIds->forget($index); + + $this->update($bundleOptionProductInputs, $bundleOptionProductId); + } + } + } + + foreach ($previousBundleOptionProductIds as $previousBundleOptionProductId) { + $this->delete($previousBundleOptionProductId); + } + } + + /** + * @param array $data + * @return void + */ + public function setIsDefaultFlag(&$data) + { + if (! count($data['products'])) + return; + + $haveIsDefaulFlag = false; + + foreach ($data['products'] as $key => $product) { + if (isset($product['is_default']) && $product['is_default']) { + $haveIsDefaulFlag = true; + } else { + $data['products'][$key]['is_default'] = 0; + } + } + + if (! $haveIsDefaulFlag) + $data['products'][key($data['products'])]['is_default'] = 1; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductBundleOptionRepository.php b/packages/Webkul/Product/src/Repositories/ProductBundleOptionRepository.php new file mode 100644 index 000000000..aa384a21a --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductBundleOptionRepository.php @@ -0,0 +1,77 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductBundleOptionRepository extends Repository +{ + /** + * ProductBundleOptionProductRepository object + * + * @var ProductBundleOptionProductRepository + */ + protected $productBundleOptionProductRepository; + + /** + * Create a new controller instance. + * + * @param Webkul\Product\Repositories\ProductBundleOptionProductRepository $productBundleOptionProductRepository + * @return void + */ + public function __construct( + ProductBundleOptionProductRepository $productBundleOptionProductRepository, + App $app + ) + { + $this->productBundleOptionProductRepository = $productBundleOptionProductRepository; + + parent::__construct($app); + } + + public function model() + { + return 'Webkul\Product\Contracts\ProductBundleOption'; + } + + /** + * @param array $data + * @param Product $product + * @return void + */ + public function saveBundleOptons($data, $product) + { + $previousBundleOptionIds = $product->bundle_options()->pluck('id'); + + if (isset($data['bundle_options'])) { + foreach ($data['bundle_options'] as $bundleOptionId => $bundleOptionInputs) { + if (Str::contains($bundleOptionId, 'option_')) { + $productBundleOption = $this->create(array_merge([ + 'product_id' => $product->id, + ], $bundleOptionInputs)); + } else { + $productBundleOption = $this->find($bundleOptionId); + + if (is_numeric($index = $previousBundleOptionIds->search($bundleOptionId))) + $previousBundleOptionIds->forget($index); + + $this->update($bundleOptionInputs, $bundleOptionId); + } + + $this->productBundleOptionProductRepository->saveBundleOptonProducts($bundleOptionInputs, $productBundleOption); + } + } + + foreach ($previousBundleOptionIds as $previousBundleOptionId) { + $this->delete($previousBundleOptionId); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductDownloadableLinkRepository.php b/packages/Webkul/Product/src/Repositories/ProductDownloadableLinkRepository.php new file mode 100755 index 000000000..969c13844 --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductDownloadableLinkRepository.php @@ -0,0 +1,76 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductDownloadableLinkRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Product\Contracts\ProductDownloadableLink'; + } + + /** + * @param array $data + * @param integer $productId + * @return mixed + */ + public function upload($data, $productId) + { + foreach ($data as $type => $file) { + if (request()->hasFile($type)) { + return [ + $type => $path = request()->file($type)->store('product_downloadable_links/' . $productId), + $type . '_name' => $file->getClientOriginalName(), + $type . '_url' => Storage::url($path) + ]; + } + } + + return []; + } + + /** + * @param array $data + * @param mixed $product + * @return void + */ + public function saveLinks(array $data, $product) + { + $previousLinkIds = $product->downloadable_links()->pluck('id'); + + if (isset($data['downloadable_links'])) { + foreach ($data['downloadable_links'] as $linkId => $data) { + if (Str::contains($linkId, 'link_')) { + $this->create(array_merge([ + 'product_id' => $product->id, + ], $data)); + } else { + if (is_numeric($index = $previousLinkIds->search($linkId))) { + $previousLinkIds->forget($index); + } + + $this->update($data, $linkId); + } + } + } + + foreach ($previousLinkIds as $linkId) { + $this->delete($linkId); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductDownloadableSampleRepository.php b/packages/Webkul/Product/src/Repositories/ProductDownloadableSampleRepository.php new file mode 100755 index 000000000..748bef239 --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductDownloadableSampleRepository.php @@ -0,0 +1,74 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductDownloadableSampleRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Product\Contracts\ProductDownloadableSample'; + } + + /** + * @param array $data + * @param integer $productId + * @return mixed + */ + public function upload($data, $productId) + { + if (request()->hasFile('file')) { + return [ + 'file' => $path = request()->file('file')->store('product_downloadable_links/' . $productId), + 'file_name' => request()->file('file')->getClientOriginalName(), + 'file_url' => Storage::url($path) + ]; + } + + return []; + } + + /** + * @param array $data + * @param mixed $product + * @return void + */ + public function saveSamples(array $data, $product) + { + $previousSampleIds = $product->downloadable_samples()->pluck('id'); + + if (isset($data['downloadable_samples'])) { + foreach ($data['downloadable_samples'] as $sampleId => $data) { + if (Str::contains($sampleId, 'sample_')) { + $this->create(array_merge([ + 'product_id' => $product->id, + ], $data)); + } else { + if (is_numeric($index = $previousSampleIds->search($sampleId))) { + $previousSampleIds->forget($index); + } + + $this->update($data, $sampleId); + } + } + } + + foreach ($previousSampleIds as $sampleId) { + $this->delete($sampleId); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php b/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php new file mode 100644 index 000000000..ee937894e --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php @@ -0,0 +1,64 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductFlatRepository extends Repository +{ + public function model() + { + return 'Webkul\Product\Contracts\ProductFlat'; + } + + /** + * Maximum Price of Category Product + * + * @param Category $category + * @return float + */ + public function getCategoryProductMaximumPrice($category = null) + { + if (! $category) + return $this->model->max('max_price'); + + return $this->model + ->leftJoin('product_categories', 'product_flat.product_id', 'product_categories.product_id') + ->where('product_categories.category_id', $category->id) + ->max('max_price'); + } + + /** + * get Category Product + * + * @return array + */ + public function getCategoryProductAttribute($categoryId) + { + $qb = $this->model + ->leftJoin('product_categories', 'product_flat.product_id', 'product_categories.product_id') + ->where('product_categories.category_id', $categoryId) + ->where('product_flat.channel', core()->getCurrentChannelCode()) + ->where('product_flat.locale', app()->getLocale()); + + $productArrributes = $qb + ->leftJoin('product_attribute_values as pa', 'product_flat.product_id', 'pa.product_id') + ->pluck('pa.attribute_id') + ->toArray(); + + $productSuperArrributes = $qb + ->leftJoin('product_super_attributes as ps', 'product_flat.product_id', 'ps.product_id') + ->pluck('ps.attribute_id') + ->toArray(); + + $productCategoryArrributes = array_unique(array_merge($productArrributes, $productSuperArrributes)); + + return $productCategoryArrributes; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductGroupedProductRepository.php b/packages/Webkul/Product/src/Repositories/ProductGroupedProductRepository.php new file mode 100644 index 000000000..bcccbb05b --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductGroupedProductRepository.php @@ -0,0 +1,50 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductGroupedProductRepository extends Repository +{ + public function model() + { + return 'Webkul\Product\Contracts\ProductGroupedProduct'; + } + + /** + * @param array $data + * @param Product $product + * @return void + */ + public function saveGroupedProducts($data, $product) + { + $previousGroupedProductIds = $product->grouped_products()->pluck('id'); + + if (isset($data['links'])) { + foreach ($data['links'] as $linkId => $linkInputs) { + if (Str::contains($linkId, 'link_')) { + $this->create(array_merge([ + 'product_id' => $product->id, + ], $linkInputs)); + } else { + if (is_numeric($index = $previousGroupedProductIds->search($linkId))) + $previousGroupedProductIds->forget($index); + + $this->update($linkInputs, $linkId); + } + } + } + + foreach ($previousGroupedProductIds as $previousGroupedProductId) { + $this->delete($previousGroupedProductId); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductImageRepository.php b/packages/Webkul/Product/src/Repositories/ProductImageRepository.php new file mode 100755 index 000000000..d9cecef05 --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductImageRepository.php @@ -0,0 +1,74 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductImageRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Product\Contracts\ProductImage'; + } + + /** + * @param array $data + * @param mixed $product + * @return mixed + */ + public function uploadImages($data, $product) + { + $previousImageIds = $product->images()->pluck('id'); + + if (isset($data['images'])) { + foreach ($data['images'] as $imageId => $image) { + $file = 'images.' . $imageId; + $dir = 'product/' . $product->id; + + if (Str::contains($imageId, 'image_')) { + if (request()->hasFile($file)) { + $this->create([ + 'path' => request()->file($file)->store($dir), + 'product_id' => $product->id + ]); + } + } else { + if (is_numeric($index = $previousImageIds->search($imageId))) { + $previousImageIds->forget($index); + } + + if (request()->hasFile($file)) { + if ($imageModel = $this->find($imageId)) { + Storage::delete($imageModel->path); + } + + $this->update([ + 'path' => request()->file($file)->store($dir) + ], $imageId); + } + } + } + } + + foreach ($previousImageIds as $imageId) { + if ($imageModel = $this->find($imageId)) { + Storage::delete($imageModel->path); + + $this->delete($imageId); + } + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductInventoryRepository.php b/packages/Webkul/Product/src/Repositories/ProductInventoryRepository.php new file mode 100755 index 000000000..470a91a67 --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductInventoryRepository.php @@ -0,0 +1,58 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductInventoryRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Product\Contracts\ProductInventory'; + } + + /** + * @param array $data + * @param mixed $product + * @return mixed + */ + public function saveInventories(array $data, $product) + { + if (isset($data['inventories'])) { + foreach ($data['inventories'] as $inventorySourceId => $qty) { + $qty = is_null($qty) ? 0 : $qty; + + $productInventory = $this->findOneWhere([ + 'product_id' => $product->id, + 'inventory_source_id' => $inventorySourceId, + 'vendor_id' => isset($data['vendor_id']) ? $data['vendor_id'] : 0 + ]); + + if ($productInventory) { + $productInventory->qty = $qty; + + $productInventory->save(); + } else { + $this->create([ + 'qty' => $qty, + 'product_id' => $product->id, + 'inventory_source_id' => $inventorySourceId, + 'vendor_id' => isset($data['vendor_id']) ? $data['vendor_id'] : 0 + ]); + } + } + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductRepository.php b/packages/Webkul/Product/src/Repositories/ProductRepository.php new file mode 100755 index 000000000..5538d42ae --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductRepository.php @@ -0,0 +1,372 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductRepository extends Repository +{ + /** + * AttributeRepository object + * + * @var array + */ + protected $attributeRepository; + + /** + * Create a new controller instance. + * + * @param Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @return void + */ + public function __construct( + AttributeRepository $attributeRepository, + App $app + ) + { + $this->attributeRepository = $attributeRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Product\Contracts\Product'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + Event::dispatch('catalog.product.create.before'); + + $typeInstance = app(config('product_types.' . $data['type'] . '.class')); + + $product = $typeInstance->create($data); + + Event::dispatch('catalog.product.create.after', $product); + + return $product; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute = "id") + { + Event::dispatch('catalog.product.update.before', $id); + + $product = $this->find($id); + + $product = $product->getTypeInstance()->update($data, $id, $attribute); + + if (isset($data['channels'])) + $product['channels'] = $data['channels']; + + Event::dispatch('catalog.product.update.after', $product); + + return $product; + } + + /** + * @param $id + * @return mixed + */ + public function delete($id) + { + Event::dispatch('catalog.product.delete.before', $id); + + parent::delete($id); + + Event::dispatch('catalog.product.delete.after', $id); + } + + /** + * @param integer $categoryId + * @return Collection + */ + public function getAll($categoryId = null) + { + $params = request()->input(); + + $results = app(ProductFlatRepository::class)->scopeQuery(function($query) use($params, $categoryId) { + $channel = request()->get('channel') ?: (core()->getCurrentChannelCode() ?: core()->getDefaultChannelCode()); + + $locale = request()->get('locale') ?: app()->getLocale(); + + $qb = $query->distinct() + ->addSelect('product_flat.*') + ->leftJoin('products', 'product_flat.product_id', '=', 'products.id') + ->leftJoin('product_categories', 'products.id', '=', 'product_categories.product_id') + ->where('product_flat.channel', $channel) + ->where('product_flat.locale', $locale) + ->whereNotNull('product_flat.url_key'); + + if ($categoryId) + $qb->where('product_categories.category_id', $categoryId); + + if (is_null(request()->input('status'))) + $qb->where('product_flat.status', 1); + + if (is_null(request()->input('visible_individually'))) + $qb->where('product_flat.visible_individually', 1); + + $queryBuilder = $qb->leftJoin('product_flat as flat_variants', function($qb) use($channel, $locale) { + $qb->on('product_flat.id', '=', 'flat_variants.parent_id') + ->where('flat_variants.channel', $channel) + ->where('flat_variants.locale', $locale); + }); + + if (isset($params['search'])) + $qb->where('product_flat.name', 'like', '%' . urldecode($params['search']) . '%'); + + if (isset($params['sort'])) { + $attribute = $this->attributeRepository->findOneByField('code', $params['sort']); + + if ($params['sort'] == 'price') { + if ($attribute->code == 'price') { + $qb->orderBy('min_price', $params['order']); + } else { + $qb->orderBy($attribute->code, $params['order']); + } + } else { + $qb->orderBy($params['sort'] == 'created_at' ? 'product_flat.created_at' : $attribute->code, $params['order']); + } + } + + $qb = $qb->leftJoin('products as variants', 'products.id', '=', 'variants.parent_id'); + + $qb = $qb->where(function($query1) use($qb) { + $aliases = [ + 'products' => 'filter_', + 'variants' => 'variant_filter_' + ]; + + foreach($aliases as $table => $alias) { + $query1 = $query1->orWhere(function($query2) use ($qb, $table, $alias) { + + foreach ($this->attributeRepository->getProductDefaultAttributes(array_keys(request()->input())) as $code => $attribute) { + $aliasTemp = $alias . $attribute->code; + + $qb = $qb->leftJoin('product_attribute_values as ' . $aliasTemp, $table . '.id', '=', $aliasTemp . '.product_id'); + + $column = ProductAttributeValue::$attributeTypeFields[$attribute->type]; + + $temp = explode(',', request()->get($attribute->code)); + + if ($attribute->type != 'price') { + $query2 = $query2->where($aliasTemp . '.attribute_id', $attribute->id); + + $query2 = $query2->where(function($query3) use($aliasTemp, $column, $temp) { + foreach($temp as $code => $filterValue) { + if (! is_numeric($filterValue)) + continue; + + $columns = $aliasTemp . '.' . $column; + $query3 = $query3->orwhereRaw("find_in_set($filterValue, $columns)"); + } + }); + } else { + $query2->where('product_flat.min_price', '>=', core()->convertToBasePrice(current($temp))) + ->where('product_flat.min_price', '<=', core()->convertToBasePrice(end($temp))); + } + } + }); + } + }); + + return $qb->groupBy('product_flat.id'); + })->paginate(isset($params['limit']) ? $params['limit'] : 9); + + return $results; + } + + /** + * Retrive product from slug + * + * @param string $slug + * @return mixed + */ + public function findBySlugOrFail($slug, $columns = null) + { + $product = app(ProductFlatRepository::class)->findOneWhere([ + 'url_key' => $slug, + 'locale' => app()->getLocale(), + 'channel' => core()->getCurrentChannelCode(), + ]); + + if (! $product) { + throw (new ModelNotFoundException)->setModel( + get_class($this->model), $slug + ); + } + + return $product; + } + + /** + * Retrieve product from slug without throwing an exception (might return null) + * + * @param $slug + * + * @return mixed + */ + public function findBySlug($slug) + { + return app(ProductFlatRepository::class)->findOneWhere([ + 'url_key' => $slug, + 'locale' => app()->getLocale(), + 'channel' => core()->getCurrentChannelCode(), + ]); + } + + /** + * Returns newly added product + * + * @return Collection + */ + public function getNewProducts() + { + $results = app(ProductFlatRepository::class)->scopeQuery(function($query) { + $channel = request()->get('channel') ?: (core()->getCurrentChannelCode() ?: core()->getDefaultChannelCode()); + + $locale = request()->get('locale') ?: app()->getLocale(); + + return $query->distinct() + ->addSelect('product_flat.*') + ->where('product_flat.status', 1) + ->where('product_flat.visible_individually', 1) + ->where('product_flat.new', 1) + ->where('product_flat.channel', $channel) + ->where('product_flat.locale', $locale) + ->orderBy('product_id', 'desc'); + })->paginate(4); + + return $results; + } + + /** + * Returns featured product + * + * @return Collection + */ + public function getFeaturedProducts() + { + $results = app(ProductFlatRepository::class)->scopeQuery(function($query) { + $channel = request()->get('channel') ?: (core()->getCurrentChannelCode() ?: core()->getDefaultChannelCode()); + + $locale = request()->get('locale') ?: app()->getLocale(); + + return $query->distinct() + ->addSelect('product_flat.*') + ->where('product_flat.status', 1) + ->where('product_flat.visible_individually', 1) + ->where('product_flat.featured', 1) + ->where('product_flat.channel', $channel) + ->where('product_flat.locale', $locale) + ->orderBy('product_id', 'desc'); + })->paginate(4); + + return $results; + } + + /** + * Search Product by Attribute + * + * @return Collection + */ + public function searchProductByAttribute($term) + { + $results = app(ProductFlatRepository::class)->scopeQuery(function($query) use($term) { + $channel = request()->get('channel') ?: (core()->getCurrentChannelCode() ?: core()->getDefaultChannelCode()); + + $locale = request()->get('locale') ?: app()->getLocale(); + + return $query->distinct() + ->addSelect('product_flat.*') + ->where('product_flat.status', 1) + ->where('product_flat.visible_individually', 1) + ->where('product_flat.channel', $channel) + ->where('product_flat.locale', $locale) + ->whereNotNull('product_flat.url_key') + ->where('product_flat.name', 'like', '%' . urldecode($term) . '%') + ->orderBy('product_id', 'desc'); + })->paginate(16); + + return $results; + } + + /** + * Returns product's super attribute with options + * + * @param Product $product + * @return Collection + */ + public function getSuperAttributes($product) + { + $superAttrbutes = []; + + foreach ($product->super_attributes as $key => $attribute) { + $superAttrbutes[$key] = $attribute->toArray(); + + foreach ($attribute->options as $option) { + $superAttrbutes[$key]['options'][] = [ + 'id' => $option->id, + 'admin_name' => $option->admin_name, + 'sort_order' => $option->sort_order, + 'swatch_value' => $option->swatch_value, + ]; + } + } + + return $superAttrbutes; + } + + /** + * Search simple products for grouped product association + * + * @param string $term + * @return \Illuminate\Support\Collection + */ + public function searchSimpleProducts($term) + { + return app(ProductFlatRepository::class)->scopeQuery(function($query) use($term) { + $channel = request()->get('channel') ?: (core()->getCurrentChannelCode() ?: core()->getDefaultChannelCode()); + + $locale = request()->get('locale') ?: app()->getLocale(); + + return $query->distinct() + ->addSelect('product_flat.*') + ->addSelect('product_flat.product_id as id') + ->leftJoin('products', 'product_flat.product_id', '=', 'products.id') + ->where('products.type', 'simple') + ->where('product_flat.channel', $channel) + ->where('product_flat.locale', $locale) + ->where('product_flat.name', 'like', '%' . urldecode($term) . '%') + ->orderBy('product_id', 'desc'); + })->get(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/ProductReviewRepository.php b/packages/Webkul/Product/src/Repositories/ProductReviewRepository.php new file mode 100755 index 000000000..ac6152238 --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/ProductReviewRepository.php @@ -0,0 +1,39 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ProductReviewRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Product\Contracts\ProductReview'; + } + + /** + * Retrieve review for customerId + * + * @param int $customerId + */ + function getCustomerReview() + { + $customerId = auth()->guard('customer')->user()->id; + + $reviews = $this->model->where(['customer_id'=> $customerId])->with('product')->paginate(5); + + return $reviews; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Repositories/SearchRepository.php b/packages/Webkul/Product/src/Repositories/SearchRepository.php new file mode 100755 index 000000000..21b5a837f --- /dev/null +++ b/packages/Webkul/Product/src/Repositories/SearchRepository.php @@ -0,0 +1,51 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class SearchRepository extends Repository +{ + /** + * ProductRepository object + * + * @return Object + */ + protected $productRepository; + + /** + * Create a new repository instance. + * + * @param Webkul\Product\Repositories\ProductRepository $productRepository + * @return void + */ + public function __construct( + ProductRepository $productRepository, + App $app + ) + { + parent::__construct($app); + + $this->productRepository = $productRepository; + } + + function model() + { + return 'Webkul\Product\Contracts\Product'; + } + + public function search($data) + { + $products = $this->productRepository->searchProductByAttribute($data['term']); + + return $products; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/AbstractType.php b/packages/Webkul/Product/src/Type/AbstractType.php new file mode 100644 index 000000000..bec67190b --- /dev/null +++ b/packages/Webkul/Product/src/Type/AbstractType.php @@ -0,0 +1,694 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +abstract class AbstractType +{ + /** + * AttributeRepository instance + * + * @var AttributeRepository + */ + protected $attributeRepository; + + /** + * ProductRepository instance + * + * @var ProductRepository + */ + protected $productRepository; + + /** + * ProductAttributeValueRepository instance + * + * @var ProductAttributeValueRepository + */ + protected $attributeValueRepository; + + /** + * ProductInventoryRepository instance + * + * @var ProductInventoryRepository + */ + protected $productInventoryRepository; + + /** + * ProductImageRepository instance + * + * @var ProductImageRepository + */ + protected $productImageRepository; + + /** + * Product Image helper instance + * + * @var ProductImage + */ + protected $productImageHelper; + + /** + * Product model instance + * + * @var Product + */ + protected $product; + + /** + * Is a composite product type + * + * @var boolean + */ + protected $isComposite = false; + + /** + * Is a stokable product type + * + * @var boolean + */ + protected $isStockable = true; + + /** + * Show quantity box + * + * @var boolean + */ + protected $showQuantityBox = false; + + /** + * Is product have sufficient quantity + * + * @var boolean + */ + protected $haveSufficientQuantity = true; + + /** + * Product can be moved from wishlist to cart or not + * + * @var boolean + */ + protected $canBeMovedFromWishlistToCart = true; + + /** + * Has child products aka variants + * + * @var boolean + */ + protected $hasVariants = false; + + /** + * Product children price can be calculated or not + * + * @var boolean + */ + protected $isChildrenCalculated = false; + + /** + * Create a new product type instance. + * + * @param Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @param Webkul\Product\Repositories\ProductRepository $productRepository + * @param Webkul\Product\Repositories\ProductAttributeValueRepository $attributeValueRepository + * @param Webkul\Product\Repositories\ProductInventoryRepository $productInventoryRepository + * @param Webkul\Product\Repositories\ProductImageRepository $productImageRepository + * @param Webkul\Product\Helpers\ProductImage $productImageHelper + * @return void + */ + public function __construct( + AttributeRepository $attributeRepository, + ProductRepository $productRepository, + ProductAttributeValueRepository $attributeValueRepository, + ProductInventoryRepository $productInventoryRepository, + ProductImageRepository $productImageRepository, + ProductImage $productImageHelper + ) + { + $this->attributeRepository = $attributeRepository; + + $this->productRepository = $productRepository; + + $this->attributeValueRepository = $attributeValueRepository; + + $this->productInventoryRepository = $productInventoryRepository; + + $this->productImageRepository = $productImageRepository; + + $this->productImageHelper = $productImageHelper; + } + + /** + * @param array $data + * @return Product + */ + public function create(array $data) + { + return $this->productRepository->getModel()->create($data); + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return Product + */ + public function update(array $data, $id, $attribute = "id") + { + $product = $this->productRepository->find($id); + + $product->update($data); + + foreach ($product->attribute_family->custom_attributes as $attribute) { + $route = request()->route() ? request()->route()->getName() : ""; + + if ($attribute->type == 'boolean' && $route != 'admin.catalog.products.massupdate') { + $data[$attribute->code] = isset($data[$attribute->code]) && $data[$attribute->code] ? 1 : 0; + } + + if (! isset($data[$attribute->code])) { + continue; + } + + if ($attribute->type == 'price' && isset($data[$attribute->code]) && $data[$attribute->code] == '') { + $data[$attribute->code] = null; + } + + if ($attribute->type == 'date' && $data[$attribute->code] == '' && $route != 'admin.catalog.products.massupdate') { + $data[$attribute->code] = null; + } + + if ($attribute->type == 'multiselect' || $attribute->type == 'checkbox') { + $data[$attribute->code] = implode(",", $data[$attribute->code]); + } + + if ($attribute->type == 'image' || $attribute->type == 'file') { + $data[$attribute->code] = gettype($data[$attribute->code]) == 'object' + ? request()->file($attribute->code)->store('product/' . $product->id) + : NULL; + } + + $attributeValue = $this->attributeValueRepository->findOneWhere([ + 'product_id' => $product->id, + 'attribute_id' => $attribute->id, + 'channel' => $attribute->value_per_channel ? $data['channel'] : null, + 'locale' => $attribute->value_per_locale ? $data['locale'] : null + ]); + + if (! $attributeValue) { + $this->attributeValueRepository->create([ + 'product_id' => $product->id, + 'attribute_id' => $attribute->id, + 'value' => $data[$attribute->code], + 'channel' => $attribute->value_per_channel ? $data['channel'] : null, + 'locale' => $attribute->value_per_locale ? $data['locale'] : null + ]); + } else { + $this->attributeValueRepository->update([ + ProductAttributeValue::$attributeTypeFields[$attribute->type] => $data[$attribute->code] + ], $attributeValue->id + ); + + if ($attribute->type == 'image' || $attribute->type == 'file') { + Storage::delete($attributeValue->text_value); + } + } + } + + $route = request()->route() ? request()->route()->getName() : ""; + + if ($route != 'admin.catalog.products.massupdate') { + if (isset($data['categories'])) { + $product->categories()->sync($data['categories']); + } + + $product->up_sells()->sync($data['up_sell'] ?? []); + + $product->cross_sells()->sync($data['cross_sell'] ?? []); + + $product->related_products()->sync($data['related_products'] ?? []); + + $this->productInventoryRepository->saveInventories($data, $product); + + $this->productImageRepository->uploadImages($data, $product); + } + + return $product; + } + + /** + * Specify type instance product + * + * @param Product $product + * @return AbstractType + */ + public function setProduct($product) + { + $this->product = $product; + + return $this; + } + + /** + * Returns children ids + * + * @return array + */ + public function getChildrenIds() + { + return []; + } + + /** + * Check if catalog rule can be applied + * + * @return bool + */ + public function priceRuleCanBeApplied() + { + return true; + } + + /** + * Return true if this product type is saleable + * + * @return boolean + */ + public function isSaleable() + { + if (! $this->product->status) { + return false; + } + + return true; + } + + /** + * Return true if this product can have inventory + * + * @return boolean + */ + public function isStockable() + { + return $this->isStockable; + } + + /** + * Return true if this product can be composite + * + * @return boolean + */ + public function isComposite() + { + return $this->isComposite; + } + + /** + * Return true if this product can have variants + * + * @return bool + */ + public function hasVariants() + { + return $this->hasVariants; + } + + /** + * Product children price can be calculated or not + * + * @return bool + */ + public function isChildrenCalculated() + { + return $this->isChildrenCalculated; + } + + /** + * @param integer $qty + * @return bool + */ + public function haveSufficientQuantity($qty) + { + return $this->haveSufficientQuantity; + } + + /** + * Return true if this product can have inventory + * + * @return boolean + */ + public function showQuantityBox() + { + return $this->showQuantityBox; + } + + /** + * @param CartItem $cartItem + * @return bool + */ + public function isItemHaveQuantity($cartItem) + { + return $cartItem->product->getTypeInstance()->haveSufficientQuantity($cartItem->quantity); + } + + /** + * @return integer + */ + public function totalQuantity() + { + $total = 0; + + $channelInventorySourceIds = core()->getCurrentChannel() + ->inventory_sources() + ->where('status', 1) + ->pluck('id'); + + foreach ($this->product->inventories as $inventory) { + if (is_numeric($index = $channelInventorySourceIds->search($inventory->inventory_source_id))) { + $total += $inventory->qty; + } + } + + $orderedInventory = $this->product->ordered_inventories() + ->where('channel_id', core()->getCurrentChannel()->id) + ->first(); + + if ($orderedInventory) { + $total -= $orderedInventory->qty; + } + + return $total; + } + + /** + * Return true if item can be moved to cart from wishlist + * + * @return boolean + */ + public function canBeMovedFromWishlistToCart($item) + { + return $this->canBeMovedFromWishlistToCart; + } + + /** + * Retrieve product attributes + * + * @param Group $group + * @param bool $skipSuperAttribute + * @return Collection + */ + public function getEditableAttributes($group = null, $skipSuperAttribute = true) + { + if ($skipSuperAttribute) { + $this->skipAttributes = array_merge($this->product->super_attributes->pluck('code')->toArray(), $this->skipAttributes); + } + + if (! $group) { + return $this->product->attribute_family->custom_attributes()->whereNotIn('attributes.code', $this->skipAttributes)->get(); + } + + return $group->custom_attributes()->whereNotIn('code', $this->skipAttributes)->get(); + } + + /** + * Returns additional views + * + * @return array + */ + public function getAdditionalViews() + { + return $this->additionalViews; + } + + /** + * Returns validation rules + * + * @return array + */ + public function getTypeValidationRules() + { + return []; + } + + /** + * Get product minimal price + * + * @return float + */ + public function getMinimalPrice() + { + if ($this->haveSpecialPrice()) { + return $this->product->special_price; + } + + return $this->product->price; + } + + /** + * Get product maximam price + * + * @return float + */ + public function getMaximamPrice() + { + return $this->getMinimalPrice(); + } + + /** + * Get product minimal price + * + * @return float + */ + public function getFinalPrice() + { + return $this->getMinimalPrice(); + } + + /** + * Returns the product's minimal price + * + * @return float + */ + public function getSpecialPrice() + { + return $this->haveSpecialPrice() ? $this->product->special_price : $this->product->price; + } + + /** + * @return boolean + */ + public function haveSpecialPrice() + { + $rulePrice = app('Webkul\CatalogRule\Helpers\CatalogRuleProductPrice')->getRulePrice($this->product); + + if ((is_null($this->product->special_price) || ! (float) $this->product->special_price) && ! $rulePrice) + return false; + + if (! (float) $this->product->special_price) { + if ($rulePrice) { + $this->product->special_price = $rulePrice->price; + + return true; + } + } else { + if ($rulePrice && $rulePrice->price <= $this->product->special_price) { + $this->product->special_price = $rulePrice->price; + + return true; + } else { + if (core()->isChannelDateInInterval($this->product->special_price_from, $this->product->special_price_to)) + return true; + } + } + + return false; + } + + /** + * Returns product prices + * + * @return array + */ + public function getProductPrices() + { + return [ + 'regular_price' => [ + 'price' => core()->convertPrice($this->product->price), + 'formated_price' => core()->currency($this->product->price) + ], + 'final_price' => [ + 'price' => core()->convertPrice($this->getMinimalPrice()), + 'formated_price' => core()->currency($this->getMinimalPrice()) + ] + ]; + } + + /** + * Get product minimal price + * + * @return string + */ + public function getPriceHtml() + { + if ($this->haveSpecialPrice()) { + $html = '
' . trans('shop::app.products.sale') . '
' + . '' . core()->currency($this->product->price) . '' + . '' . core()->currency($this->getSpecialPrice()) . ''; + } else { + $html = '' . core()->currency($this->product->price) . ''; + } + + return $html; + } + + /** + * Add product. Returns error message if can't prepare product. + * + * @param array $data + * @return array + */ + public function prepareForCart($data) + { + $data['quantity'] = $data['quantity'] ?? 1; + + $data = $this->getQtyRequest($data); + + if (! $this->haveSufficientQuantity($data['quantity'])) { + return trans('shop::app.checkout.cart.quantity.inventory_warning'); + } + + $price = $this->getFinalPrice(); + + $products = [ + [ + 'product_id' => $this->product->id, + 'sku' => $this->product->sku, + 'quantity' => $data['quantity'], + 'name' => $this->product->name, + 'price' => $convertedPrice = core()->convertPrice($price), + 'base_price' => $price, + 'total' => $convertedPrice * $data['quantity'], + 'base_total' => $price * $data['quantity'], + 'weight' => $this->product->weight ?? 0, + 'total_weight' => ($this->product->weight ?? 0) * $data['quantity'], + 'base_total_weight' => ($this->product->weight ?? 0) * $data['quantity'], + 'type' => $this->product->type, + 'additional' => $this->getAdditionalOptions($data) + ] + ]; + + return $products; + } + + /** + * Get request quantity + * + * @param array $data + * @return array + */ + public function getQtyRequest($data) + { + if ($item = Cart::getItemByProduct(['additional' => $data])) { + $data['quantity'] += $item->quantity; + } + + return $data; + } + + /** + * + * @param array $options1 + * @param array $options2 + * @return boolean + */ + public function compareOptions($options1, $options2) + { + if ($this->product->id != $options2['product_id']) { + return false; + } else { + if (isset($options1['parent_id']) && isset($options2['parent_id'])) { + if ($options1['parent_id'] == $options2['parent_id']) { + return true; + } else { + return false; + } + } else if (isset($options1['parent_id']) && ! isset($options2['parent_id'])) { + return false; + } else if (isset($options2['parent_id']) && ! isset($options1['parent_id'])) { + return false; + } + } + + return true; + } + + /** + * Returns additional information for items + * + * @param array $data + * @return array + */ + public function getAdditionalOptions($data) + { + return $data; + } + + /** + * Get actual ordered item + * + * @param CartItem $item + * @return CartItem|OrderItem|InvoiceItem|ShipmentItem|Wishlist + */ + public function getOrderedItem($item) + { + return $item; + } + + /** + * Get product base image + * + * @param Wishlist|CartItem $item + * @return array + */ + public function getBaseImage($item) + { + return $this->productImageHelper->getProductBaseImage($item->product); + } + + /** + * Validate cart item product price + * + * @param CartItem $item + * @return void + */ + public function validateCartItem($item) + { + $price = $item->product->getTypeInstance()->getFinalPrice(); + + if ($price == $item->base_price) { + return; + } + + $item->base_price = $price; + $item->price = core()->convertPrice($price); + + $item->base_total = $price * $item->quantity; + $item->total = core()->convertPrice($price * $item->quantity); + + $item->save(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/Bundle.php b/packages/Webkul/Product/src/Type/Bundle.php new file mode 100644 index 000000000..38d884d4e --- /dev/null +++ b/packages/Webkul/Product/src/Type/Bundle.php @@ -0,0 +1,614 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Bundle extends AbstractType +{ + /** + * ProductBundleOptionRepository instance + * + * @var ProductBundleOptionRepository + */ + protected $productBundleOptionRepository; + + /** + * ProductBundleOptionProductRepository instance + * + * @var ProductBundleOptionProductRepository + */ + protected $productBundleOptionProductRepository; + + /** + * Bundle Option helper instance + * + * @var BundleOption + */ + protected $bundleOptionHelper; + + /** + * Skip attribute for Bundle product type + * + * @var array + */ + protected $skipAttributes = ['price', 'cost', 'special_price', 'special_price_from', 'special_price_to', 'width', 'height', 'depth', 'weight']; + + /** + * These blade files will be included in product edit page + * + * @var array + */ + protected $additionalViews = [ + 'admin::catalog.products.accordians.images', + 'admin::catalog.products.accordians.categories', + 'admin::catalog.products.accordians.bundle-items', + 'admin::catalog.products.accordians.channels', + 'admin::catalog.products.accordians.product-links' + ]; + + /** + * Is a composite product type + * + * @var boolean + */ + protected $isComposite = true; + + /** + * Product children price can be calculated or not + * + * @var boolean + */ + protected $isChildrenCalculated = true; + + /** + * Create a new product type instance. + * + * @param Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @param Webkul\Product\Repositories\ProductRepository $productRepository + * @param Webkul\Product\Repositories\ProductAttributeValueRepository $attributeValueRepository + * @param Webkul\Product\Repositories\ProductInventoryRepository $productInventoryRepository + * @param Webkul\Product\Repositories\ProductImageRepository $productImageRepository + * @param Webkul\Product\Repositories\ProductBundleOptionRepository $productBundleOptionRepository + * @param Webkul\Product\Repositories\ProductBundleOptionProductRepository $productBundleOptionProductRepository + * @param Webkul\Product\Helpers\ProductImage $productImageHelper + * @param Webkul\Product\Helpers\BundleOption $bundleOptionHelper + * @return void + */ + public function __construct( + AttributeRepository $attributeRepository, + ProductRepository $productRepository, + ProductAttributeValueRepository $attributeValueRepository, + ProductInventoryRepository $productInventoryRepository, + productImageRepository $productImageRepository, + ProductBundleOptionRepository $productBundleOptionRepository, + ProductBundleOptionProductRepository $productBundleOptionProductRepository, + ProductImage $productImageHelper, + BundleOption $bundleOptionHelper + ) + { + parent::__construct( + $attributeRepository, + $productRepository, + $attributeValueRepository, + $productInventoryRepository, + $productImageRepository, + $productImageHelper + ); + + $this->productBundleOptionRepository = $productBundleOptionRepository; + + $this->productBundleOptionProductRepository = $productBundleOptionProductRepository; + + $this->bundleOptionHelper = $bundleOptionHelper; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return Product + */ + public function update(array $data, $id, $attribute = "id") + { + $product = parent::update($data, $id, $attribute); + + if (request()->route()->getName() != 'admin.catalog.products.massupdate') + $this->productBundleOptionRepository->saveBundleOptons($data, $product); + + return $product; + } + + /** + * Returns children ids + * + * @return array + */ + public function getChildrenIds() + { + return array_unique($this->product->bundle_options()->pluck('product_id')->toArray()); + } + + /** + * Check if catalog rule can be applied + * + * @return bool + */ + public function priceRuleCanBeApplied() + { + return false; + } + + /** + * Get product minimal price + * + * @return float + */ + public function getMinimalPrice() + { + $minPrice = 0; + + $haveRequiredOptions = $this->haveRequiredOptions(); + + $minPrices = []; + + foreach ($this->product->bundle_options as $option) { + $optionProductsPrices = $this->getOptionProductsPrices($option); + + if (count($optionProductsPrices)) { + $selectionMinPrice = min($optionProductsPrices); + + if($option->is_required) { + $minPrice += $selectionMinPrice; + } elseif (! $haveRequiredOptions) { + $minPrices[] = $selectionMinPrice; + } + } + } + + if (! $haveRequiredOptions) + $minPrice = count($minPrices) ? min($minPrices) : 0; + + return $minPrice; + } + + /** + * Get product regular minimal price + * + * @return float + */ + public function getRegularMinimalPrice() + { + $minPrice = 0; + + $haveRequiredOptions = $this->haveRequiredOptions(); + + $minPrices = []; + + foreach ($this->product->bundle_options as $option) { + $optionProductsPrices = $this->getOptionProductsPrices($option, false); + + if (count($optionProductsPrices)) { + $selectionMinPrice = min($optionProductsPrices); + + if($option->is_required) { + $minPrice += $selectionMinPrice; + } elseif (! $haveRequiredOptions) { + $minPrices[] = $selectionMinPrice; + } + } + } + + if (! $haveRequiredOptions) + $minPrice = min($minPrices); + + return $minPrice; + } + + /** + * Get product regular minimal price + * + * @param ProductBundleOption $option + * @param boolean $minPrice + * @return float + */ + public function getOptionProductsPrices($option, $minPrice = true) + { + $optionPrices = []; + + foreach ($option->bundle_option_products as $index => $bundleOptionProduct) { + $optionPrices[] = $bundleOptionProduct->qty + * ($minPrice + ? $bundleOptionProduct->product->getTypeInstance()->getMinimalPrice() + : $bundleOptionProduct->product->price); + } + + return $optionPrices; + } + + /** + * Check if product has required options or not + * + * @return boolean + */ + protected function haveRequiredOptions() + { + foreach ($this->product->bundle_options as $option) { + if ($option->is_required) + return true; + } + + return false; + } + + /** + * Get product maximam price + * + * @return float + */ + public function getMaximamPrice() + { + $optionPrices = []; + + foreach ($this->product->bundle_options as $option) { + foreach ($option->bundle_option_products as $index => $bundleOptionProduct) { + if (in_array($option->type, ['multiselect', 'checkbox'])) { + if (! isset($optionPrices[$option->id][0])) + $optionPrices[$option->id][0] = 0; + + $optionPrices[$option->id][0] += $bundleOptionProduct->qty * $bundleOptionProduct->product->getTypeInstance()->getMinimalPrice(); + } else { + $optionPrices[$option->id][] = $bundleOptionProduct->qty * $bundleOptionProduct->product->getTypeInstance()->getMinimalPrice(); + } + + } + } + + $maxPrice = 0; + + foreach ($optionPrices as $key => $optionPrice) { + $maxPrice += max($optionPrice); + } + + return $maxPrice; + } + + /** + * Get product regular maximam price + * + * @return float + */ + public function getRegularMaximamPrice() + { + $optionPrices = []; + + foreach ($this->product->bundle_options as $option) { + foreach ($option->bundle_option_products as $index => $bundleOptionProduct) { + if (in_array($option->type, ['multiselect', 'checkbox'])) { + if (! isset($optionPrices[$option->id][0])) + $optionPrices[$option->id][0] = 0; + + $optionPrices[$option->id][0] += $bundleOptionProduct->qty * $bundleOptionProduct->product->price; + } else { + $optionPrices[$option->id][] = $bundleOptionProduct->qty * $bundleOptionProduct->product->price; + } + + } + } + + $maxPrice = 0; + + foreach ($optionPrices as $key => $optionPrice) { + $maxPrice += max($optionPrice); + } + + return $maxPrice; + } + + /** + * Get product final price + * + * @return float + */ + public function getFinalPrice() + { + return 0; + } + + /** + * Returns product prices + * + * @return array + */ + public function getProductPrices() + { + return [ + 'from' => [ + 'regular_price' => [ + 'price' => core()->convertPrice($this->getRegularMinimalPrice()), + 'formated_price' => core()->currency($this->getRegularMinimalPrice()) + ], + 'final_price' => [ + 'price' => core()->convertPrice($this->getMinimalPrice()), + 'formated_price' => core()->currency($this->getMinimalPrice()) + ] + ], + 'to' => [ + 'regular_price' => [ + 'price' => core()->convertPrice($this->getRegularMaximamPrice()), + 'formated_price' => core()->currency($this->getRegularMaximamPrice()) + ], + 'final_price' => [ + 'price' => core()->convertPrice($this->getMaximamPrice()), + 'formated_price' => core()->currency($this->getMaximamPrice()) + ] + ] + ]; + } + + /** + * Get product minimal price + * + * @return string + */ + public function getPriceHtml() + { + $prices = $this->getProductPrices(); + + $priceHtml = '
'; + + if ($prices['from']['regular_price']['price'] != $prices['from']['final_price']['price']) { + $priceHtml .= '' . $prices['from']['regular_price']['formated_price'] . '' + . '' . $prices['from']['final_price']['formated_price'] . ''; + } else { + $priceHtml .= '' . $prices['from']['regular_price']['formated_price'] . ''; + } + + + if ($prices['from']['regular_price']['price'] != $prices['to']['regular_price']['price'] + || $prices['from']['final_price']['price'] != $prices['to']['final_price']['price']) { + + $priceHtml .= 'To'; + + if ($prices['to']['regular_price']['price'] != $prices['to']['final_price']['price']) { + $priceHtml .= '' . $prices['to']['regular_price']['formated_price'] . '' + . '' . $prices['to']['final_price']['formated_price'] . ''; + } else { + $priceHtml .= '' . $prices['to']['regular_price']['formated_price'] . ''; + } + } + + $priceHtml .= '
'; + + return $priceHtml; + } + + /** + * Add product. Returns error message if can't prepare product. + * + * @param array $data + * @return array + */ + public function prepareForCart($data) + { + $data['bundle_options'] = array_filter($this->validateBundleOptionForCart($data['bundle_options'])); + + if (! isset($data['bundle_options']) || ! count($data['bundle_options'])) + return trans('shop::app.checkout.cart.integrity.missing_options'); + + $products = parent::prepareForCart($data); + + foreach ($this->getCartChildProducts($data) as $productId => $data) { + $product = $this->productRepository->find($productId); + + $cartProduct = $product->getTypeInstance()->prepareForCart(array_merge($data, ['parent_id' => $this->product->id])); + + if (is_string($cartProduct)) + return $cartProduct; + + $cartProduct[0]['parent_id'] = $this->product->id; + $cartProduct[0]['quantity'] = $data['quantity']; + $cartProduct[0]['total_weight'] = $cartProduct[0]['weight'] * $data['quantity']; + $cartProduct[0]['base_total_weight'] = $cartProduct[0]['weight'] * $data['quantity']; + + $products = array_merge($products, $cartProduct); + + $products[0]['price'] += $cartProduct[0]['total']; + $products[0]['base_price'] += $cartProduct[0]['base_total']; + $products[0]['total'] += $cartProduct[0]['total']; + $products[0]['base_total'] += $cartProduct[0]['base_total']; + $products[0]['weight'] += ($cartProduct[0]['weight'] * $products[0]['quantity']); + $products[0]['total_weight'] += ($cartProduct[0]['total_weight'] * $products[0]['quantity']); + $products[0]['base_total_weight'] += ($cartProduct[0]['base_total_weight'] * $products[0]['quantity']); + } + + return $products; + } + + /** + * Add product. Returns error message if can't prepare product. + * + * @param array $data + * @return array + */ + public function getCartChildProducts($data) + { + $products = []; + + foreach ($data['bundle_options'] as $optionId => $optionProductIds) { + foreach ($optionProductIds as $optionProductId) { + if (! $optionProductId) + continue; + + $optionProduct = $this->productBundleOptionProductRepository->findOneWhere([ + 'id' => $optionProductId, + 'product_bundle_option_id' => $optionId + ]); + + $qty = $data['bundle_option_qty'][$optionId] ?? $optionProduct->qty; + + if (! isset($products[$optionProduct->product_id])) { + $products[$optionProduct->product_id] = [ + 'product_id' => $optionProduct->product_id, + 'quantity' => $qty, + ]; + } else { + $products[$optionProduct->product_id] = array_merge($products[$optionProduct->product_id], [ + 'quantity' => $products[$optionProduct->product_id]['quantity'] + $qty + ]); + } + } + } + + return $products; + } + + /** + * + * @param array $options1 + * @param array $options2 + * @return boolean + */ + public function compareOptions($options1, $options2) + { + if ($this->product->id != $options2['product_id']) + return false; + + return $options1['bundle_options'] == $options2['bundle_options'] + && $options1['bundle_option_qty'] == $this->getOptionQuantities($options2); + } + + /** + * Remove invalid options from add to cart request + * + * @param array $data + * @return array + */ + public function validateBundleOptionForCart($data) + { + foreach ($data as $key => $value) { + if (is_array($value)) { + $data[$key] = $this->validateBundleOptionForCart($value); + } elseif ($value && $value) { + $data[$key] = (int)$value; + } else { + unset($data[$key]); + } + } + + return $data; + } + + /** + * Returns additional information for items + * + * @param array $data + * @return array + */ + public function getAdditionalOptions($data) + { + foreach ($data['bundle_options'] as $optionId => $optionProductIds) { + $option = $this->productBundleOptionRepository->find($optionId); + + $labels = []; + + foreach ($optionProductIds as $optionProductId) { + if (! $optionProductId) + continue; + + $optionProduct = $this->productBundleOptionProductRepository->find($optionProductId); + + $qty = $data['bundle_option_qty'][$optionId] ?? $optionProduct->qty; + + if (! isset($data['bundle_option_qty'][$optionId])) + $data['bundle_option_qty'][$optionId] = $qty; + + $labels[] = $qty . ' x ' . $optionProduct->product->name . ' ' . core()->currency($optionProduct->product->getTypeInstance()->getMinimalPrice()); + } + + if (count($labels)) { + $data['attributes'][$option->id] = [ + 'attribute_name' => $option->label, + 'option_id' => $option->id, + 'option_label' => implode(', ', $labels), + ]; + } + } + + return $data; + } + + /** + * Returns additional information for items + * + * @param array $data + * @return array + */ + public function getOptionQuantities($data) + { + $optionQuantities = []; + + foreach ($data['bundle_options'] as $optionId => $optionProductIds) { + foreach ($optionProductIds as $optionProductId) { + if (! $optionProductId) + continue; + + if (isset($data['bundle_option_qty'][$optionId])) { + $optionQuantities[$optionId] = $data['bundle_option_qty'][$optionId]; + + continue; + } + + $optionProduct = $this->productBundleOptionProductRepository->find($optionProductId); + + $optionQuantities[$optionId] = $optionProduct->qty; + } + } + + return $optionQuantities; + } + + /** + * Validate cart item product price + * + * @param CartItem $item + * @return void + */ + public function validateCartItem($item) + { + $price = 0; + + foreach ($item->children as $childItem) { + $childItem->product->getTypeInstance()->validateCartItem($childItem); + + $price += $childItem->base_price * $childItem->quantity; + } + + if ($price == $item->base_price) + return; + + $item->base_price = $price; + $item->price = core()->convertPrice($price); + + $item->base_total = $price * $item->quantity; + $item->total = core()->convertPrice($price * $item->quantity); + + $item->additional = $this->getAdditionalOptions($item->additional); + + $item->save(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/Configurable.php b/packages/Webkul/Product/src/Type/Configurable.php new file mode 100644 index 000000000..0b88d3097 --- /dev/null +++ b/packages/Webkul/Product/src/Type/Configurable.php @@ -0,0 +1,534 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Configurable extends AbstractType +{ + /** + * Skip attribute for downloadable product type + * + * @var array + */ + protected $skipAttributes = ['price', 'cost', 'special_price', 'special_price_from', 'special_price_to', 'width', 'height', 'depth', 'weight']; + + /** + * These blade files will be included in product edit page + * + * @var array + */ + protected $additionalViews = [ + 'admin::catalog.products.accordians.images', + 'admin::catalog.products.accordians.categories', + 'admin::catalog.products.accordians.variations', + 'admin::catalog.products.accordians.channels', + 'admin::catalog.products.accordians.product-links' + ]; + + /** + * Is a composite product type + * + * @var boolean + */ + protected $isComposite = true; + + /** + * Show quantity box + * + * @var boolean + */ + protected $showQuantityBox = true; + + /** + * Has child products aka variants + * + * @var boolean + */ + protected $hasVariants = true; + + /** + * @param array $data + * @return Product + */ + public function create(array $data) + { + $product = $this->productRepository->getModel()->create($data); + + if (isset($data['super_attributes'])) { + $super_attributes = []; + + foreach ($data['super_attributes'] as $attributeCode => $attributeOptions) { + $attribute = $this->attributeRepository->findOneByField('code', $attributeCode); + + $super_attributes[$attribute->id] = $attributeOptions; + + $product->super_attributes()->attach($attribute->id); + } + + foreach (array_permutation($super_attributes) as $permutation) { + $this->createVariant($product, $permutation); + } + } + + return $product; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return Product + */ + public function update(array $data, $id, $attribute = "id") + { + $product = parent::update($data, $id, $attribute); + + if (request()->route()->getName() != 'admin.catalog.products.massupdate') { + $previousVariantIds = $product->variants->pluck('id'); + + if (isset($data['variants'])) { + foreach ($data['variants'] as $variantId => $variantData) { + if (Str::contains($variantId, 'variant_')) { + $permutation = []; + + foreach ($product->super_attributes as $superAttribute) { + $permutation[$superAttribute->id] = $variantData[$superAttribute->code]; + } + + $this->createVariant($product, $permutation, $variantData); + } else { + if (is_numeric($index = $previousVariantIds->search($variantId))) + $previousVariantIds->forget($index); + + $variantData['channel'] = $data['channel']; + $variantData['locale'] = $data['locale']; + + $this->updateVariant($variantData, $variantId); + } + } + } + + foreach ($previousVariantIds as $variantId) { + $this->productRepository->delete($variantId); + } + } + + return $product; + } + + /** + * @param mixed $product + * @param array $permutation + * @param array $data + * @return mixed + */ + public function createVariant($product, $permutation, $data = []) + { + if (! count($data)) { + $data = [ + "sku" => $product->sku . '-variant-' . implode('-', $permutation), + "name" => "", + "inventories" => [], + "price" => 0, + "weight" => 0, + "status" => 1 + ]; + } + + $typeOfVariants = 'simple'; + $productInstance = app(config('product_types.' . $product->type . '.class')); + if (isset($productInstance->variantsType) && ! in_array($productInstance->variantsType , ['bundle', 'configurable', 'grouped'])) { + $typeOfVariants = $productInstance->variantsType; + } + + $variant = $this->productRepository->getModel()->create([ + 'parent_id' => $product->id, + 'type' => $typeOfVariants, + 'attribute_family_id' => $product->attribute_family_id, + 'sku' => $data['sku'], + ]); + + foreach (['sku', 'name', 'price', 'weight', 'status'] as $attributeCode) { + $attribute = $this->attributeRepository->findOneByField('code', $attributeCode); + + if ($attribute->value_per_channel) { + if ($attribute->value_per_locale) { + foreach (core()->getAllChannels() as $channel) { + foreach (core()->getAllLocales() as $locale) { + $this->attributeValueRepository->create([ + 'product_id' => $variant->id, + 'attribute_id' => $attribute->id, + 'channel' => $channel->code, + 'locale' => $locale->code, + 'value' => $data[$attributeCode] + ]); + } + } + } else { + foreach (core()->getAllChannels() as $channel) { + $this->attributeValueRepository->create([ + 'product_id' => $variant->id, + 'attribute_id' => $attribute->id, + 'channel' => $channel->code, + 'value' => $data[$attributeCode] + ]); + } + } + } else { + if ($attribute->value_per_locale) { + foreach (core()->getAllLocales() as $locale) { + $this->attributeValueRepository->create([ + 'product_id' => $variant->id, + 'attribute_id' => $attribute->id, + 'locale' => $locale->code, + 'value' => $data[$attributeCode] + ]); + } + } else { + $this->attributeValueRepository->create([ + 'product_id' => $variant->id, + 'attribute_id' => $attribute->id, + 'value' => $data[$attributeCode] + ]); + } + } + } + + foreach ($permutation as $attributeId => $optionId) { + $this->attributeValueRepository->create([ + 'product_id' => $variant->id, + 'attribute_id' => $attributeId, + 'value' => $optionId + ]); + } + + $this->productInventoryRepository->saveInventories($data, $variant); + + return $variant; + } + + /** + * @param array $data + * @param $id + * @return mixed + */ + public function updateVariant(array $data, $id) + { + $variant = $this->productRepository->find($id); + + $variant->update(['sku' => $data['sku']]); + + foreach (['sku', 'name', 'price', 'weight', 'status'] as $attributeCode) { + $attribute = $this->attributeRepository->findOneByField('code', $attributeCode); + + $attributeValue = $this->attributeValueRepository->findOneWhere([ + 'product_id' => $id, + 'attribute_id' => $attribute->id, + 'channel' => $attribute->value_per_channel ? $data['channel'] : null, + 'locale' => $attribute->value_per_locale ? $data['locale'] : null + ]); + + if (! $attributeValue) { + $this->attributeValueRepository->create([ + 'product_id' => $id, + 'attribute_id' => $attribute->id, + 'value' => $data[$attribute->code], + 'channel' => $attribute->value_per_channel ? $data['channel'] : null, + 'locale' => $attribute->value_per_locale ? $data['locale'] : null + ]); + } else { + $this->attributeValueRepository->update([ + ProductAttributeValue::$attributeTypeFields[$attribute->type] => $data[$attribute->code] + ], $attributeValue->id); + } + } + + $this->productInventoryRepository->saveInventories($data, $variant); + + return $variant; + } + + /** + * @param array $data + * @param mixed $product + * @return mixed + */ + public function checkVariantOptionAvailabiliy($data, $product) + { + $superAttributeCodes = $product->parent->super_attributes->pluck('code'); + + foreach ($product->parent->variants as $variant) { + if ($variant->id == $product->id) + continue; + + $matchCount = 0; + + foreach ($superAttributeCodes as $attributeCode) { + if (! isset($data[$attributeCode])) + return false; + + if ($data[$attributeCode] == $variant->{$attributeCode}) + $matchCount++; + } + + if ($matchCount == $superAttributeCodes->count()) + return true; + } + + return false; + } + + /** + * Returns children ids + * + * @return array + */ + public function getChildrenIds() + { + return $this->product->variants()->pluck('id')->toArray(); + } + + /** + * @param CartItem $cartItem + * @return bool + */ + public function isItemHaveQuantity($cartItem) + { + return $cartItem->child->product->getTypeInstance()->haveSufficientQuantity($cartItem->quantity); + } + + /** + * Returns validation rules + * + * @return array + */ + public function getTypeValidationRules() + { + return [ + 'variants.*.name' => 'required', + 'variants.*.sku' => 'required', + 'variants.*.price' => 'required', + 'variants.*.weight' => 'required', + ]; + } + + /** + * Return true if item can be moved to cart from wishlist + * + * @param Wishlist $item + * @return boolean + */ + public function canBeMovedFromWishlistToCart($item) + { + if (isset($item->additional['selected_configurable_option'])) + return true; + + return false; + } + + /** + * Get product minimal price + * + * @return float + */ + public function getMinimalPrice() + { + $minPrices = []; + + $result = ProductFlat::join('products', 'product_flat.product_id', '=', 'products.id') + ->distinct() + ->where('products.parent_id', $this->product->id) + ->selectRaw('IF( product_flat.special_price_from IS NOT NULL + AND product_flat.special_price_to IS NOT NULL , IF( NOW( ) >= product_flat.special_price_from + AND NOW( ) <= product_flat.special_price_to, IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , product_flat.price ) , IF( product_flat.special_price_from IS NULL , IF( product_flat.special_price_to IS NULL , IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , IF( NOW( ) <= product_flat.special_price_to, IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , product_flat.price ) ) , IF( product_flat.special_price_to IS NULL , IF( NOW( ) >= product_flat.special_price_from, IF( product_flat.special_price IS NULL OR product_flat.special_price = 0 , product_flat.price, LEAST( product_flat.special_price, product_flat.price ) ) , product_flat.price ) , product_flat.price ) ) ) AS min_price') + ->where('product_flat.channel', core()->getCurrentChannelCode()) + ->where('product_flat.locale', app()->getLocale()) + ->get(); + + foreach ($result as $price) { + $minPrices[] = $price->min_price; + } + + if (empty($minPrices)) + return 0; + + return min($minPrices); + } + + /** + * Get product maximam price + * + * @return float + */ + public function getMaximamPrice() + { + $productFlat = ProductFlat::join('products', 'product_flat.product_id', '=', 'products.id') + ->distinct() + ->where('products.parent_id', $this->product->id) + ->selectRaw('MAX(product_flat.price) AS max_price') + ->where('product_flat.channel', core()->getCurrentChannelCode()) + ->where('product_flat.locale', app()->getLocale()) + ->first(); + + return $productFlat ? $productFlat->max_price : 0; + } + + /** + * Get product minimal price + * + * @return string + */ + public function getPriceHtml() + { + return '' . trans('shop::app.products.price-label') . '' + . '' . core()->currency($this->getMinimalPrice()) . ''; + } + + /** + * Add product. Returns error message if can't prepare product. + * + * @param array $data + * @return array + */ + public function prepareForCart($data) + { + if (! isset($data['selected_configurable_option']) || ! $data['selected_configurable_option']) + return trans('shop::app.checkout.cart.integrity.missing_options'); + + $data = $this->getQtyRequest($data); + + $childProduct = $this->productRepository->find($data['selected_configurable_option']); + + if (! $childProduct->haveSufficientQuantity($data['quantity'])) + return trans('shop::app.checkout.cart.quantity.inventory_warning'); + + $price = $childProduct->getTypeInstance()->getFinalPrice(); + + $products = [ + [ + 'product_id' => $this->product->id, + 'sku' => $this->product->sku, + 'quantity' => $data['quantity'], + 'name' => $this->product->name, + 'price' => $convertedPrice = core()->convertPrice($price), + 'base_price' => $price, + 'total' => $convertedPrice * $data['quantity'], + 'base_total' => $price * $data['quantity'], + 'weight' => $childProduct->weight, + 'total_weight' => $childProduct->weight * $data['quantity'], + 'base_total_weight' => $childProduct->weight * $data['quantity'], + 'type' => $this->product->type, + 'additional' => $this->getAdditionalOptions($data) + ], [ + 'parent_id' => $this->product->id, + 'product_id' => (int) $data['selected_configurable_option'], + 'sku' => $childProduct->sku, + 'name' => $childProduct->name, + 'type' => 'simple', + 'additional' => ['product_id' => (int) $data['selected_configurable_option'], 'parent_id' => $this->product->id] + ] + ]; + + return $products; + } + + /** + * + * @param array $options1 + * @param array $options2 + * @return boolean + */ + public function compareOptions($options1, $options2) + { + if ($this->product->id != $options2['product_id']) + return false; + + return $options1['selected_configurable_option'] === $options2['selected_configurable_option']; + } + + /** + * Returns additional information for items + * + * @param array $data + * @return array + */ + public function getAdditionalOptions($data) + { + $childProduct = app('Webkul\Product\Repositories\ProductRepository')->findOneByField('id', $data['selected_configurable_option']); + + foreach ($this->product->super_attributes as $attribute) { + $option = $attribute->options()->where('id', $childProduct->{$attribute->code})->first(); + + $data['attributes'][$attribute->code] = [ + 'attribute_name' => $attribute->name ? $attribute->name : $attribute->admin_name, + 'option_id' => $option->id, + 'option_label' => $option->label, + ]; + } + + return $data; + } + + /** + * Get actual ordered item + * + * @param CartItem $item + * @return CartItem|OrderItem|InvoiceItem|ShipmentItem + */ + public function getOrderedItem($item) + { + return $item->child; + } + + /** + * Get product base image + * + * @param Wishlist|CartItem $item + * @return array + */ + public function getBaseImage($item) + { + if ($item instanceof \Webkul\Customer\Contracts\Wishlist) { + if (isset($item->additional['selected_configurable_option'])) { + $product = $this->productRepository->find($item->additional['selected_configurable_option']); + } else { + $product = $item->product; + } + } else { + $product = $item->child->product; + } + + return $this->productImageHelper->getProductBaseImage($product); + } + + /** + * Validate cart item product price + * + * @param CartItem $item + * @return float + */ + public function validateCartItem($item) + { + $price = $item->child->product->getTypeInstance()->getFinalPrice(); + + if ($price == $item->base_price) + return; + + $item->base_price = $total; + $item->price = core()->convertPrice($price); + + $item->base_total = $price * $item->quantity; + $item->total = core()->convertPrice($price * $item->quantity); + + $item->save(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/Downloadable.php b/packages/Webkul/Product/src/Type/Downloadable.php new file mode 100644 index 000000000..aaf97acdf --- /dev/null +++ b/packages/Webkul/Product/src/Type/Downloadable.php @@ -0,0 +1,247 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Downloadable extends AbstractType +{ + /** + * ProductDownloadableLinkRepository instance + * + * @var ProductDownloadableLinkRepository + */ + protected $productDownloadableLinkRepository; + + /** + * ProductDownloadableSampleRepository instance + * + * @var ProductDownloadableSampleRepository + */ + protected $productDownloadableSampleRepository; + + /** + * Skip attribute for downloadable product type + * + * @var array + */ + protected $skipAttributes = ['width', 'height', 'depth', 'weight']; + + /** + * These blade files will be included in product edit page + * + * @var array + */ + protected $additionalViews = [ + 'admin::catalog.products.accordians.images', + 'admin::catalog.products.accordians.categories', + 'admin::catalog.products.accordians.downloadable', + 'admin::catalog.products.accordians.channels', + 'admin::catalog.products.accordians.product-links' + ]; + + /** + * Is a stokable product type + * + * @var boolean + */ + protected $isStockable = false; + + /** + * Create a new product type instance. + * + * @param Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @param Webkul\Product\Repositories\ProductRepository $productRepository + * @param Webkul\Product\Repositories\ProductAttributeValueRepository $attributeValueRepository + * @param Webkul\Product\Repositories\ProductInventoryRepository $productInventoryRepository + * @param Webkul\Product\Repositories\ProductImageRepository $productImageRepository + * @param Webkul\Product\Repositories\ProductDownloadableLinkRepository $productDownloadableLinkRepository + * @param Webkul\Product\Repositories\ProductDownloadableSampleRepository $productDownloadableSampleRepository + * @param Webkul\Product\Helpers\ProductImage $productImageHelper + * @return void + */ + public function __construct( + AttributeRepository $attributeRepository, + ProductRepository $productRepository, + ProductAttributeValueRepository $attributeValueRepository, + ProductInventoryRepository $productInventoryRepository, + productImageRepository $productImageRepository, + ProductDownloadableLinkRepository $productDownloadableLinkRepository, + ProductDownloadableSampleRepository $productDownloadableSampleRepository, + ProductImage $productImageHelper + ) + { + parent::__construct( + $attributeRepository, + $productRepository, + $attributeValueRepository, + $productInventoryRepository, + $productImageRepository, + $productImageHelper + ); + + $this->productDownloadableLinkRepository = $productDownloadableLinkRepository; + + $this->productDownloadableSampleRepository = $productDownloadableSampleRepository; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return Product + */ + public function update(array $data, $id, $attribute = "id") + { + $product = parent::update($data, $id, $attribute); + + if (request()->route()->getName() != 'admin.catalog.products.massupdate') { + $this->productDownloadableLinkRepository->saveLinks($data, $product); + + $this->productDownloadableSampleRepository->saveSamples($data, $product); + } + + return $product; + } + + /** + * Return true if this product type is saleable + * + * @return boolean + */ + public function isSaleable() + { + if (! $this->product->status) + return false; + + if ($this->product->downloadable_links()->count()) + return true; + + return false; + } + + /** + * Returns validation rules + * + * @return array + */ + public function getTypeValidationRules() + { + return [ + // 'downloadable_links.*.title' => 'required', + 'downloadable_links.*.type' => 'required', + 'downloadable_links.*.file' => 'required_if:type,==,file', + 'downloadable_links.*.file_name' => 'required_if:type,==,file', + 'downloadable_links.*.url' => 'required_if:type,==,url', + 'downloadable_links.*.downloads' => 'required', + 'downloadable_links.*.sort_order' => 'required', + ]; + } + + /** + * Add product. Returns error message if can't prepare product. + * + * @param array $data + * @return array + */ + public function prepareForCart($data) + { + if (! isset($data['links']) || ! count($data['links'])) + return trans('shop::app.checkout.cart.integrity.missing_links'); + + $products = parent::prepareForCart($data); + + foreach ($this->product->downloadable_links as $link) { + if (! in_array($link->id, $data['links'])) + continue; + + $products[0]['price'] += core()->convertPrice($link->price); + $products[0]['base_price'] += $link->price; + $products[0]['total'] += (core()->convertPrice($link->price) * $products[0]['quantity']); + $products[0]['base_total'] += ($link->price * $products[0]['quantity']); + } + + return $products; + } + + /** + * + * @param array $options1 + * @param array $options2 + * @return boolean + */ + public function compareOptions($options1, $options2) + { + if ($this->product->id != $options2['product_id']) + return false; + + return $options1['links'] == $options2['links']; + } + + /** + * Returns additional information for items + * + * @param array $data + * @return array + */ + public function getAdditionalOptions($data) + { + $labels = []; + + foreach ($this->product->downloadable_links as $link) { + if (in_array($link->id, $data['links'])) + $labels[] = $link->title; + } + + $data['attributes'][0] = [ + 'attribute_name' => 'Downloads', + 'option_id' => 0, + 'option_label' => implode(', ', $labels), + ]; + + return $data; + } + + /** + * Validate cart item product price + * + * @param CartItem $item + * @return float + */ + public function validateCartItem($item) + { + $price = $item->product->getTypeInstance()->getFinalPrice(); + + foreach ($item->product->downloadable_links as $link) { + if (! in_array($link->id, $item->additional['links'])) + continue; + + $price += $link->price; + } + + if ($price == $item->base_price) + return; + + $item->base_price = $price; + $item->price = core()->convertPrice($price); + + $item->base_total = $price * $item->quantity; + $item->total = core()->convertPrice($price * $item->quantity); + + $item->save(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/Grouped.php b/packages/Webkul/Product/src/Type/Grouped.php new file mode 100644 index 000000000..0d1559f43 --- /dev/null +++ b/packages/Webkul/Product/src/Type/Grouped.php @@ -0,0 +1,192 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Grouped extends AbstractType +{ + /** + * ProductGroupedProductRepository instance + * + * @var ProductGroupedProductRepository + */ + protected $productGroupedProductRepository; + + /** + * Skip attribute for downloadable product type + * + * @var array + */ + protected $skipAttributes = ['price', 'cost', 'special_price', 'special_price_from', 'special_price_to', 'width', 'height', 'depth', 'weight']; + + /** + * These blade files will be included in product edit page + * + * @var array + */ + protected $additionalViews = [ + 'admin::catalog.products.accordians.images', + 'admin::catalog.products.accordians.categories', + 'admin::catalog.products.accordians.grouped-products', + 'admin::catalog.products.accordians.channels', + 'admin::catalog.products.accordians.product-links' + ]; + + /** + * Is a composite product type + * + * @var boolean + */ + protected $isComposite = true; + + /** + * Create a new product type instance. + * + * @param Webkul\Attribute\Repositories\AttributeRepository $attributeRepository + * @param Webkul\Product\Repositories\ProductRepository $productRepository + * @param Webkul\Product\Repositories\ProductAttributeValueRepository $attributeValueRepository + * @param Webkul\Product\Repositories\ProductInventoryRepository $productInventoryRepository + * @param Webkul\Product\Repositories\ProductImageRepository $productImageRepository + * @param Webkul\Product\Repositories\ProductGroupedProductRepository $productGroupedProductRepository + * @param Webkul\Product\Helpers\ProductImage $productImageHelper + * @return void + */ + public function __construct( + AttributeRepository $attributeRepository, + ProductRepository $productRepository, + ProductAttributeValueRepository $attributeValueRepository, + ProductInventoryRepository $productInventoryRepository, + ProductImageRepository $productImageRepository, + ProductGroupedProductRepository $productGroupedProductRepository, + ProductImage $productImageHelper + ) + { + parent::__construct( + $attributeRepository, + $productRepository, + $attributeValueRepository, + $productInventoryRepository, + $productImageRepository, + $productImageHelper + ); + + $this->productGroupedProductRepository = $productGroupedProductRepository; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return Product + */ + public function update(array $data, $id, $attribute = "id") + { + $product = parent::update($data, $id, $attribute); + + if (request()->route()->getName() != 'admin.catalog.products.massupdate') + $this->productGroupedProductRepository->saveGroupedProducts($data, $product); + + return $product; + } + + /** + * Returns children ids + * + * @return array + */ + public function getChildrenIds() + { + return array_unique($this->product->grouped_products()->pluck('product_id')->toArray()); + } + + /** + * Check if catalog rule can be applied + * + * @return bool + */ + public function priceRuleCanBeApplied() + { + return false; + } + + /** + * Get product minimal price + * + * @return float + */ + public function getMinimalPrice() + { + $minPrices = []; + + foreach ($this->product->grouped_products as $groupOptionProduct) { + $minPrices[] = $groupOptionProduct->associated_product->getTypeInstance()->getMinimalPrice(); + } + + if (empty($minPrices)) + return 0; + + return min($minPrices); + } + + /** + * Get product minimal price + * + * @return string + */ + public function getPriceHtml() + { + return '' . trans('shop::app.products.starting-at') . '' + . '' . core()->currency($this->getMinimalPrice()) . ''; + } + + /** + * Add product. Returns error message if can't prepare product. + * + * @param array $data + * @return array + */ + public function prepareForCart($data) + { + if (! isset($data['qty']) || ! is_array($data['qty'])) + return trans('shop::app.checkout.cart.integrity.missing_options'); + + $products = []; + + foreach ($data['qty'] as $productId => $qty) { + if (! $qty) + continue; + + $product = $this->productRepository->find($productId); + + $cartProducts = $product->getTypeInstance()->prepareForCart([ + 'product_id' => $productId, + 'quantity' => $qty, + ]); + + if (is_string($cartProducts)) + return $cartProducts; + + $products = array_merge($products, $cartProducts); + } + + if (! count($products)) + return trans('shop::app.checkout.cart.integrity.qty_missing'); + + return $products; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/Simple.php b/packages/Webkul/Product/src/Type/Simple.php new file mode 100644 index 000000000..dddef73c3 --- /dev/null +++ b/packages/Webkul/Product/src/Type/Simple.php @@ -0,0 +1,65 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Simple extends AbstractType +{ + /** + * Skip attribute for simple product type + * + * @var array + */ + protected $skipAttributes = []; + + /** + * These blade files will be included in product edit page + * + * @var array + */ + protected $additionalViews = [ + 'admin::catalog.products.accordians.inventories', + 'admin::catalog.products.accordians.images', + 'admin::catalog.products.accordians.categories', + 'admin::catalog.products.accordians.channels', + 'admin::catalog.products.accordians.product-links' + ]; + + /** + * Show quantity box + * + * @var boolean + */ + protected $showQuantityBox = true; + + /** + * Return true if this product type is saleable + * + * @return boolean + */ + public function isSaleable() + { + if (! $this->product->status) + return false; + + if ($this->haveSufficientQuantity(1)) + return true; + + return false; + } + + /** + * @param integer $qty + * + * @return boolean + */ + public function haveSufficientQuantity($qty) + { + return $qty <= $this->totalQuantity() ? true : (core()->getConfigData('catalog.inventory.stock_options.backorders') ? true : false); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/Virtual.php b/packages/Webkul/Product/src/Type/Virtual.php new file mode 100644 index 000000000..487be2d9e --- /dev/null +++ b/packages/Webkul/Product/src/Type/Virtual.php @@ -0,0 +1,71 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Virtual extends AbstractType +{ + /** + * Skip attribute for virtual product type + * + * @var array + */ + protected $skipAttributes = ['width', 'height', 'depth', 'weight']; + + /** + * These blade files will be included in product edit page + * + * @var array + */ + protected $additionalViews = [ + 'admin::catalog.products.accordians.inventories', + 'admin::catalog.products.accordians.images', + 'admin::catalog.products.accordians.categories', + 'admin::catalog.products.accordians.channels', + 'admin::catalog.products.accordians.product-links' + ]; + + /** + * Is a stokable product type + * + * @var boolean + */ + protected $isStockable = false; + + /** + * Show quantity box + * + * @var boolean + */ + protected $showQuantityBox = true; + + /** + * Return true if this product type is saleable + * + * @return boolean + */ + public function isSaleable() + { + if (! $this->product->status) + return false; + + if ($this->haveSufficientQuantity(1)) + return true; + + return false; + } + + /** + * @param integer $qty + * @return bool + */ + public function haveSufficientQuantity($qty) + { + return $qty <= $this->totalQuantity() ? true : false; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/resources/manifest.php b/packages/Webkul/Product/src/resources/manifest.php new file mode 100644 index 000000000..2361976a0 --- /dev/null +++ b/packages/Webkul/Product/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto Product', + 'version' => '0.0.1' + ]; diff --git a/packages/Webkul/Rule/src/Helpers/Validator.php b/packages/Webkul/Rule/src/Helpers/Validator.php new file mode 100644 index 000000000..ac510f314 --- /dev/null +++ b/packages/Webkul/Rule/src/Helpers/Validator.php @@ -0,0 +1,240 @@ +conditions) + return true; + + $validConditionCount = $totalConditionCount = 0; + + foreach ($rule->conditions as $condition) { + if (! $condition['attribute'] || ! isset($condition['value']) || is_null($condition['value']) || $condition['value'] == '') + continue; + + if ($entity instanceof \Webkul\Checkout\Contracts\Cart && strpos($condition['attribute'], 'cart|') === false) + continue; + + $totalConditionCount++; + + if ($rule->condition_type == 1) { + if (! $this->validateObject($condition, $entity)) { + return false; + } else { + $validConditionCount++; + } + } else { + if ($this->validateObject($condition, $entity)) + return true; + } + } + + return $validConditionCount == $totalConditionCount ? true : false; + } + + /** + * Return value for the attribute + * + * @param array $condition + * @param CartItem|Product $entity + * @return boolean + */ + public function getAttributeValue($condition, $entity) + { + $chunks = explode('|', $condition['attribute']); + + $attributeNameChunks = explode('::', $chunks[1]); + + $attributeCode = $attributeNameChunks[count($attributeNameChunks) - 1]; + + switch (current($chunks)) { + case 'cart': + $cart = $entity instanceof \Webkul\Checkout\Contracts\Cart ? $entity : $entity->cart; + + if (in_array($attributeCode, ['postcode', 'state', 'country'])) { + if (! $cart->shipping_address) + return; + + return $cart->shipping_address->{$attributeCode}; + } else if ($attributeCode == 'shipping_method') { + if (! $cart->shipping_method) + return; + + $shippingChunks = explode('_', $cart->shipping_method); + + return current($shippingChunks); + } else if ($attributeCode == 'payment_method') { + if (! $cart->payment) + return; + + return $cart->payment->method; + } else { + return $cart->{$attributeCode}; + } + + case 'cart_item': + return $entity->{$attributeCode}; + + case 'product': + if ($attributeCode == 'category_ids') { + $value = $entity->product + ? $entity->product->categories()->pluck('id')->toArray() + : $entity->categories()->pluck('id')->toArray(); + + return $value; + } else { + $value = $entity->product + ? $entity->product->{$attributeCode} + : $entity->{$attributeCode}; + + if (! in_array($condition['attribute_type'], ['multiselect', 'checkbox'])) + return $value; + + return $value ? explode(',', $value) : []; + } + } + } + + /** + * Validate object + * + * @param array $condition + * @param CartItem $entity + * @return bool + */ + private function validateObject($condition, $entity) + { + $validated = false; + + foreach ($this->getAllItems($this->getAttributeScope($condition), $entity) as $item) { + $attributeValue = $this->getAttributeValue($condition, $item); + + if ($validated = $this->validateAttribute($condition, $attributeValue)) + break; + } + + return $validated; + } + + /** + * Return all cart items + * + * @param string $attributeScope + * @param Cart|CartItem|Product $item + * @return array + */ + private function getAllItems($attributeScope, $item) + { + if ($attributeScope === 'parent') { + return [$item]; + } elseif ($attributeScope === 'children') { + return $item->children ?: [$item]; + } else { + $items = $item->children ?: []; + + $items[] = $item; + } + + return $items; + } + + /** + * Validate object + * + * @param array $condition + * @return string + */ + private function getAttributeScope($condition) + { + $chunks = explode('|', $condition['attribute']); + + $attributeNameChunks = explode('::', $chunks[1]); + + return count($attributeNameChunks) == 2 ? $attributeNameChunks[0] : null; + } + + /** + * Validate attribute value for condition + * + * @param array $condition + * @param mixed $attributeValue + * @return boolean + */ + public function validateAttribute($condition, $attributeValue) + { + switch ($condition['operator']) { + case '==': case '!=': + if (is_array($condition['value'])) { + if (! is_array($attributeValue)) + return false; + + $result = ! empty(array_intersect($condition['value'], $attributeValue)); + } else { + if (is_array($attributeValue)) { + $result = count($attributeValue) == 1 && array_shift($attributeValue) == $condition['value']; + } else { + $result = $attributeValue == $condition['value']; + } + } + + break; + + case '<=': case '>': + if (! is_scalar($attributeValue)) + return false; + + $result = $attributeValue <= $condition['value']; + + break; + + case '>=': case '<': + if (! is_scalar($attributeValue)) + return false; + + $result = $attributeValue >= $condition['value']; + + break; + + case '{}': case '!{}': + if (is_scalar($attributeValue) && is_array($condition['value'])) { + foreach ($condition['value'] as $item) { + if (stripos($attributeValue, $item) !== false) { + $result = true; + + break; + } + } + } else if (is_array($condition['value'])) { + if (! is_array($attributeValue)) + return false; + + $result = ! empty(array_intersect($condition['value'], $attributeValue)); + } else { + if (is_array($attributeValue)) { + $result = in_array($condition['value'], $attributeValue); + } else { + $result = (strpos($attributeValue, $condition['value']) !== false) ? true : false; + } + } + + break; + } + + if (in_array($condition['operator'], ['!=', '>', '<', '!{}'])) + $result = ! $result; + + return $result; + } +} \ No newline at end of file diff --git a/packages/Webkul/Rule/src/Providers/RuleServiceProvider.php b/packages/Webkul/Rule/src/Providers/RuleServiceProvider.php new file mode 100644 index 000000000..2a48f4d5d --- /dev/null +++ b/packages/Webkul/Rule/src/Providers/RuleServiceProvider.php @@ -0,0 +1,26 @@ + 'sales.orderSettings', + 'name' => 'admin::app.admin.system.order-settings', + 'sort' => 3, + ],[ + 'key' => 'sales.orderSettings.order_number', + 'name' => 'admin::app.admin.system.orderNumber', + 'sort' => 0, + 'fields' => [ + [ + 'name' => 'order_number_prefix', + 'title' => 'admin::app.admin.system.order-number-prefix', + 'type' => 'text', + 'validation' => false, + 'channel_based' => true, + 'locale_based' => true + ], + [ + 'name' => 'order_number_length', + 'title' => 'admin::app.admin.system.order-number-length', + 'type' => 'text', + 'validation' => 'numeric', + 'channel_based' => true, + 'locale_based' => true + ], + [ + 'name' => 'order_number_suffix', + 'title' => 'admin::app.admin.system.order-number-suffix', + 'type' => 'text', + 'validation' => false, + 'channel_based' => true, + 'locale_based' => true + ], + ] + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Contracts/DownloadableLinkPurchased.php b/packages/Webkul/Sales/src/Contracts/DownloadableLinkPurchased.php new file mode 100644 index 000000000..b79224fe8 --- /dev/null +++ b/packages/Webkul/Sales/src/Contracts/DownloadableLinkPurchased.php @@ -0,0 +1,7 @@ +increments('id'); + $table->string('increment_id'); + $table->string('status')->nullable(); + $table->string('channel_name')->nullable(); + + $table->boolean('is_guest')->nullable(); + $table->string('customer_email')->nullable(); + $table->string('customer_first_name')->nullable(); + $table->string('customer_last_name')->nullable(); + + $table->string('shipping_method')->nullable(); + $table->string('shipping_title')->nullable(); + $table->string('shipping_description')->nullable(); + $table->string('coupon_code')->nullable(); + $table->boolean('is_gift')->default(0); + + $table->integer('total_item_count')->nullable(); + $table->integer('total_qty_ordered')->nullable(); + + $table->string('base_currency_code')->nullable(); + $table->string('channel_currency_code')->nullable(); + $table->string('order_currency_code')->nullable(); + + $table->decimal('grand_total', 12, 4)->default(0)->nullable(); + $table->decimal('base_grand_total', 12, 4)->default(0)->nullable(); + $table->decimal('grand_total_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('base_grand_total_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('grand_total_refunded', 12, 4)->default(0)->nullable(); + $table->decimal('base_grand_total_refunded', 12, 4)->default(0)->nullable(); + + $table->decimal('sub_total', 12, 4)->default(0)->nullable(); + $table->decimal('base_sub_total', 12, 4)->default(0)->nullable(); + $table->decimal('sub_total_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('base_sub_total_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('sub_total_refunded', 12, 4)->default(0)->nullable(); + $table->decimal('base_sub_total_refunded', 12, 4)->default(0)->nullable(); + + $table->decimal('discount_percent', 12, 4)->default(0)->nullable(); + $table->decimal('discount_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount_amount', 12, 4)->default(0)->nullable(); + $table->decimal('discount_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('discount_refunded', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount_refunded', 12, 4)->default(0)->nullable(); + + $table->decimal('tax_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_tax_amount', 12, 4)->default(0)->nullable(); + $table->decimal('tax_amount_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('base_tax_amount_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('tax_amount_refunded', 12, 4)->default(0)->nullable(); + $table->decimal('base_tax_amount_refunded', 12, 4)->default(0)->nullable(); + + $table->decimal('shipping_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_shipping_amount', 12, 4)->default(0)->nullable(); + $table->decimal('shipping_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('base_shipping_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('shipping_refunded', 12, 4)->default(0)->nullable(); + $table->decimal('base_shipping_refunded', 12, 4)->default(0)->nullable(); + + $table->integer('customer_id')->unsigned()->nullable(); + $table->string('customer_type')->nullable(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('set null'); + $table->integer('channel_id')->unsigned()->nullable(); + $table->string('channel_type')->nullable(); + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('set null'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('orders'); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_113207_create_order_items_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_113207_create_order_items_table.php new file mode 100755 index 000000000..42d004e8d --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_113207_create_order_items_table.php @@ -0,0 +1,79 @@ +increments('id'); + $table->string('sku')->nullable(); + $table->string('type')->nullable(); + $table->string('name')->nullable(); + $table->string('coupon_code')->nullable(); + + $table->decimal('weight', 12,4)->default(0)->nullable(); + $table->decimal('total_weight', 12,4)->default(0)->nullable(); + + $table->integer('qty_ordered')->default(0)->nullable(); + $table->integer('qty_shipped')->default(0)->nullable(); + $table->integer('qty_invoiced')->default(0)->nullable(); + $table->integer('qty_canceled')->default(0)->nullable(); + $table->integer('qty_refunded')->default(0)->nullable(); + + $table->decimal('price', 12,4)->default(0); + $table->decimal('base_price', 12,4)->default(0); + + $table->decimal('total', 12,4)->default(0); + $table->decimal('base_total', 12,4)->default(0); + $table->decimal('total_invoiced', 12,4)->default(0); + $table->decimal('base_total_invoiced', 12,4)->default(0); + $table->decimal('amount_refunded', 12,4)->default(0); + $table->decimal('base_amount_refunded', 12,4)->default(0); + + $table->decimal('discount_percent', 12, 4)->default(0)->nullable(); + $table->decimal('discount_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount_amount', 12, 4)->default(0)->nullable(); + $table->decimal('discount_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('discount_refunded', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount_refunded', 12, 4)->default(0)->nullable(); + + $table->decimal('tax_percent', 12, 4)->default(0)->nullable(); + $table->decimal('tax_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_tax_amount', 12, 4)->default(0)->nullable(); + $table->decimal('tax_amount_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('base_tax_amount_invoiced', 12, 4)->default(0)->nullable(); + $table->decimal('tax_amount_refunded', 12, 4)->default(0)->nullable(); + $table->decimal('base_tax_amount_refunded', 12, 4)->default(0)->nullable(); + + $table->integer('product_id')->unsigned()->nullable(); + $table->string('product_type')->nullable(); + $table->integer('order_id')->unsigned()->nullable(); + $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade'); + $table->integer('parent_id')->unsigned()->nullable(); + $table->foreign('parent_id')->references('id')->on('order_items')->onDelete('cascade'); + + $table->json('additional')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('order_items'); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_113405_create_order_address_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_113405_create_order_address_table.php new file mode 100755 index 000000000..7083fc8ca --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_113405_create_order_address_table.php @@ -0,0 +1,46 @@ +increments('id'); + $table->string('first_name'); + $table->string('last_name'); + $table->string('email'); + $table->string('address1'); + $table->string('address2')->nullable(); + $table->string('country'); + $table->string('state'); + $table->string('city'); + $table->integer('postcode'); + $table->string('phone'); + $table->string('address_type'); + $table->integer('order_id')->unsigned(); + $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade'); + $table->integer('customer_id')->unsigned()->nullable(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('set null'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('order_address'); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115022_create_shipments_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115022_create_shipments_table.php new file mode 100755 index 000000000..8e7357c02 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115022_create_shipments_table.php @@ -0,0 +1,46 @@ +increments('id'); + $table->string('status')->nullable(); + + $table->integer('total_qty')->nullable(); + $table->integer('total_weight')->nullable(); + $table->string('carrier_code')->nullable(); + $table->string('carrier_title')->nullable(); + $table->text('track_number')->nullable(); + $table->boolean('email_sent')->default(0); + + $table->integer('customer_id')->unsigned()->nullable(); + $table->string('customer_type')->nullable(); + $table->integer('order_id')->unsigned(); + $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade'); + $table->integer('order_address_id')->unsigned()->nullable(); + $table->foreign('order_address_id')->references('id')->on('order_address')->onDelete('set null'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('shipments'); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115029_create_shipment_items_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115029_create_shipment_items_table.php new file mode 100755 index 000000000..20f8e3f54 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115029_create_shipment_items_table.php @@ -0,0 +1,48 @@ +increments('id'); + $table->string('name')->nullable(); + $table->string('description')->nullable(); + $table->string('sku')->nullable(); + $table->integer('qty')->nullable(); + $table->integer('weight')->nullable(); + + $table->decimal('price', 12, 4)->default(0)->nullable(); + $table->decimal('base_price', 12, 4)->default(0)->nullable(); + $table->decimal('total', 12, 4)->default(0)->nullable(); + $table->decimal('base_total', 12, 4)->default(0)->nullable(); + + $table->integer('product_id')->unsigned()->nullable(); + $table->string('product_type')->nullable(); + $table->integer('order_item_id')->unsigned()->nullable(); + $table->integer('shipment_id')->unsigned(); + $table->foreign('shipment_id')->references('id')->on('shipments')->onDelete('cascade'); + $table->json('additional')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('shipment_items'); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115135_create_invoices_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115135_create_invoices_table.php new file mode 100755 index 000000000..2d98c577b --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115135_create_invoices_table.php @@ -0,0 +1,60 @@ +increments('id'); + $table->string('increment_id')->nullable(); + $table->string('state')->nullable(); + $table->boolean('email_sent')->default(0); + + $table->integer('total_qty')->nullable(); + + $table->string('base_currency_code')->nullable(); + $table->string('channel_currency_code')->nullable(); + $table->string('order_currency_code')->nullable(); + + $table->decimal('sub_total', 12, 4)->default(0)->nullable(); + $table->decimal('base_sub_total', 12, 4)->default(0)->nullable(); + + $table->decimal('grand_total', 12, 4)->default(0)->nullable(); + $table->decimal('base_grand_total', 12, 4)->default(0)->nullable(); + + $table->decimal('shipping_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_shipping_amount', 12, 4)->default(0)->nullable(); + + $table->decimal('tax_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_tax_amount', 12, 4)->default(0)->nullable(); + + $table->decimal('discount_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount_amount', 12, 4)->default(0)->nullable(); + + $table->integer('order_id')->unsigned()->nullable(); + $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade'); + $table->integer('order_address_id')->unsigned()->nullable(); + $table->foreign('order_address_id')->references('id')->on('order_address')->onDelete('set null'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('invoices'); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115144_create_invoice_items_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115144_create_invoice_items_table.php new file mode 100755 index 000000000..253286080 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_09_27_115144_create_invoice_items_table.php @@ -0,0 +1,54 @@ +increments('id'); + $table->string('name')->nullable(); + $table->string('description')->nullable(); + $table->string('sku')->nullable(); + $table->integer('qty')->nullable(); + + $table->decimal('price', 12,4)->default(0); + $table->decimal('base_price', 12,4)->default(0); + + $table->decimal('total', 12,4)->default(0); + $table->decimal('base_total', 12,4)->default(0); + + $table->decimal('tax_amount', 12,4)->default(0)->nullable(); + $table->decimal('base_tax_amount', 12,4)->default(0)->nullable(); + + $table->integer('product_id')->unsigned()->nullable(); + $table->string('product_type')->nullable(); + $table->integer('order_item_id')->unsigned()->nullable(); + $table->integer('invoice_id')->unsigned()->nullable(); + $table->foreign('invoice_id')->references('id')->on('invoices')->onDelete('cascade'); + $table->integer('parent_id')->unsigned()->nullable(); + $table->foreign('parent_id')->references('id')->on('invoice_items')->onDelete('cascade'); + + $table->json('additional')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('invoice_items'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_10_01_095504_create_order_payment_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_10_01_095504_create_order_payment_table.php new file mode 100755 index 000000000..f61ded82f --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_10_01_095504_create_order_payment_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('method'); + $table->string('method_title')->nullable(); + $table->integer('order_id')->nullable()->unsigned(); + $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('order_payment'); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_153257_alter_order_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_153257_alter_order_table.php new file mode 100755 index 000000000..f8ffe1c2c --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_153257_alter_order_table.php @@ -0,0 +1,32 @@ +integer('cart_id')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('orders', function (Blueprint $table) { + $table->dropColumn('cart_id'); + }); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_163729_alter_invoice_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_163729_alter_invoice_table.php new file mode 100755 index 000000000..507017784 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_11_15_163729_alter_invoice_table.php @@ -0,0 +1,32 @@ +string('transaction_id')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('invoices', function (Blueprint $table) { + $table->dropColumn('transaction_id'); + }); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2018_12_24_184402_alter_shipments_table.php b/packages/Webkul/Sales/src/Database/Migrations/2018_12_24_184402_alter_shipments_table.php new file mode 100755 index 000000000..72c15a43b --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2018_12_24_184402_alter_shipments_table.php @@ -0,0 +1,34 @@ +integer('inventory_source_id')->unsigned()->nullable(); + $table->foreign('inventory_source_id')->references('id')->on('inventory_sources')->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('shipments', function (Blueprint $table) { + $table->dropForeign('shipments_inventory_source_id_foreign')->references('id')->on('inventory_sources')->onDelete('set null'); + $table->dropColumn('inventory_source_id'); + }); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2019_05_23_155520_add_discount_columns_in_invoice_items_table.php b/packages/Webkul/Sales/src/Database/Migrations/2019_05_23_155520_add_discount_columns_in_invoice_items_table.php new file mode 100644 index 000000000..30f3f6c38 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2019_05_23_155520_add_discount_columns_in_invoice_items_table.php @@ -0,0 +1,36 @@ +decimal('discount_percent', 12, 4)->default(0)->nullable(); + $table->decimal('discount_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount_amount', 12, 4)->default(0)->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('invoice_items', function (Blueprint $table) { + $table->dropColumn('discount_percent'); + $table->dropColumn('discount_amount'); + $table->dropColumn('base_discount_amount'); + }); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2019_06_21_202249_create_downloadable_link_purchased_table.php b/packages/Webkul/Sales/src/Database/Migrations/2019_06_21_202249_create_downloadable_link_purchased_table.php new file mode 100644 index 000000000..d872995de --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2019_06_21_202249_create_downloadable_link_purchased_table.php @@ -0,0 +1,50 @@ +increments('id'); + $table->string('product_name')->nullable(); + $table->string('name')->nullable(); + $table->string('url')->nullable(); + $table->string('file')->nullable(); + $table->string('file_name')->nullable(); + $table->string('type'); + $table->integer('download_bought')->default(0); + $table->integer('download_used')->default(0); + $table->string('status')->nullable(); + + $table->integer('customer_id')->unsigned(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); + + $table->integer('order_id')->unsigned(); + $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade'); + + $table->integer('order_item_id')->unsigned(); + $table->foreign('order_item_id')->references('id')->on('order_items')->onDelete('cascade'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('downloadable_link_purchased'); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2019_09_11_184511_create_refunds_table.php b/packages/Webkul/Sales/src/Database/Migrations/2019_09_11_184511_create_refunds_table.php new file mode 100644 index 000000000..d43513199 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2019_09_11_184511_create_refunds_table.php @@ -0,0 +1,65 @@ +increments('id'); + $table->string('increment_id')->nullable(); + $table->string('state')->nullable(); + $table->boolean('email_sent')->default(0); + + $table->integer('total_qty')->nullable(); + + $table->string('base_currency_code')->nullable(); + $table->string('channel_currency_code')->nullable(); + $table->string('order_currency_code')->nullable(); + + $table->decimal('adjustment_refund', 12, 4)->default(0)->nullable(); + $table->decimal('base_adjustment_refund', 12, 4)->default(0)->nullable(); + + $table->decimal('adjustment_fee', 12, 4)->default(0)->nullable(); + $table->decimal('base_adjustment_fee', 12, 4)->default(0)->nullable(); + + $table->decimal('sub_total', 12, 4)->default(0)->nullable(); + $table->decimal('base_sub_total', 12, 4)->default(0)->nullable(); + + $table->decimal('grand_total', 12, 4)->default(0)->nullable(); + $table->decimal('base_grand_total', 12, 4)->default(0)->nullable(); + + $table->decimal('shipping_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_shipping_amount', 12, 4)->default(0)->nullable(); + + $table->decimal('tax_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_tax_amount', 12, 4)->default(0)->nullable(); + + $table->decimal('discount_percent', 12, 4)->default(0)->nullable(); + $table->decimal('discount_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount_amount', 12, 4)->default(0)->nullable(); + + $table->integer('order_id')->unsigned()->nullable(); + $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('refunds'); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2019_09_11_184519_create_refund_items_table.php b/packages/Webkul/Sales/src/Database/Migrations/2019_09_11_184519_create_refund_items_table.php new file mode 100644 index 000000000..d522f9987 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2019_09_11_184519_create_refund_items_table.php @@ -0,0 +1,62 @@ +increments('id'); + $table->string('name')->nullable(); + $table->string('description')->nullable(); + $table->string('sku')->nullable(); + $table->integer('qty')->nullable(); + + $table->decimal('price', 12,4)->default(0); + $table->decimal('base_price', 12,4)->default(0); + + $table->decimal('total', 12,4)->default(0); + $table->decimal('base_total', 12,4)->default(0); + + $table->decimal('tax_amount', 12,4)->default(0)->nullable(); + $table->decimal('base_tax_amount', 12,4)->default(0)->nullable(); + + $table->decimal('discount_percent', 12, 4)->default(0)->nullable(); + $table->decimal('discount_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_discount_amount', 12, 4)->default(0)->nullable(); + + $table->integer('product_id')->unsigned()->nullable(); + $table->string('product_type')->nullable(); + + $table->integer('order_item_id')->unsigned()->nullable(); + $table->foreign('order_item_id')->references('id')->on('order_items')->onDelete('cascade'); + + $table->integer('refund_id')->unsigned()->nullable(); + $table->foreign('refund_id')->references('id')->on('refunds')->onDelete('cascade'); + + $table->integer('parent_id')->unsigned()->nullable(); + $table->foreign('parent_id')->references('id')->on('refund_items')->onDelete('cascade'); + + $table->json('additional')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('refund_items'); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2019_10_24_173358_change_postcode_column_type_in_order_address_table.php b/packages/Webkul/Sales/src/Database/Migrations/2019_10_24_173358_change_postcode_column_type_in_order_address_table.php new file mode 100644 index 000000000..e76def556 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2019_10_24_173358_change_postcode_column_type_in_order_address_table.php @@ -0,0 +1,32 @@ +string('postcode')->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('order_address', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2019_11_30_124437_add_applied_cart_rule_ids_column_in_orders_table.php b/packages/Webkul/Sales/src/Database/Migrations/2019_11_30_124437_add_applied_cart_rule_ids_column_in_orders_table.php new file mode 100644 index 000000000..6ee96be4b --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2019_11_30_124437_add_applied_cart_rule_ids_column_in_orders_table.php @@ -0,0 +1,32 @@ +string('applied_cart_rule_ids')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('orders', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2020_01_09_154851_add_shipping_discount_columns_in_orders_table.php b/packages/Webkul/Sales/src/Database/Migrations/2020_01_09_154851_add_shipping_discount_columns_in_orders_table.php new file mode 100644 index 000000000..2d5f69876 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2020_01_09_154851_add_shipping_discount_columns_in_orders_table.php @@ -0,0 +1,33 @@ +decimal('shipping_discount_amount', 12, 4)->default(0)->nullable(); + $table->decimal('base_shipping_discount_amount', 12, 4)->default(0)->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('orders', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Sales/src/Database/Migrations/2020_01_09_202815_add_inventory_source_name_column_in_shipments_table.php b/packages/Webkul/Sales/src/Database/Migrations/2020_01_09_202815_add_inventory_source_name_column_in_shipments_table.php new file mode 100644 index 000000000..07fd44fa6 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2020_01_09_202815_add_inventory_source_name_column_in_shipments_table.php @@ -0,0 +1,32 @@ +string('inventory_source_name')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('shipments', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Sales/src/Models/DownloadableLinkPurchased.php b/packages/Webkul/Sales/src/Models/DownloadableLinkPurchased.php new file mode 100644 index 000000000..6851bd2e8 --- /dev/null +++ b/packages/Webkul/Sales/src/Models/DownloadableLinkPurchased.php @@ -0,0 +1,39 @@ +belongsTo(CustomerProxy::modelClass()); + } + + /** + * Get the order record associated with the item. + */ + public function order() + { + return $this->belongsTo(OrderProxy::modelClass()); + } + + /** + * Get the order item record associated with the item. + */ + public function order_item() + { + return $this->belongsTo(OrderItemProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/DownloadableLinkPurchasedProxy.php b/packages/Webkul/Sales/src/Models/DownloadableLinkPurchasedProxy.php new file mode 100644 index 000000000..91a4d2ada --- /dev/null +++ b/packages/Webkul/Sales/src/Models/DownloadableLinkPurchasedProxy.php @@ -0,0 +1,10 @@ + 'Pending', + 'paid' => 'Paid', + 'refunded' => 'Refunded', + ]; + + /** + * Returns the status label from status code + */ + public function getStatusLabelAttribute() + { + return isset($this->statusLabel[$this->state]) ? $this->statusLabel[$this->state] : ''; + } + + /** + * Get the order that belongs to the invoice. + */ + public function order() + { + return $this->belongsTo(OrderProxy::modelClass()); + } + + /** + * Get the invoice items record associated with the invoice. + */ + public function items() { + return $this->hasMany(InvoiceItemProxy::modelClass())->whereNull('parent_id'); + } + + /** + * Get the customer record associated with the invoice. + */ + public function customer() + { + return $this->morphTo(); + } + + /** + * Get the channel record associated with the invoice. + */ + public function channel() + { + return $this->morphTo(); + } + + /** + * Get the addresses for the shipment. + */ + public function address() + { + return $this->belongsTo(OrderAddressProxy::modelClass(), 'order_address_id'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/InvoiceItem.php b/packages/Webkul/Sales/src/Models/InvoiceItem.php new file mode 100755 index 000000000..9eaa6f47c --- /dev/null +++ b/packages/Webkul/Sales/src/Models/InvoiceItem.php @@ -0,0 +1,73 @@ + 'array', + ]; + + /** + * Retrieve type instance + * + * @return AbstractType + */ + public function getTypeInstance() + { + return $this->order_item->getTypeInstance(); + } + + /** + * Get the invoice record associated with the invoice item. + */ + public function invoice() + { + return $this->belongsTo(InvoiceProxy::modelClass()); + } + + /** + * Get the order item record associated with the invoice item. + */ + public function order_item() + { + return $this->belongsTo(OrderItemProxy::modelClass()); + } + + /** + * Get the invoice record associated with the invoice item. + */ + public function product() + { + return $this->morphTo(); + } + + /** + * Get the child item record associated with the invoice item. + */ + public function child() + { + return $this->hasOne(InvoiceItemProxy::modelClass(), 'parent_id'); + } + + /** + * Get the children items. + */ + public function children() + { + return $this->hasMany(self::class, 'parent_id'); + } + + /** + * Get order item type + */ + public function getTypeAttribute() + { + return $this->order_item->type; + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/InvoiceItemProxy.php b/packages/Webkul/Sales/src/Models/InvoiceItemProxy.php new file mode 100755 index 000000000..9d7dc640b --- /dev/null +++ b/packages/Webkul/Sales/src/Models/InvoiceItemProxy.php @@ -0,0 +1,10 @@ + 'Pending', + 'pending_payment' => 'Pending Payment', + 'processing' => 'Processing', + 'completed' => 'Completed', + 'canceled' => 'Canceled', + 'closed' => 'Closed', + 'fraud' => 'Fraud' + ]; + + /** + * Get the order items record associated with the order. + */ + public function getCustomerFullNameAttribute() + { + return $this->customer_first_name . ' ' . $this->customer_last_name; + } + + /** + * Returns the status label from status code + */ + public function getStatusLabelAttribute() + { + return $this->statusLabel[$this->status]; + } + + /** + * Return base total due amount + */ + public function getBaseTotalDueAttribute() + { + return $this->base_grand_total - $this->base_grand_total_invoiced; + } + + /** + * Return total due amount + */ + public function getTotalDueAttribute() + { + return $this->grand_total - $this->grand_total_invoiced; + } + + /** + * Get the order items record associated with the order. + */ + public function items() + { + return $this->hasMany(OrderItemProxy::modelClass())->whereNull('parent_id'); + } + + /** + * Get the order items record associated with the order. + */ + public function all_items() + { + return $this->hasMany(OrderItemProxy::modelClass()); + } + + /** + * Get the order shipments record associated with the order. + */ + public function shipments() + { + return $this->hasMany(ShipmentProxy::modelClass()); + } + + /** + * Get the order invoices record associated with the order. + */ + public function invoices() + { + return $this->hasMany(InvoiceProxy::modelClass()); + } + + /** + * Get the order refunds record associated with the order. + */ + public function refunds() + { + return $this->hasMany(RefundProxy::modelClass()); + } + + /** + * Get the customer record associated with the order. + */ + public function customer() + { + return $this->morphTo(); + } + + /** + * Get the addresses for the order. + */ + public function addresses() + { + return $this->hasMany(OrderAddressProxy::modelClass()); + } + + /** + * Get the payment for the order. + */ + public function payment() + { + return $this->hasOne(OrderPaymentProxy::modelClass()); + } + + /** + * Get the biling address for the order. + */ + public function billing_address() + { + return $this->addresses()->where('address_type', 'billing'); + } + + /** + * Get billing address for the order. + */ + public function getBillingAddressAttribute() + { + return $this->billing_address()->first(); + } + + /** + * Get the shipping address for the order. + */ + public function shipping_address() + { + return $this->addresses()->where('address_type', 'shipping'); + } + + /** + * Get shipping address for the order. + */ + public function getShippingAddressAttribute() + { + return $this->shipping_address()->first(); + } + + /** + * Get the channel record associated with the order. + */ + public function channel() + { + return $this->morphTo(); + } + + /** + * Checks if cart have stockable items + * + * @return boolean + */ + public function haveStockableItems() + { + foreach ($this->items as $item) { + if ($item->getTypeInstance()->isStockable()) + return true; + } + + return false; + } + + /** + * Checks if new shipment is allow or not + */ + public function canShip() + { + if ($this->status == 'fraud') + return false; + + foreach ($this->items as $item) { + if ($item->canShip()) + return true; + } + + return false; + } + + /** + * Checks if new invoice is allow or not + */ + public function canInvoice() + { + if ($this->status == 'fraud') + return false; + + foreach ($this->items as $item) { + if ($item->canInvoice()) + return true; + } + + return false; + } + + /** + * Checks if order can be canceled or not + */ + public function canCancel() + { + if ($this->status == 'fraud') + return false; + + foreach ($this->items as $item) { + if ($item->canCancel()) + return true; + } + + return false; + } + + /** + * Checks if order can be refunded or not + */ + public function canRefund() + { + if ($this->status == 'fraud') + return false; + + foreach ($this->items as $item) { + if ($item->qty_to_refund > 0) + return true; + } + + if ($this->base_grand_total_invoiced - $this->base_grand_total_refunded - $this->refunds()->sum('base_adjustment_fee') > 0) + return true; + + return false; + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/OrderAddress.php b/packages/Webkul/Sales/src/Models/OrderAddress.php new file mode 100755 index 000000000..827e499a9 --- /dev/null +++ b/packages/Webkul/Sales/src/Models/OrderAddress.php @@ -0,0 +1,29 @@ +first_name . ' ' . $this->last_name; + } + + /** + * Get the customer record associated with the order. + */ + public function customer() + { + return $this->belongsTo(Customer::class); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/OrderAddressProxy.php b/packages/Webkul/Sales/src/Models/OrderAddressProxy.php new file mode 100755 index 000000000..5adb02378 --- /dev/null +++ b/packages/Webkul/Sales/src/Models/OrderAddressProxy.php @@ -0,0 +1,10 @@ + 'array', + ]; + + protected $typeInstance; + + /** + * Retrieve type instance + * + * @return AbstractType + */ + public function getTypeInstance() + { + if ($this->typeInstance) + return $this->typeInstance; + + $this->typeInstance = app(config('product_types.' . $this->type . '.class')); + + if ($this->product) + $this->typeInstance->setProduct($this); + + return $this->typeInstance; + } + + /** + * @return bool + */ + public function isStockable() + { + return $this->getTypeInstance()->isStockable(); + } + + /** + * Checks if new shipment is allow or not + */ + public function canShip() + { + if (! $this->isStockable()) + return false; + + if ($this->qty_to_ship > 0) + return true; + + return false; + } + + /** + * Get remaining qty for shipping. + */ + public function getQtyToShipAttribute() + { + if (! $this->isStockable()) + return 0; + + return $this->qty_ordered - $this->qty_shipped - $this->qty_refunded - $this->qty_canceled; + } + + /** + * Checks if new invoice is allow or not + */ + public function canInvoice() + { + if ($this->qty_to_invoice > 0) + return true; + + return false; + } + + /** + * Get remaining qty for invoice. + */ + public function getQtyToInvoiceAttribute() + { + return $this->qty_ordered - $this->qty_invoiced - $this->qty_canceled; + } + + /** + * Checks if new cancel is allow or not + */ + public function canCancel() + { + if ($this->qty_to_cancel > 0) + return true; + + return false; + } + + /** + * Get remaining qty for cancel. + */ + public function getQtyToCancelAttribute() + { + return $this->qty_ordered - $this->qty_canceled - $this->qty_invoiced; + } + + /** + * Get remaining qty for refund. + */ + public function getQtyToRefundAttribute() + { + return $this->qty_invoiced - $this->qty_refunded; + } + + /** + * Get the order record associated with the order item. + */ + public function order() + { + return $this->belongsTo(OrderProxy::modelClass()); + } + + /** + * Get the order record associated with the order item. + */ + public function product() + { + return $this->morphTo(); + } + + /** + * Get the child item record associated with the order item. + */ + public function child() + { + return $this->hasOne(OrderItemProxy::modelClass(), 'parent_id'); + } + + /** + * Get the parent item record associated with the order item. + */ + public function parent() + { + return $this->belongsTo(self::class, 'parent_id'); + } + + /** + * Get the children items. + */ + public function children() + { + return $this->hasMany(self::class, 'parent_id'); + } + + /** + * Get the invoice items record associated with the order item. + */ + public function invoice_items() + { + return $this->hasMany(InvoiceItemProxy::modelClass()); + } + + /** + * Get the shipment items record associated with the order item. + */ + public function shipment_items() + { + return $this->hasMany(ShipmentItemProxy::modelClass()); + } + + /** + * Get the refund items record associated with the order item. + */ + public function refund_items() + { + return $this->hasMany(RefundItemProxy::modelClass()); + } + + /** + * Returns configurable option html + */ + public function downloadable_link_purchased() + { + return $this->hasMany(DownloadableLinkPurchasedProxy::modelClass()); + } + + /** + * @return array + */ + public function toArray() + { + $array = parent::toArray(); + + $array['qty_to_ship'] = $this->qty_to_ship; + + $array['qty_to_invoice'] = $this->qty_to_invoice; + + $array['qty_to_cancel'] = $this->qty_to_cancel; + + $array['qty_to_refund'] = $this->qty_to_refund; + + return $array; + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/OrderItemProxy.php b/packages/Webkul/Sales/src/Models/OrderItemProxy.php new file mode 100755 index 000000000..2a50233ff --- /dev/null +++ b/packages/Webkul/Sales/src/Models/OrderItemProxy.php @@ -0,0 +1,10 @@ +statusLabel[$this->state]) ? $this->statusLabel[$this->state] : ''; + } + + /** + * Get the order that belongs to the Refund. + */ + public function order() + { + return $this->belongsTo(OrderProxy::modelClass()); + } + + /** + * Get the Refund items record associated with the Refund. + */ + public function items() { + return $this->hasMany(RefundItemProxy::modelClass())->whereNull('parent_id'); + } + + /** + * Get the customer record associated with the Refund. + */ + public function customer() + { + return $this->morphTo(); + } + + /** + * Get the channel record associated with the Refund. + */ + public function channel() + { + return $this->morphTo(); + } + + /** + * Get the addresses for the shipment. + */ + public function address() + { + return $this->belongsTo(OrderAddressProxy::modelClass(), 'order_address_id'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/RefundItem.php b/packages/Webkul/Sales/src/Models/RefundItem.php new file mode 100644 index 000000000..f6fd52b33 --- /dev/null +++ b/packages/Webkul/Sales/src/Models/RefundItem.php @@ -0,0 +1,47 @@ + 'array', + ]; + + /** + * Get the Refund record associated with the Refund item. + */ + public function refund() + { + return $this->belongsTo(RefundProxy::modelClass()); + } + + /** + * Get the order item record associated with the Refund item. + */ + public function order_item() + { + return $this->belongsTo(OrderItemProxy::modelClass()); + } + + /** + * Get the Refund record associated with the Refund item. + */ + public function product() + { + return $this->morphTo(); + } + + /** + * Get the child item record associated with the Refund item. + */ + public function child() + { + return $this->hasOne(RefundItemProxy::modelClass(), 'parent_id'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/RefundItemProxy.php b/packages/Webkul/Sales/src/Models/RefundItemProxy.php new file mode 100644 index 000000000..fcfdf495b --- /dev/null +++ b/packages/Webkul/Sales/src/Models/RefundItemProxy.php @@ -0,0 +1,10 @@ +belongsTo(OrderProxy::modelClass()); + } + + /** + * Get the shipment items record associated with the shipment. + */ + public function items() + { + return $this->hasMany(ShipmentItemProxy::modelClass()); + } + + /** + * Get the inventory source associated with the shipment. + */ + public function inventory_source() + { + return $this->belongsTo(InventorySource::class, 'inventory_source_id'); + } + + /** + * Get the customer record associated with the shipment. + */ + public function customer() + { + return $this->morphTo(); + } + + /** + * Get the addresses for the shipment. + */ + public function address() + { + return $this->belongsTo(OrderAddressProxy::modelClass(), 'order_address_id'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/ShipmentItem.php b/packages/Webkul/Sales/src/Models/ShipmentItem.php new file mode 100755 index 000000000..d8b0d1815 --- /dev/null +++ b/packages/Webkul/Sales/src/Models/ShipmentItem.php @@ -0,0 +1,65 @@ + 'array', + ]; + + /** + * Retrieve type instance + * + * @return AbstractType + */ + public function getTypeInstance() + { + return $this->order_item->getTypeInstance(); + } + + /** + * Get the shipment record associated with the shipment item. + */ + public function shipment() + { + return $this->belongsTo(ShipmentProxy::modelClass()); + } + + /** + * Get the order item record associated with the shipment item. + */ + public function order_item() + { + return $this->belongsTo(OrderItemProxy::modelClass()); + } + + /** + * Get the shipment record associated with the shipment item. + */ + public function product() + { + return $this->morphTo(); + } + + /** + * Get the child item record associated with the shipment item. + */ + public function child() + { + return $this->belongsTo(ShipmentItemProxy::modelClass(), 'parent_id'); + } + + /** + * Get order item type + */ + public function getTypeAttribute() + { + return $this->order_item->type; + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/ShipmentItemProxy.php b/packages/Webkul/Sales/src/Models/ShipmentItemProxy.php new file mode 100755 index 000000000..906cf7f08 --- /dev/null +++ b/packages/Webkul/Sales/src/Models/ShipmentItemProxy.php @@ -0,0 +1,10 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/system.php', 'core' + ); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/DownloadableLinkPurchasedRepository.php b/packages/Webkul/Sales/src/Repositories/DownloadableLinkPurchasedRepository.php new file mode 100644 index 000000000..84715fdbe --- /dev/null +++ b/packages/Webkul/Sales/src/Repositories/DownloadableLinkPurchasedRepository.php @@ -0,0 +1,96 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class DownloadableLinkPurchasedRepository extends Repository +{ + + /** + * ProductDownloadableLinkRepository object + * + * @var Object + */ + protected $productDownloadableLinkRepository; + + /** + * Create a new repository instance. + * + * @param Webkul\Product\Repositories\ProductDownloadableLinkRepository $productDownloadableLinkRepository + * @return void + */ + public function __construct( + ProductDownloadableLinkRepository $productDownloadableLinkRepository, + App $app + ) + { + $this->productDownloadableLinkRepository = $productDownloadableLinkRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return Mixed + */ + function model() + { + return DownloadableLinkPurchased::class; + } + + /** + * @param mixed $orderItem + * @return void + */ + public function saveLinks($orderItem) + { + if (stristr($orderItem->type,'downloadable') === false || ! isset($orderItem->additional['links'])) + return; + + foreach ($orderItem->additional['links'] as $linkId) { + if (! $productDownloadableLink = $this->productDownloadableLinkRepository->find($linkId)) + continue; + + $this->create([ + 'name' => $productDownloadableLink->title, + 'product_name' => $orderItem->name, + 'url' => $productDownloadableLink->url, + 'file' => $productDownloadableLink->file, + 'file_name' => $productDownloadableLink->file_name, + 'type' => $productDownloadableLink->type, + 'download_bought' => $productDownloadableLink->downloads * $orderItem->qty_ordered, + 'status' => 'pending', + 'customer_id' => $orderItem->order->customer_id, + 'order_id' => $orderItem->order_id, + 'order_item_id' => $orderItem->id + ]); + } + } + + /** + * @param OrderItem $orderItem + * @param string $status + * @return void + */ + public function updateStatus($orderItem, $status) + { + $purchasedLinks = $this->findByField('order_item_id', $orderItem->id); + + foreach ($purchasedLinks as $purchasedLink) { + $this->update([ + 'status' => $status + ], $purchasedLink->id); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/InvoiceItemRepository.php b/packages/Webkul/Sales/src/Repositories/InvoiceItemRepository.php new file mode 100755 index 000000000..3f4977614 --- /dev/null +++ b/packages/Webkul/Sales/src/Repositories/InvoiceItemRepository.php @@ -0,0 +1,70 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class InvoiceItemRepository extends Repository +{ + /** + * Specify Model class name + * + * @return Mixed + */ + + function model() + { + return InvoiceItem::class; + } + + /** + * @param array $data + * @return void + */ + public function updateProductInventory($data) + { + if (! $data['product']) + return; + + $orderedInventory = $data['product']->ordered_inventories() + ->where('channel_id', $data['invoice']->order->channel->id) + ->first(); + + if ($orderedInventory) { + if (($orderedQty = $orderedInventory->qty - $data['qty']) < 0) + $orderedQty = 0; + + $orderedInventory->update(['qty' => $orderedQty]); + } + + $inventories = $data['product']->inventories() + ->where('vendor_id', $data['vendor_id']) + ->whereIn('inventory_source_id', $data['invoice']->order->channel->inventory_sources()->pluck('id')) + ->orderBy('qty', 'desc') + ->get(); + + foreach ($inventories as $key => $inventory) { + if ($inventory->qty >= $data['qty']) { + $inventory->update(['qty' => $inventory->qty - $data['qty']]); + + break; + } else { + $data['qty'] -= $inventory->qty; + + $inventory->update(['qty' => 0]); + } + } + + Event::dispatch('catalog.product.update.after', $data['product']); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php new file mode 100755 index 000000000..40f78fb44 --- /dev/null +++ b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php @@ -0,0 +1,255 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class InvoiceRepository extends Repository +{ + /** + * OrderRepository object + * + * @var Object + */ + protected $orderRepository; + + /** + * OrderItemRepository object + * + * @var Object + */ + protected $orderItemRepository; + + /** + * InvoiceItemRepository object + * + * @var Object + */ + protected $invoiceItemRepository; + + /** + * DownloadableLinkPurchasedRepository object + * + * @var Object + */ + protected $downloadableLinkPurchasedRepository; + + /** + * Create a new repository instance. + * + * @param \Webkul\Sales\Repositories\OrderRepository $orderRepository + * @param \Webkul\Sales\Repositories\OrderItemRepository $orderItemRepository + * @param \Webkul\Sales\Repositories\InvoiceItemRepository $invoiceItemRepository + * @param \Webkul\Sales\Repositories\DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository + * @param \Illuminate\Container\Container $app + */ + public function __construct( + OrderRepository $orderRepository, + OrderItemRepository $orderItemRepository, + InvoiceItemRepository $invoiceItemRepository, + DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository, + App $app + ) + { + $this->orderRepository = $orderRepository; + + $this->orderItemRepository = $orderItemRepository; + + $this->invoiceItemRepository = $invoiceItemRepository; + + $this->invoiceItemRepository = $invoiceItemRepository; + + $this->downloadableLinkPurchasedRepository = $downloadableLinkPurchasedRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return Mixed + */ + + function model() + { + return Invoice::class; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + DB::beginTransaction(); + + try { + Event::dispatch('sales.invoice.save.before', $data); + + $order = $this->orderRepository->find($data['order_id']); + + $totalQty = array_sum($data['invoice']['items']); + + $invoice = $this->model->create([ + 'order_id' => $order->id, + 'total_qty' => $totalQty, + 'state' => 'paid', + 'base_currency_code' => $order->base_currency_code, + 'channel_currency_code' => $order->channel_currency_code, + 'order_currency_code' => $order->order_currency_code, + 'order_address_id' => $order->billing_address->id + ]); + + foreach ($data['invoice']['items'] as $itemId => $qty) { + if (! $qty) continue; + + $orderItem = $this->orderItemRepository->find($itemId); + + if ($qty > $orderItem->qty_to_invoice) + $qty = $orderItem->qty_to_invoice; + + $invoiceItem = $this->invoiceItemRepository->create([ + 'invoice_id' => $invoice->id, + 'order_item_id' => $orderItem->id, + 'name' => $orderItem->name, + 'sku' => $orderItem->sku, + 'qty' => $qty, + 'price' => $orderItem->price, + 'base_price' => $orderItem->base_price, + 'total' => $orderItem->price * $qty, + 'base_total' => $orderItem->base_price * $qty, + 'tax_amount' => ( ($orderItem->tax_amount / $orderItem->qty_ordered) * $qty ), + 'base_tax_amount' => ( ($orderItem->base_tax_amount / $orderItem->qty_ordered) * $qty ), + 'discount_amount' => ( ($orderItem->discount_amount / $orderItem->qty_ordered) * $qty ), + 'base_discount_amount' => ( ($orderItem->base_discount_amount / $orderItem->qty_ordered) * $qty ), + 'product_id' => $orderItem->product_id, + 'product_type' => $orderItem->product_type, + 'additional' => $orderItem->additional + ]); + + if ($orderItem->getTypeInstance()->isComposite()) { + foreach ($orderItem->children as $childOrderItem) { + $finalQty = $childOrderItem->qty_ordered + ? ($childOrderItem->qty_ordered / $orderItem->qty_ordered) * $qty + : $orderItem->qty_ordered; + + $this->invoiceItemRepository->create([ + 'invoice_id' => $invoice->id, + 'order_item_id' => $childOrderItem->id, + 'parent_id' => $invoiceItem->id, + 'name' => $childOrderItem->name, + 'sku' => $childOrderItem->sku, + 'qty' => $finalQty, + 'price' => $childOrderItem->price, + 'base_price' => $childOrderItem->base_price, + 'total' => $childOrderItem->price * $finalQty, + 'base_total' => $childOrderItem->base_price * $finalQty, + 'tax_amount' => 0, + 'base_tax_amount' => 0, + 'discount_amount' => 0, + 'base_discount_amount' => 0, + 'product_id' => $childOrderItem->product_id, + 'product_type' => $childOrderItem->product_type, + 'additional' => $childOrderItem->additional + ]); + + if ($childOrderItem->product && ! $childOrderItem->getTypeInstance()->isStockable() && $childOrderItem->getTypeInstance()->showQuantityBox()) { + $this->invoiceItemRepository->updateProductInventory([ + 'invoice' => $invoice, + 'product' => $childOrderItem->product, + 'qty' => $finalQty, + 'vendor_id' => isset($data['vendor_id']) ? $data['vendor_id'] : 0 + ]); + } + + $this->orderItemRepository->collectTotals($childOrderItem); + } + } elseif ($orderItem->product && ! $orderItem->getTypeInstance()->isStockable() && $orderItem->getTypeInstance()->showQuantityBox()) { + $this->invoiceItemRepository->updateProductInventory([ + 'invoice' => $invoice, + 'product' => $orderItem->product, + 'qty' => $qty, + 'vendor_id' => isset($data['vendor_id']) ? $data['vendor_id'] : 0 + ]); + } + + $this->orderItemRepository->collectTotals($orderItem); + + $this->downloadableLinkPurchasedRepository->updateStatus($orderItem, 'available'); + } + + $this->collectTotals($invoice); + + $this->orderRepository->collectTotals($order); + + $this->orderRepository->updateOrderStatus($order); + + Event::dispatch('sales.invoice.save.after', $invoice); + } catch (\Exception $e) { + DB::rollBack(); + + throw $e; + } + + DB::commit(); + + return $invoice; + } + + /** + * @param mixed $invoice + * @return mixed + */ + public function collectTotals($invoice) + { + $invoice->sub_total = $invoice->base_sub_total = 0; + $invoice->tax_amount = $invoice->base_tax_amount = 0; + $invoice->discount_amount = $invoice->base_discount_amount = 0; + + foreach ($invoice->items as $invoiceItem) { + $invoice->sub_total += $invoiceItem->total; + $invoice->base_sub_total += $invoiceItem->base_total; + + $invoice->tax_amount += $invoiceItem->tax_amount; + $invoice->base_tax_amount += $invoiceItem->base_tax_amount; + + $invoice->discount_amount += $invoiceItem->discount_amount; + $invoice->base_discount_amount += $invoiceItem->base_discount_amount; + } + + $invoice->shipping_amount = $invoice->order->shipping_amount; + $invoice->base_shipping_amount = $invoice->order->base_shipping_amount; + + $invoice->discount_amount += $invoice->order->shipping_discount_amount; + $invoice->base_discount_amount += $invoice->order->base_shipping_discount_amount; + + if ($invoice->order->shipping_amount) { + foreach ($invoice->order->invoices as $prevInvoice) { + if ((float) $prevInvoice->shipping_amount) + $invoice->shipping_amount = $invoice->base_shipping_amount = 0; + + if ($prevInvoice->id != $invoice->id) { + $invoice->discount_amount -= $invoice->order->shipping_discount_amount; + $invoice->base_discount_amount -= $invoice->order->base_shipping_discount_amount; + } + } + } + + $invoice->grand_total = $invoice->sub_total + $invoice->tax_amount + $invoice->shipping_amount - $invoice->discount_amount; + $invoice->base_grand_total = $invoice->base_sub_total + $invoice->base_tax_amount + $invoice->base_shipping_amount - $invoice->base_discount_amount; + + $invoice->save(); + + return $invoice; + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/OrderAddressRepository.php b/packages/Webkul/Sales/src/Repositories/OrderAddressRepository.php new file mode 100755 index 000000000..2cfab190f --- /dev/null +++ b/packages/Webkul/Sales/src/Repositories/OrderAddressRepository.php @@ -0,0 +1,28 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class OrderAddressRepository extends Repository +{ + /** + * Specify Model class name + * + * @return Mixed + */ + + function model() + { + return OrderAddress::class; + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/OrderItemRepository.php b/packages/Webkul/Sales/src/Repositories/OrderItemRepository.php new file mode 100755 index 000000000..72da2f48d --- /dev/null +++ b/packages/Webkul/Sales/src/Repositories/OrderItemRepository.php @@ -0,0 +1,164 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class OrderItemRepository extends Repository +{ + /** + * Specify Model class name + * + * @return Mixed + */ + function model() + { + return OrderItem::class; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + if (isset($data['product']) && $data['product']) { + $data['product_id'] = $data['product']->id; + $data['product_type'] = get_class($data['product']); + + unset($data['product']); + } + + return parent::create($data); + } + + /** + * @param mixed $orderItem + * @return mixed + */ + public function collectTotals($orderItem) + { + $qtyShipped = $qtyInvoiced = $qtyRefunded = 0; + + $totalInvoiced = $baseTotalInvoiced = 0; + $taxInvoiced = $baseTaxInvoiced = 0; + + $totalRefunded = $baseTotalRefunded = 0; + $taxRefunded = $baseTaxRefunded = 0; + + foreach ($orderItem->invoice_items as $invoiceItem) { + $qtyInvoiced += $invoiceItem->qty; + + $totalInvoiced += $invoiceItem->total; + $baseTotalInvoiced += $invoiceItem->base_total; + + $taxInvoiced += $invoiceItem->tax_amount; + $baseTaxInvoiced += $invoiceItem->base_tax_amount; + } + + foreach ($orderItem->shipment_items as $shipmentItem) { + $qtyShipped += $shipmentItem->qty; + } + + foreach ($orderItem->refund_items as $refundItem) { + $qtyRefunded += $refundItem->qty; + + $totalRefunded += $refundItem->total; + $baseTotalRefunded += $refundItem->base_total; + + $taxRefunded += $refundItem->tax_amount; + $baseTaxRefunded += $refundItem->base_tax_amount; + } + + $orderItem->qty_shipped = $qtyShipped; + $orderItem->qty_invoiced = $qtyInvoiced; + $orderItem->qty_refunded = $qtyRefunded; + + $orderItem->total_invoiced = $totalInvoiced; + $orderItem->base_total_invoiced = $baseTotalInvoiced; + + $orderItem->tax_amount_invoiced = $taxInvoiced; + $orderItem->base_tax_amount_invoiced = $baseTaxInvoiced; + + $orderItem->amount_refunded = $totalRefunded; + $orderItem->base_amount_refunded = $baseTotalRefunded; + + $orderItem->tax_amount_refunded = $taxRefunded; + $orderItem->base_tax_amount_refunded = $baseTaxRefunded; + + $orderItem->save(); + + return $orderItem; + } + + /** + * @param mixed $orderItem + * @return void + */ + public function manageInventory($orderItem) + { + $orderItems = []; + + if ($orderItem->getTypeInstance()->isComposite()) { + foreach ($orderItem->children as $child) { + $orderItems[] = $child; + } + } else { + $orderItems[] = $orderItem; + } + + foreach ($orderItems as $item) { + if (! $item->product) + continue; + + $orderedInventory = $item->product->ordered_inventories() + ->where('channel_id', $orderItem->order->channel->id) + ->first(); + + $qty = $item->qty_ordered ?: $item->parent->qty_ordered; + + if ($orderedInventory) { + $orderedInventory->update([ + 'qty' => $orderedInventory->qty + $qty + ]); + } else { + $item->product->ordered_inventories()->create([ + 'qty' => $qty, + 'product_id' => $item->product_id, + 'channel_id' => $orderItem->order->channel->id, + ]); + } + } + } + + /** + * Returns qty to product inventory after order cancelation + * + * @param OrderItem $orderItem + * @return void + */ + public function returnQtyToProductInventory($orderItem) + { + $orderedInventory = $orderItem->product->ordered_inventories() + ->where('channel_id', $orderItem->order->channel->id) + ->first(); + + if (! $orderedInventory) + return; + + if (($qty = $orderedInventory->qty - ($orderItem->qty_ordered ? $orderItem->qty_to_cancel : $orderItem->parent->qty_ordered)) < 0) + $qty = 0; + + $orderedInventory->update(['qty' => $qty]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/OrderRepository.php b/packages/Webkul/Sales/src/Repositories/OrderRepository.php new file mode 100755 index 000000000..b5f6e75fa --- /dev/null +++ b/packages/Webkul/Sales/src/Repositories/OrderRepository.php @@ -0,0 +1,373 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class OrderRepository extends Repository +{ + /** + * OrderItemRepository object + * + * @var Object + */ + protected $orderItemRepository; + + /** + * DownloadableLinkPurchasedRepository object + * + * @var Object + */ + protected $downloadableLinkPurchasedRepository; + + /** + * Create a new repository instance. + * + * @param Webkul\Sales\Repositories\OrderItemRepository $orderItemRepository + * @param Webkul\Sales\Repositories\DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository + * + * @return void + */ + public function __construct( + OrderItemRepository $orderItemRepository, + DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository, + App $app + ) { + $this->orderItemRepository = $orderItemRepository; + + $this->downloadableLinkPurchasedRepository = $downloadableLinkPurchasedRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return Mixed + */ + + public function model() + { + return Order::class; + } + + /** + * @param array $data + * + * @return mixed + */ + public function create(array $data) + { + DB::beginTransaction(); + + try { + Event::dispatch('checkout.order.save.before', $data); + + if (isset($data['customer']) && $data['customer']) { + $data['customer_id'] = $data['customer']->id; + $data['customer_type'] = get_class($data['customer']); + } else { + unset($data['customer']); + } + + if (isset($data['channel']) && $data['channel']) { + $data['channel_id'] = $data['channel']->id; + $data['channel_type'] = get_class($data['channel']); + $data['channel_name'] = $data['channel']->name; + } else { + unset($data['channel']); + } + + $data['status'] = 'pending'; + + $order = $this->model->create(array_merge($data, ['increment_id' => $this->generateIncrementId()])); + + $order->payment()->create($data['payment']); + + if (isset($data['shipping_address'])) { + $order->addresses()->create($data['shipping_address']); + } + + $order->addresses()->create($data['billing_address']); + + foreach ($data['items'] as $item) { + Event::dispatch('checkout.order.orderitem.save.before', $data); + + $orderItem = $this->orderItemRepository->create(array_merge($item, ['order_id' => $order->id])); + + if (isset($item['children']) && $item['children']) { + foreach ($item['children'] as $child) { + $this->orderItemRepository->create(array_merge($child, ['order_id' => $order->id, 'parent_id' => $orderItem->id])); + } + } + + $this->orderItemRepository->manageInventory($orderItem); + + $this->downloadableLinkPurchasedRepository->saveLinks($orderItem, 'available'); + + Event::dispatch('checkout.order.orderitem.save.after', $data); + } + + Event::dispatch('checkout.order.save.after', $order); + } catch (\Exception $e) { + DB::rollBack(); + + throw $e; + } + + DB::commit(); + + return $order; + } + + /** + * @param int $orderId + * + * @return mixed + */ + public function cancel($orderId) + { + $order = $this->findOrFail($orderId); + + if (! $order->canCancel()) { + return false; + } + + Event::dispatch('sales.order.cancel.before', $order); + + foreach ($order->items as $item) { + if (! $item->qty_to_cancel) { + continue; + } + + $orderItems = []; + + if ($item->getTypeInstance()->isComposite()) { + foreach ($item->children as $child) { + $orderItems[] = $child; + } + } else { + $orderItems[] = $item; + } + + foreach ($orderItems as $orderItem) { + if ($orderItem->product) { + $this->orderItemRepository->returnQtyToProductInventory($orderItem); + } + + if ($orderItem->qty_ordered) { + $orderItem->qty_canceled += $orderItem->qty_to_cancel; + $orderItem->save(); + + if ($orderItem->parent && $orderItem->parent->qty_ordered) { + $orderItem->parent->qty_canceled += $orderItem->parent->qty_to_cancel; + $orderItem->parent->save(); + } + } else { + $orderItem->parent->qty_canceled += $orderItem->parent->qty_to_cancel; + $orderItem->parent->save(); + } + } + + $this->downloadableLinkPurchasedRepository->updateStatus($item, 'expired'); + } + + $this->updateOrderStatus($order); + + Event::dispatch('sales.order.cancel.after', $order); + + return true; + } + + /** + * @return integer + */ + public function generateIncrementId() + { + $config = new CoreConfig(); + + foreach ([ 'Prefix' => 'prefix', + 'Length' => 'length', + 'Suffix' => 'suffix', ] as + $varSuffix => $confKey) + { + $var = "invoiceNumber{$varSuffix}"; + $$var = $config->where('code', '=', "sales.orderSettings.order_number.order_number_{$confKey}")->first() ?: false; + } + + $lastOrder = $this->model->orderBy('id', 'desc')->limit(1)->first(); + $lastId = $lastOrder ? $lastOrder->id : 0; + + if ($invoiceNumberLength && ($invoiceNumberPrefix || $invoiceNumberSuffix)) { + $invoiceNumber = ($invoiceNumberPrefix->value) . sprintf("%0{$invoiceNumberLength->value}d", 0) . ($lastId + 1) . ($invoiceNumberSuffix->value); + } else { + $invoiceNumber = $lastId + 1; + } + + return $invoiceNumber; + } + + /** + * @param mixed $order + * + * @return void + */ + public function isInCompletedState($order) + { + $totalQtyOrdered = $totalQtyInvoiced = $totalQtyShipped = $totalQtyRefunded = $totalQtyCanceled = 0; + + foreach ($order->items()->get() as $item) { + $totalQtyOrdered += $item->qty_ordered; + $totalQtyInvoiced += $item->qty_invoiced; + + if (! $item->isStockable()) { + $totalQtyShipped += $item->qty_ordered; + } else { + $totalQtyShipped += $item->qty_shipped; + } + + $totalQtyRefunded += $item->qty_refunded; + $totalQtyCanceled += $item->qty_canceled; + } + + if ($totalQtyOrdered != ($totalQtyRefunded + $totalQtyCanceled) + && $totalQtyOrdered == $totalQtyInvoiced + $totalQtyCanceled + && $totalQtyOrdered == $totalQtyShipped + $totalQtyRefunded + $totalQtyCanceled) { + return true; + } + + return false; + } + + /** + * @param mixed $order + * + * @return void + */ + public function isInCanceledState($order) + { + $totalQtyOrdered = $totalQtyCanceled = 0; + + foreach ($order->items()->get() as $item) { + $totalQtyOrdered += $item->qty_ordered; + $totalQtyCanceled += $item->qty_canceled; + } + + return $totalQtyOrdered === $totalQtyCanceled; + } + + /** + * @param mixed $order + * + * @return void + */ + public function isInClosedState($order) + { + $totalQtyOrdered = $totalQtyRefunded = $totalQtyCanceled = 0; + + foreach ($order->items()->get() as $item) { + $totalQtyOrdered += $item->qty_ordered; + $totalQtyRefunded += $item->qty_refunded; + $totalQtyCanceled += $item->qty_canceled; + } + + return $totalQtyOrdered === $totalQtyRefunded + $totalQtyCanceled; + } + + /** + * @param mixed $order + * + * @return void + */ + public function updateOrderStatus($order) + { + $status = 'processing'; + + if ($this->isInCompletedState($order)) { + $status = 'completed'; + } + + if ($this->isInCanceledState($order)) { + $status = 'canceled'; + } elseif ($this->isInClosedState($order)) { + $status = 'closed'; + } + + $order->status = $status; + $order->save(); + } + + /** + * @param mixed $order + * + * @return mixed + */ + public function collectTotals($order) + { + //Order invoice total + $order->sub_total_invoiced = $order->base_sub_total_invoiced = 0; + $order->shipping_invoiced = $order->base_shipping_invoiced = 0; + $order->tax_amount_invoiced = $order->base_tax_amount_invoiced = 0; + $order->discount_invoiced = $order->base_discount_invoiced = 0; + + foreach ($order->invoices as $invoice) { + $order->sub_total_invoiced += $invoice->sub_total; + $order->base_sub_total_invoiced += $invoice->base_sub_total; + + $order->shipping_invoiced += $invoice->shipping_amount; + $order->base_shipping_invoiced += $invoice->base_shipping_amount; + + $order->tax_amount_invoiced += $invoice->tax_amount; + $order->base_tax_amount_invoiced += $invoice->base_tax_amount; + + $order->discount_invoiced += $invoice->discount_amount; + $order->base_discount_invoiced += $invoice->base_discount_amount; + } + + $order->grand_total_invoiced = $order->sub_total_invoiced + $order->shipping_invoiced + $order->tax_amount_invoiced - $order->discount_invoiced; + $order->base_grand_total_invoiced = $order->base_sub_total_invoiced + $order->base_shipping_invoiced + $order->base_tax_amount_invoiced - $order->base_discount_invoiced; + + //Order refund total + $order->sub_total_refunded = $order->base_sub_total_refunded = 0; + $order->shipping_refunded = $order->base_shipping_refunded = 0; + $order->tax_amount_refunded = $order->base_tax_amount_refunded = 0; + $order->discount_refunded = $order->base_discount_refunded = 0; + $order->grand_total_refunded = $order->base_grand_total_refunded = 0; + + foreach ($order->refunds as $refund) { + $order->sub_total_refunded += $refund->sub_total; + $order->base_sub_total_refunded += $refund->base_sub_total; + + $order->shipping_refunded += $refund->shipping_amount; + $order->base_shipping_refunded += $refund->base_shipping_amount; + + $order->tax_amount_refunded += $refund->tax_amount; + $order->base_tax_amount_refunded += $refund->base_tax_amount; + + $order->discount_refunded += $refund->discount_amount; + $order->base_discount_refunded += $refund->base_discount_amount; + + $order->grand_total_refunded += $refund->adjustment_refund - $refund->adjustment_fee; + $order->base_grand_total_refunded += $refund->base_adjustment_refund - $refund->base_adjustment_fee; + } + + $order->grand_total_refunded += $order->sub_total_refunded + $order->shipping_refunded + $order->tax_amount_refunded - $order->discount_refunded; + $order->base_grand_total_refunded += $order->base_sub_total_refunded + $order->base_shipping_refunded + $order->base_tax_amount_refunded - $order->base_discount_refunded; + + $order->save(); + + return $order; + } +} diff --git a/packages/Webkul/Sales/src/Repositories/RefundItemRepository.php b/packages/Webkul/Sales/src/Repositories/RefundItemRepository.php new file mode 100644 index 000000000..74d90fd34 --- /dev/null +++ b/packages/Webkul/Sales/src/Repositories/RefundItemRepository.php @@ -0,0 +1,101 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ + +class RefundItemRepository extends Repository +{ + /** + * Specify Model class name + * + * @return Mixed + */ + function model() + { + return RefundItem::class; + } + + /** + * Returns qty to product inventory after order refund + * + * @param OrdreItem $orderItem + * @param integer $quantity + * @return void + */ + public function returnQtyToProductInventory($orderItem, $quantity) + { + if (! $product = $orderItem->product) + return; + + if ($orderItem->qty_shipped && $quantity > $orderItem->qty_ordered - $orderItem->qty_shipped) { + $nonShippedQty = $orderItem->qty_ordered - $orderItem->qty_shipped; + + if (($totalShippedQtyToRefund = $quantity - $nonShippedQty) > 0) { + $shipmentItems = $orderItem->parent ? $orderItem->parent->shipment_items : $orderItem->shipment_items; + + foreach ($shipmentItems as $shipmentItem) { + if (! $totalShippedQtyToRefund) + break; + + if (! $shipmentItem->shipment->inventory_source_id) + continue; + + + if ($orderItem->parent) { + $shippedQty = $orderItem->qty_ordered + ? ($orderItem->qty_ordered / $orderItem->parent->qty_ordered) * $shipmentItem->qty + : $orderItem->parent->qty_ordered; + } else { + $shippedQty = $shipmentItem->qty; + } + + $shippedQtyToRefund = $totalShippedQtyToRefund > $shippedQty ? $shippedQty : $totalShippedQtyToRefund; + + $totalShippedQtyToRefund = $totalShippedQtyToRefund > $shippedQty ? $totalShippedQtyToRefund - $shippedQty : 0; + + $inventory = $product->inventories() + // ->where('vendor_id', $data['vendor_id']) + ->where('inventory_source_id', $shipmentItem->shipment->inventory_source_id) + ->first(); + + $inventory->update(['qty' => $inventory->qty + $shippedQtyToRefund]); + } + + $quantity -= $totalShippedQtyToRefund; + } + } elseif ($orderItem->getTypeInstance()->showQuantityBox()) { + $inventory = $orderItem->product->inventories() + // ->where('vendor_id', $data['vendor_id']) + ->whereIn('inventory_source_id', $orderItem->order->channel->inventory_sources()->pluck('id')) + ->orderBy('qty', 'desc') + ->first(); + + if ($inventory) + $inventory->update(['qty' => $inventory->qty + $quantity]); + } + + if ($quantity) { + $orderedInventory = $product->ordered_inventories() + ->where('channel_id', $orderItem->order->channel->id) + ->first(); + + if (! $orderedInventory) + return; + + if (($qty = $orderedInventory->qty - $quantity) < 0) + $qty = 0; + + $orderedInventory->update(['qty' => $qty]); + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/RefundRepository.php b/packages/Webkul/Sales/src/Repositories/RefundRepository.php new file mode 100644 index 000000000..c309010b8 --- /dev/null +++ b/packages/Webkul/Sales/src/Repositories/RefundRepository.php @@ -0,0 +1,282 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class RefundRepository extends Repository +{ + /** + * OrderRepository object + * + * @var Object + */ + protected $orderRepository; + + /** + * OrderItemRepository object + * + * @var Object + */ + protected $orderItemRepository; + + /** + * RefundItemRepository object + * + * @var Object + */ + protected $refundItemRepository; + + /** + * DownloadableLinkPurchasedRepository object + * + * @var Object + */ + protected $downloadableLinkPurchasedRepository; + + /** + * Create a new repository instance. + * + * @param \Webkul\Sales\Repositories\OrderRepository $orderRepository + * @param \Webkul\Sales\Repositories\OrderItemRepository $orderItemRepository + * @param \Webkul\Sales\Repositories\RefundItemRepository $refundItemRepository + * @param \Webkul\Sales\Repositories\DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository + * @param \Illuminate\Container\Container $app + */ + public function __construct( + OrderRepository $orderRepository, + OrderItemRepository $orderItemRepository, + RefundItemRepository $refundItemRepository, + DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository, + App $app + ) + { + $this->orderRepository = $orderRepository; + + $this->orderItemRepository = $orderItemRepository; + + $this->refundItemRepository = $refundItemRepository; + + $this->downloadableLinkPurchasedRepository = $downloadableLinkPurchasedRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return Mixed + */ + function model() + { + return Refund::class; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + DB::beginTransaction(); + + try { + Event::dispatch('sales.refund.save.before', $data); + + $order = $this->orderRepository->find($data['order_id']); + + $totalQty = array_sum($data['refund']['items']); + + $refund = parent::create([ + 'order_id' => $order->id, + 'total_qty' => $totalQty, + 'state' => 'refunded', + 'base_currency_code' => $order->base_currency_code, + 'channel_currency_code' => $order->channel_currency_code, + 'order_currency_code' => $order->order_currency_code, + 'adjustment_refund' => core()->convertPrice($data['refund']['adjustment_refund'], $order->order_currency_code), + 'base_adjustment_refund' => $data['refund']['adjustment_refund'], + 'adjustment_fee' => core()->convertPrice($data['refund']['adjustment_fee'], $order->order_currency_code), + 'base_adjustment_fee' => $data['refund']['adjustment_fee'], + 'shipping_amount' => core()->convertPrice($data['refund']['shipping'], $order->order_currency_code), + 'base_shipping_amount' => $data['refund']['shipping'] + ]); + + foreach ($data['refund']['items'] as $itemId => $qty) { + if (! $qty) + continue; + + $orderItem = $this->orderItemRepository->find($itemId); + + if ($qty > $orderItem->qty_to_refund) + $qty = $orderItem->qty_to_refund; + + $refundItem = $this->refundItemRepository->create([ + 'refund_id' => $refund->id, + 'order_item_id' => $orderItem->id, + 'name' => $orderItem->name, + 'sku' => $orderItem->sku, + 'qty' => $qty, + 'price' => $orderItem->price, + 'base_price' => $orderItem->base_price, + 'total' => $orderItem->price * $qty, + 'base_total' => $orderItem->base_price * $qty, + 'tax_amount' => ( ($orderItem->tax_amount / $orderItem->qty_ordered) * $qty ), + 'base_tax_amount' => ( ($orderItem->base_tax_amount / $orderItem->qty_ordered) * $qty ), + 'discount_amount' => ( ($orderItem->discount_amount / $orderItem->qty_ordered) * $qty ), + 'base_discount_amount' => ( ($orderItem->base_discount_amount / $orderItem->qty_ordered) * $qty ), + 'product_id' => $orderItem->product_id, + 'product_type' => $orderItem->product_type, + 'additional' => $orderItem->additional + ]); + + if ($orderItem->getTypeInstance()->isComposite()) { + foreach ($orderItem->children as $childOrderItem) { + $finalQty = $childOrderItem->qty_ordered + ? ($childOrderItem->qty_ordered / $orderItem->qty_ordered) * $qty + : $orderItem->qty_ordered; + + $refundItem->child = $this->refundItemRepository->create([ + 'refund_id' => $refund->id, + 'order_item_id' => $childOrderItem->id, + 'parent_id' => $refundItem->id, + 'name' => $childOrderItem->name, + 'sku' => $childOrderItem->sku, + 'qty' => $finalQty, + 'price' => $childOrderItem->price, + 'base_price' => $childOrderItem->base_price, + 'total' => $childOrderItem->price * $finalQty, + 'base_total' => $childOrderItem->base_price * $finalQty, + 'tax_amount' => 0, + 'base_tax_amount' => 0, + 'discount_amount' => 0, + 'base_discount_amount' => 0, + 'product_id' => $childOrderItem->product_id, + 'product_type' => $childOrderItem->product_type, + 'additional' => $childOrderItem->additional + ]); + + if ($childOrderItem->getTypeInstance()->isStockable() || $childOrderItem->getTypeInstance()->showQuantityBox()) + $this->refundItemRepository->returnQtyToProductInventory($childOrderItem, $finalQty); + + $this->orderItemRepository->collectTotals($childOrderItem); + } + + } else { + if ($orderItem->getTypeInstance()->isStockable() || $orderItem->getTypeInstance()->showQuantityBox()) + $this->refundItemRepository->returnQtyToProductInventory($orderItem, $qty); + } + + $this->orderItemRepository->collectTotals($orderItem); + + if ($orderItem->qty_ordered == $orderItem->qty_refunded + $orderItem->qty_canceled) + $this->downloadableLinkPurchasedRepository->updateStatus($orderItem, 'expired'); + } + + $this->collectTotals($refund); + + $this->orderRepository->collectTotals($order); + + $this->orderRepository->updateOrderStatus($order); + + Event::dispatch('sales.refund.save.after', $refund); + } catch (\Exception $e) { + DB::rollBack(); + + throw $e; + } + + DB::commit(); + + return $refund; + } + + /** + * @param Refund $refund + * @return mixed + */ + public function collectTotals($refund) + { + $refund->sub_total = $refund->base_sub_total = 0; + $refund->tax_amount = $refund->base_tax_amount = 0; + $refund->discount_amount = $refund->base_discount_amount = 0; + + foreach ($refund->items as $refundItem) { + $refund->sub_total += $refundItem->total; + $refund->base_sub_total += $refundItem->base_total; + + $refund->tax_amount += $refundItem->tax_amount; + $refund->base_tax_amount += $refundItem->base_tax_amount; + + $refund->discount_amount += $refundItem->discount_amount; + $refund->base_discount_amount += $refundItem->base_discount_amount; + } + + $refund->grand_total = $refund->sub_total + $refund->tax_amount + $refund->shipping_amount + $refund->adjustment_refund - $refund->adjustment_fee - $refund->discount_amount; + $refund->base_grand_total = $refund->base_sub_total + $refund->base_tax_amount + $refund->base_shipping_amount + $refund->base_adjustment_refund - $refund->base_adjustment_fee - $refund->base_discount_amount; + + $refund->save(); + + return $refund; + } + + /** + * @param array $data + * @param integer $orderId + * @return array + */ + public function getOrderItemsRefundSummary($data, $orderId) + { + $order = $this->orderRepository->find($orderId); + + $summary = [ + 'subtotal' => ['price' => 0], + 'discount' => ['price' => 0], + 'tax' => ['price' => 0], + 'shipping' => ['price' => 0], + 'grand_total' => ['price' => 0] + ]; + + foreach ($data as $orderItemId => $qty) { + if (! $qty) + continue; + + $orderItem = $this->orderItemRepository->find($orderItemId); + + if ($qty > $orderItem->qty_to_refund) + return false; + + $summary['subtotal']['price'] += $orderItem->base_price * $qty; + + $summary['discount']['price'] += ($orderItem->base_discount_amount / $orderItem->qty_ordered) * $qty; + + $summary['tax']['price'] += ($orderItem->tax_amount / $orderItem->qty_ordered) * $qty; + } + + $summary['shipping']['price'] += $order->base_shipping_invoiced - $order->base_shipping_refunded; + + $summary['grand_total']['price'] += $summary['subtotal']['price'] + $summary['tax']['price'] + $summary['shipping']['price'] - $summary['discount']['price']; + + $summary['subtotal']['formated_price'] = core()->formatBasePrice($summary['subtotal']['price']); + + $summary['discount']['formated_price'] = core()->formatBasePrice($summary['discount']['price']); + + $summary['tax']['formated_price'] = core()->formatBasePrice($summary['tax']['price']); + + $summary['shipping']['formated_price'] = core()->formatBasePrice($summary['shipping']['price']); + + $summary['grand_total']['formated_price'] = core()->formatBasePrice($summary['grand_total']['price']); + + return $summary; + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php b/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php new file mode 100644 index 000000000..d7dc58429 --- /dev/null +++ b/packages/Webkul/Sales/src/Repositories/ShipmentItemRepository.php @@ -0,0 +1,63 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ShipmentItemRepository extends Repository +{ + /** + * Specify Model class name + * + * @return Mixed + */ + function model() + { + return ShipmentItem::class; + } + + /** + * @param array $data + * @return void + */ + public function updateProductInventory($data) + { + if (! $data['product']) + return; + + $orderedInventory = $data['product']->ordered_inventories() + ->where('channel_id', $data['shipment']->order->channel->id) + ->first(); + + if ($orderedInventory) { + if (($orderedQty = $orderedInventory->qty - $data['qty']) < 0) + $orderedQty = 0; + + $orderedInventory->update(['qty' => $orderedQty]); + } + + $inventory = $data['product']->inventories() + ->where('vendor_id', $data['vendor_id']) + ->where('inventory_source_id', $data['shipment']->inventory_source_id) + ->first(); + + if (! $inventory) + return; + + if (($qty = $inventory->qty - $data['qty']) < 0) + $qty = 0; + + $inventory->update(['qty' => $qty]); + + Event::dispatch('catalog.product.update.after', $data['product']); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php b/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php new file mode 100755 index 000000000..9b77f3288 --- /dev/null +++ b/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php @@ -0,0 +1,177 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ShipmentRepository extends Repository +{ + /** + * OrderRepository object + * + * @var Object + */ + protected $orderRepository; + + /** + * OrderItemRepository object + * + * @var Object + */ + protected $orderItemRepository; + + /** + * ShipmentItemRepository object + * + * @var Object + */ + protected $shipmentItemRepository; + + /** + * Create a new repository instance. + * + * @param Webkul\Sales\Repositories\OrderRepository $orderRepository + * @param Webkul\Sales\Repositories\OrderItemRepository $orderItemRepository + * @param Webkul\Sales\Repositories\ShipmentItemRepository $orderItemRepository + * @return void + */ + public function __construct( + OrderRepository $orderRepository, + OrderItemRepository $orderItemRepository, + ShipmentItemRepository $shipmentItemRepository, + App $app + ) + { + $this->orderRepository = $orderRepository; + + $this->orderItemRepository = $orderItemRepository; + + $this->shipmentItemRepository = $shipmentItemRepository; + + parent::__construct($app); + } + + /** + * Specify Model class name + * + * @return Mixed + */ + + function model() + { + return Shipment::class; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + DB::beginTransaction(); + + try { + Event::dispatch('sales.shipment.save.before', $data); + + $order = $this->orderRepository->find($data['order_id']); + + $shipment = $this->model->create([ + 'order_id' => $order->id, + 'total_qty' => 0, + 'carrier_title' => $data['shipment']['carrier_title'], + 'track_number' => $data['shipment']['track_number'], + 'customer_id' => $order->customer_id, + 'customer_type' => $order->customer_type, + 'order_address_id' => $order->shipping_address->id, + 'inventory_source_id' => $data['shipment']['source'], + ]); + + $totalQty = 0; + + foreach ($data['shipment']['items'] as $itemId => $inventorySource) { + $qty = $inventorySource[$data['shipment']['source']]; + + $orderItem = $this->orderItemRepository->find($itemId); + + if ($qty > $orderItem->qty_to_ship) + $qty = $orderItem->qty_to_ship; + + $totalQty += $qty; + + $shipmentItem = $this->shipmentItemRepository->create([ + 'shipment_id' => $shipment->id, + 'order_item_id' => $orderItem->id, + 'name' => $orderItem->name, + 'sku' => $orderItem->getTypeInstance()->getOrderedItem($orderItem)->sku, + 'qty' => $qty, + 'weight' => $orderItem->weight * $qty, + 'price' => $orderItem->price, + 'base_price' => $orderItem->base_price, + 'total' => $orderItem->price * $qty, + 'base_total' => $orderItem->base_price * $qty, + 'product_id' => $orderItem->product_id, + 'product_type' => $orderItem->product_type, + 'additional' => $orderItem->additional, + ]); + + if ($orderItem->getTypeInstance()->isComposite()) { + foreach ($orderItem->children as $child) { + if (! $child->qty_ordered) { + $finalQty = $qty; + } else { + $finalQty = ($child->qty_ordered / $orderItem->qty_ordered) * $qty; + } + + $this->shipmentItemRepository->updateProductInventory([ + 'shipment' => $shipment, + 'product' => $child->product, + 'qty' => $finalQty, + 'vendor_id' => isset($data['vendor_id']) ? $data['vendor_id'] : 0 + ]); + + $this->orderItemRepository->update(['qty_shipped' => $child->qty_shipped + $finalQty], $child->id); + } + } else { + $this->shipmentItemRepository->updateProductInventory([ + 'shipment' => $shipment, + 'product' => $orderItem->product, + 'qty' => $qty, + 'vendor_id' => isset($data['vendor_id']) ? $data['vendor_id'] : 0 + ]); + } + + $this->orderItemRepository->update(['qty_shipped' => $orderItem->qty_shipped + $qty], $orderItem->id); + } + + $shipment->update([ + 'total_qty' => $totalQty, + 'inventory_source_name' => $shipment->inventory_source->name + ]); + + $this->orderRepository->updateOrderStatus($order); + + Event::dispatch('sales.shipment.save.after', $shipment); + } catch (\Exception $e) { + DB::rollBack(); + + throw $e; + } + + DB::commit(); + + return $shipment; + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/resources/manifest.php b/packages/Webkul/Sales/src/resources/manifest.php new file mode 100644 index 000000000..5845b7688 --- /dev/null +++ b/packages/Webkul/Sales/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto Sales', + 'version' => '0.0.1' + ]; diff --git a/packages/Webkul/Shipping/.gitignore b/packages/Webkul/Shipping/.gitignore new file mode 100755 index 000000000..e69de29bb diff --git a/packages/Webkul/Shipping/composer.json b/packages/Webkul/Shipping/composer.json new file mode 100755 index 000000000..418334ff9 --- /dev/null +++ b/packages/Webkul/Shipping/composer.json @@ -0,0 +1,26 @@ +{ + "name": "bagisto/laravel-shipping", + "description": "Shipping Package for Shipping Method", + "license": "MIT", + "authors": [ + { + "name": "rahulshukla-webkul", + "email": "rahulshukla.symfony517@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\Shipping\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Shipping\\Providers\\ShippingServiceProvider" + ], + "aliases": {} + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Shipping/src/Carriers/AbstractShipping.php b/packages/Webkul/Shipping/src/Carriers/AbstractShipping.php new file mode 100755 index 000000000..e8eca232c --- /dev/null +++ b/packages/Webkul/Shipping/src/Carriers/AbstractShipping.php @@ -0,0 +1,75 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +abstract class AbstractShipping +{ + + abstract public function calculate(); + + /** + * Checks if payment method is available + * + * @return array + */ + public function isAvailable() + { + return $this->getConfigData('active'); + } + + /** + * Returns payment method code + * + * @return array + */ + public function getCode() + { + if (empty($this->code)) { + // throw exception + } + + return $this->code; + } + + /** + * Returns payment method title + * + * @return array + */ + public function getTitle() + { + return $this->getConfigData('title'); + } + + /** + * Returns payment method decription + * + * @return array + */ + public function getDecription() + { + return $this->getConfigData('decription'); + } + + /** + * Retrieve information from payment configuration + * + * @param string $field + * @param int|string|null $channelId + * + * @return mixed + */ + public function getConfigData($field) + { + return core()->getConfigData('sales.carriers.' . $this->getCode() . '.' . $field); + } +} +?> \ No newline at end of file diff --git a/packages/Webkul/Shipping/src/Carriers/FlatRate.php b/packages/Webkul/Shipping/src/Carriers/FlatRate.php new file mode 100755 index 000000000..2cc7fc34c --- /dev/null +++ b/packages/Webkul/Shipping/src/Carriers/FlatRate.php @@ -0,0 +1,59 @@ +isAvailable()) + return false; + + $cart = Cart::getCart(); + + $object = new CartShippingRate; + + $object->carrier = 'flatrate'; + $object->carrier_title = $this->getConfigData('title'); + $object->method = 'flatrate_flatrate'; + $object->method_title = $this->getConfigData('title'); + $object->method_description = $this->getConfigData('description'); + $object->price = 0; + $object->base_price = 0; + + if ($this->getConfigData('type') == 'per_unit') { + foreach ($cart->items as $item) { + if ($item->product->getTypeInstance()->isStockable()) { + $object->price += core()->convertPrice($this->getConfigData('default_rate')) * $item->quantity; + $object->base_price += $this->getConfigData('default_rate') * $item->quantity; + } + } + } else { + $object->price = core()->convertPrice($this->getConfigData('default_rate')); + $object->base_price = $this->getConfigData('default_rate'); + } + + return $object; + } +} \ No newline at end of file diff --git a/packages/Webkul/Shipping/src/Carriers/Free.php b/packages/Webkul/Shipping/src/Carriers/Free.php new file mode 100755 index 000000000..69a5f1012 --- /dev/null +++ b/packages/Webkul/Shipping/src/Carriers/Free.php @@ -0,0 +1,44 @@ +isAvailable()) + return false; + + $object = new CartShippingRate; + + $object->carrier = 'free'; + $object->carrier_title = $this->getConfigData('title'); + $object->method = 'free_free'; + $object->method_title = $this->getConfigData('title'); + $object->method_description = $this->getConfigData('description'); + $object->price = 0; + $object->base_price = 0; + + return $object; + } +} \ No newline at end of file diff --git a/packages/Webkul/Shipping/src/Config/carriers.php b/packages/Webkul/Shipping/src/Config/carriers.php new file mode 100755 index 000000000..209658b15 --- /dev/null +++ b/packages/Webkul/Shipping/src/Config/carriers.php @@ -0,0 +1,22 @@ + [ + 'code' => 'flatrate', + 'title' => 'Flat Rate', + 'description' => 'Flat Rate Shipping', + 'active' => true, + 'default_rate' => '10', + 'type' => 'per_unit', + 'class' => 'Webkul\Shipping\Carriers\FlatRate' + ], + + 'free' => [ + 'code' => 'free', + 'title' => 'Free Shipping', + 'description' => 'Free Shipping', + 'active' => true, + 'default_rate' => '0', + 'class' => 'Webkul\Shipping\Carriers\Free' + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Shipping/src/Config/system.php b/packages/Webkul/Shipping/src/Config/system.php new file mode 100755 index 000000000..ad446e5d4 --- /dev/null +++ b/packages/Webkul/Shipping/src/Config/system.php @@ -0,0 +1,152 @@ + 'sales', + 'name' => 'admin::app.admin.system.sales', + 'sort' => 5 + ], [ + 'key' => 'sales.carriers', + 'name' => 'admin::app.admin.system.shipping-methods', + 'sort' => 1, + ], [ + 'key' => 'sales.carriers.free', + 'name' => 'admin::app.admin.system.free-shipping', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'title', + 'title' => 'admin::app.admin.system.title', + 'type' => 'text', + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'description', + 'title' => 'admin::app.admin.system.description', + 'type' => 'textarea', + 'channel_based' => false, + 'locale_based' => true + ], [ + 'name' => 'active', + 'title' => 'admin::app.admin.system.status', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'Active', + 'value' => true + ], [ + 'title' => 'Inactive', + 'value' => false + ] + ], + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => true + ] + ] + ], [ + 'key' => 'sales.carriers.flatrate', + 'name' => 'admin::app.admin.system.flate-rate-shipping', + 'sort' => 2, + 'fields' => [ + [ + 'name' => 'title', + 'title' => 'admin::app.admin.system.title', + 'type' => 'text', + 'validation' => 'required', + 'channel_based' => true, + 'locale_based' => true + ], [ + 'name' => 'description', + 'title' => 'admin::app.admin.system.description', + 'type' => 'textarea', + 'channel_based' => true, + 'locale_based' => false + ], [ + 'name' => 'default_rate', + 'title' => 'admin::app.admin.system.rate', + 'type' => 'text', + 'validation' => 'required', + 'channel_based' => true, + 'locale_based' => false + ], [ + 'name' => 'type', + 'title' => 'admin::app.admin.system.type', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'Per Unit', + 'value' => 'per_unit' + ], [ + 'title' => 'Per Order', + 'value' => 'per_order' + ] + ], + 'validation' => 'required' + ], [ + 'name' => 'active', + 'title' => 'admin::app.admin.system.status', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'Active', + 'value' => true + ], [ + 'title' => 'Inactive', + 'value' => false + ] + ], + 'validation' => 'required', + 'channel_based' => false, + 'locale_based' => true + ] + ] + ], [ + 'key' => 'sales.shipping', + 'name' => 'admin::app.admin.system.shipping', + 'sort' => 0 + ], [ + 'key' => 'sales.shipping.origin', + 'name' => 'admin::app.admin.system.origin', + 'sort' => 0, + 'fields' => [ + [ + 'name' => 'country', + 'title' => 'admin::app.admin.system.country', + 'type' => 'country', + 'validation' => 'required', + 'channel_based' => true, + 'locale_based' => true + ], [ + 'name' => 'state', + 'title' => 'admin::app.admin.system.state', + 'type' => 'state', + 'validation' => 'required', + 'channel_based' => true, + 'locale_based' => true + ], [ + 'name' => 'address1', + 'title' => 'admin::app.admin.system.street-address', + 'type' => 'text', + 'validation' => 'required', + 'channel_based' => true, + 'locale_based' => false + ], [ + 'name' => 'zipcode', + 'title' => 'admin::app.admin.system.zip', + 'type' => 'text', + 'validation' => 'required', + 'channel_based' => true, + 'locale_based' => false + ], [ + 'name' => 'city', + 'title' => 'admin::app.admin.system.city', + 'type' => 'text', + 'validation' => 'required', + 'channel_based' => true, + 'locale_based' => false + ] + ] + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Shipping/src/Facades/Shipping.php b/packages/Webkul/Shipping/src/Facades/Shipping.php new file mode 100755 index 000000000..65ba5ad85 --- /dev/null +++ b/packages/Webkul/Shipping/src/Facades/Shipping.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/packages/Webkul/Shipping/src/Providers/ShippingServiceProvider.php b/packages/Webkul/Shipping/src/Providers/ShippingServiceProvider.php new file mode 100755 index 000000000..73042f601 --- /dev/null +++ b/packages/Webkul/Shipping/src/Providers/ShippingServiceProvider.php @@ -0,0 +1,64 @@ +registerFacades(); + + $this->registerConfig(); + } + + /** + * Register Bouncer as a singleton. + * + * @return void + */ + protected function registerFacades() + { + $loader = AliasLoader::getInstance(); + $loader->alias('shipping', ShippingFacade::class); + + $this->app->singleton('shipping', function () { + return new Shipping(); + }); + } + + /** + * Register package config. + * + * @return void + */ + protected function registerConfig() + { + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/carriers.php', 'carriers' + ); + + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/system.php', 'core' + ); + } +} diff --git a/packages/Webkul/Shipping/src/Shipping.php b/packages/Webkul/Shipping/src/Shipping.php new file mode 100755 index 000000000..44675b89d --- /dev/null +++ b/packages/Webkul/Shipping/src/Shipping.php @@ -0,0 +1,110 @@ +removeAllShippingRates(); + + foreach (Config::get('carriers') as $shippingMethod) { + $object = new $shippingMethod['class']; + + if ($rates = $object->calculate()) { + if (is_array($rates)) { + $this->rates = array_merge($this->rates, $rates); + } else { + $this->rates[] = $rates; + } + } + } + + $this->saveAllShippingRates(); + + return [ + 'jump_to_section' => 'shipping', + 'shippingMethods' => $this->getGroupedAllShippingRates(), + 'html' => view('shop::checkout.onepage.shipping', ['shippingRateGroups' => $this->getGroupedAllShippingRates()])->render() + ]; + } + + /** + * Persist shipping rate to database + * + * @return void + */ + public function removeAllShippingRates() + { + if (! $cart = Cart::getCart()) + return; + + foreach ($cart->shipping_rates()->get() as $rate) { + $rate->delete(); + } + } + + /** + * Persist shipping rate to database + * + * @return void + */ + public function saveAllShippingRates() + { + if (! $cart = Cart::getCart()) + return; + + $shippingAddress = $cart->shipping_address; + + foreach ($this->rates as $rate) { + $rate->cart_address_id = $shippingAddress->id; + + $rate->save(); + } + } + + /** + * Returns shipping rates, grouped by shipping method + * + * @return void + */ + public function getGroupedAllShippingRates() + { + $rates = []; + + foreach ($this->rates as $rate) { + if (! isset($rates[$rate->carrier])) { + $rates[$rate->carrier] = [ + 'carrier_title' => $rate->carrier_title, + 'rates' => [] + ]; + } + + $rates[$rate->carrier]['rates'][] = $rate; + } + + return $rates; + } +} \ No newline at end of file diff --git a/packages/Webkul/Shop/.gitignore b/packages/Webkul/Shop/.gitignore new file mode 100755 index 000000000..6376db975 --- /dev/null +++ b/packages/Webkul/Shop/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/package-lock.json +npm-debug.log \ No newline at end of file diff --git a/packages/Webkul/Shop/composer.json b/packages/Webkul/Shop/composer.json new file mode 100755 index 000000000..6eb5ec755 --- /dev/null +++ b/packages/Webkul/Shop/composer.json @@ -0,0 +1,26 @@ +{ + "name": "bagisto/laravel-shop", + "license": "MIT", + "description" : "Shop package for store front and customers", + "authors": [ + { + "name": "Prashant Singh", + "email": "prashant.singh852@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\Shop\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Shop\\Providers\\ShopServiceProvider" + ], + "aliases": {} + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Shop/package.json b/packages/Webkul/Shop/package.json new file mode 100755 index 000000000..281904967 --- /dev/null +++ b/packages/Webkul/Shop/package.json @@ -0,0 +1,30 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch-poll": "cross-env npm run watch -- --watch-poll --progress", + "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", + "prod": "npm run production", + "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" + }, + "devDependencies": { + "axios": "^0.19.0", + "cross-env": "^6.0.3", + "jquery": "^3.4.1", + "laravel-mix": "^5.0.0", + "laravel-mix-merge-manifest": "^0.1.2", + "sass": "^1.24.4", + "sass-loader": "^8.0.0", + "vue": "^2.6.10", + "vue-template-compiler": "^2.6.11" + }, + "dependencies": { + "accounting": "^0.4.1", + "ez-plus": "^1.2.1", + "vee-validate": "^2.2.15", + "vue-flatpickr": "^2.3.0", + "vue-slider-component": "^3.0.44" + } +} diff --git a/packages/Webkul/Shop/publishable/assets/css/shop.css b/packages/Webkul/Shop/publishable/assets/css/shop.css new file mode 100755 index 000000000..0dfaeaf43 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/css/shop.css @@ -0,0 +1 @@ +@import url(https://fonts.googleapis.com/css?family=Montserrat:400,500);.icon{display:inline-block;background-size:cover}.dropdown-right-icon{background-image:URL(../images/icon-dropdown-left.svg);width:8px;height:8px;margin-left:auto;margin-bottom:2px}.icon-menu-close{background-image:URL(../images/icon-menu-close.svg);width:24px;height:24px;margin-left:auto}.icon-menu-close-adj{background-image:URL(../images/cross-icon-adj.svg);margin-left:auto}.grid-view-icon{background-image:URL(../images/icon-grid-view.svg);width:24px;height:24px}.list-view-icon{background-image:URL(../images/icon-list-view.svg);width:24px;height:24px}.sort-icon{background-image:URL(../images/icon-sort.svg);width:32px;height:32px}.filter-icon{background-image:URL(../images/icon-filter.svg);width:32px;height:32px}.whishlist-icon{background-image:URL(../images/wishlist.svg);width:24px;height:24px}.share-icon{background-image:URL(../images/icon-share.svg);width:24px;height:24px}.icon-menu{background-image:URL(../images/icon-menu.svg);width:24px;height:24px}.icon-search{background-image:URL(../images/icon-search.svg);width:24px;height:24px}.icon-menu-back{background-image:URL(../images/icon-menu-back.svg);width:24px;height:24px}.shipping-icon{background-image:url(../images/shipping.svg);width:32px;height:32px}.payment-icon{background-image:url(../images/payment.svg);width:32px;height:32px}.cart-icon{background-image:url(../images/icon-cart.svg);width:24px;height:24px}.wishlist-icon{background-image:url(../images/wishlist.svg);width:32px;height:32px}.icon-arrow-up{background-image:url(../images/arrow-up.svg);width:16px;height:16px}.icon-arrow-down{background-image:url(../images/arrow-down.svg);width:16px;height:16px}.expand-icon{background-image:url(../images/Expand-Light.svg);width:18px;height:18px}.expand-on-icon{background-image:url(../images/Expand-Light-On.svg);width:18px;height:18px}.icon-menu-close-adj{background-image:url(../images/cross-icon-adj.svg);width:32px;height:32px}.icon-facebook{background-image:url(../images/facebook.svg)}.icon-twitter{background-image:url(../images/twitter.svg)}.icon-google-plus{background-image:url(../images/google-plus.svg)}.icon-instagram{background-image:url(../images/instagram.svg)}.icon-linkedin{background-image:url(../images/linkedin.svg)}.icon-dropdown{background-image:url(../images/icon-dropdown.svg)}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}body{margin:0;padding:0;font-weight:500;max-width:100%;width:auto;color:#242424;font-size:16px}*{font-family:Montserrat,sans-serif}::-webkit-input-placeholder{font-family:Montserrat,sans-serif}::-moz-input-placeholder{font-family:Montserrat,sans-serif}textarea{resize:none}input{font-family:Montserrat,sans-serif}.btn{border-radius:0!important}.pagination.shop{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center}@media only screen and (max-width:770px){.pagination.shop{-webkit-box-pack:justify;justify-content:space-between}.pagination.shop .page-item{display:none}.pagination.shop .page-item.next,.pagination.shop .page-item.previous{display:block}}.bold{font-weight:700;color:#3a3a3a}.radio-container{display:block;position:relative;padding-left:35px;margin-bottom:12px;cursor:pointer;font-size:16px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.radio-container input{position:absolute;opacity:0;cursor:pointer;top:0;left:0}.radio-container .checkmark{position:absolute;top:0;left:0;height:16px;width:16px;background-color:#fff;border:2px solid #ff6472;border-radius:50%}.radio-container .checkmark:after{content:"";position:absolute;display:none;top:2px;left:2px;width:8px;height:8px;border-radius:50%;background:#ff6472}.radio-container input:checked~.checkmark:after{display:block}.radio-container input:disabled~.checkmark{display:block;border:2px solid rgba(255,100,113,.4)}.cp-spinner{width:48px;height:48px;display:inline-block;box-sizing:border-box}.cp-round:before{border-radius:50%;border:6px solid #bababa}.cp-round:after,.cp-round:before{content:" ";width:48px;height:48px;display:inline-block;box-sizing:border-box;position:absolute;top:0;left:0}.cp-round:after{border-radius:50%;border:6px solid transparent;border-top-color:#0031f0;-webkit-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite}.radio{margin:10px 0 0!important}.checkbox{margin:10px 0 0}.checkbox .checkbox-view{height:16px!important;width:16px!important;background-image:url(../images/checkbox.svg)!important}.checkbox input:checked+.checkbox-view{background-image:url(../images/checkbox-checked.svg)!important}.pull-right{float:right}.add-to-wishlist .wishlist-icon:hover{background-image:url(../images/wishlist-added.svg)}.add-to-wishlist.already{pointer-events:none}.add-to-wishlist.already .wishlist-icon{background-image:url(../images/wishlist-added.svg)!important}.product-price{margin-bottom:14px;width:100%;font-weight:600;word-break:break-all}.product-price .price-label{font-size:14px;font-weight:400;margin-right:5px}.product-price .regular-price{color:#a5a5a5;text-decoration:line-through;margin-right:10px}.product-price .special-price{color:#ff6472}.horizontal-rule{display:block;width:100%;height:1px;background:#c7c7c7}.account-head .account-heading{font-size:28px;color:#242424;text-transform:capitalize;text-align:left}.account-head .account-action{font-size:17px;margin-top:1%;color:#0031f0;float:right}.account-head .horizontal-rule{margin-top:1.1%;width:100%;height:1px;vertical-align:middle;background:#c7c7c7}.account-item-card{-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center;width:100%;height:125px}.account-item-card,.account-item-card .media-info{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.account-item-card .media-info .media{height:125px;width:110px}.account-item-card .media-info .info{margin-left:20px;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:space-evenly;justify-content:space-evenly}.account-item-card .media-info .info .stars .icon{height:16px;width:16px}.account-item-card .operations{height:120px;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center}.account-item-card .operations a{width:100%}.account-item-card .operations a span{float:right}.account-items-list{display:block;width:100%}.account-items-list .grid-container{margin-top:40px}.search-result-status{width:100%;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center}.grid-container{margin-top:20px}.main-container-wrapper{max-width:1300px;width:auto;padding-left:15px;padding-right:15px;margin-left:auto;margin-right:auto}.main-container-wrapper .content-container{display:block;margin-bottom:40px}.main-container-wrapper .product-grid-4{grid-auto-rows:auto;grid-column-gap:30px;grid-row-gap:15px}.main-container-wrapper .product-grid-3,.main-container-wrapper .product-grid-4{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));justify-items:center}.main-container-wrapper .product-grid-3{grid-gap:27px;grid-auto-rows:auto}.main-container-wrapper .product-card{position:relative;padding:15px}.main-container-wrapper .product-card .product-image{max-height:350px;max-width:280px;margin-bottom:10px;background:#f2f2f2}.main-container-wrapper .product-card .product-image img{display:block;height:100%}.main-container-wrapper .product-card .product-name{margin-bottom:14px;width:100%;color:#242424}.main-container-wrapper .product-card .product-name a{color:#242424}.main-container-wrapper .product-card .product-description{display:none}.main-container-wrapper .product-card .product-ratings{width:100%}.main-container-wrapper .product-card .product-ratings .icon{width:16px;height:16px}.main-container-wrapper .product-card .cart-wish-wrap{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:start;justify-content:flex-start;-webkit-box-align:center;align-items:center;height:40px}.main-container-wrapper .product-card .cart-wish-wrap .addtocart{margin-right:10px;text-transform:uppercase;text-align:left;box-shadow:1px 1px 0 #ccc}.main-container-wrapper .product-card .cart-wish-wrap .add-to-wishlist{margin-top:5px;background:transparent;border:0;cursor:pointer;padding:0}.main-container-wrapper .product-card .sticker{border-bottom-right-radius:15px;position:absolute;top:15px;left:15px;text-transform:uppercase;padding:4px 13px;font-size:14px;color:#fff;box-shadow:1px 1px 1px #ccc;font-weight:500}.main-container-wrapper .product-card .sticker.sale{background:#ff6472}.main-container-wrapper .product-card .sticker.new{background:#2ed04c}.main-container-wrapper .product-card:hover{box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 2px 16px 4px rgba(40,44,63,.07);-webkit-transition:.3s;transition:.3s}@media only screen and (max-width:580px){.main-container-wrapper .main-container-wrapper{padding:0}}@media only screen and (max-width:551px){.main-container-wrapper .product-grid-3{grid-template-columns:48.5% 48.5%;grid-column-gap:20px}}@media only screen and (max-width:854px){.main-container-wrapper .product-image img{display:block;width:100%}.main-container-wrapper .product-grid-4{grid-template-columns:29.5% 29.5% 29.5%;grid-column-gap:35px}.main-container-wrapper .product-card:hover{padding:5px}}@media only screen and (max-width:653px){.main-container-wrapper .product-image img{display:block;width:100%}.main-container-wrapper .product-grid-4{grid-template-columns:48.5% 48.5%;grid-column-gap:17px}}@media only screen and (max-width:425px){.main-container-wrapper .product-card{font-size:90%}.main-container-wrapper .product-card .product-image img{display:block;width:100%}.main-container-wrapper .product-card .btn.btn-md{padding:5px}.main-container-wrapper .product-grid-4{grid-template-columns:48.5% 48.5%;grid-column-gap:10px}}.main-container-wrapper .product-list{min-height:200px}.main-container-wrapper .product-list .product-card{width:100%;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center;margin-bottom:20px}.main-container-wrapper .product-list .product-card .product-image{float:left;width:30%;height:350px}.main-container-wrapper .product-list .product-card .product-image img{height:100%;width:100%}.main-container-wrapper .product-list .product-card .product-information{float:right;width:70%;padding-left:30px}.main-container-wrapper .product-list .product-card:last-child{margin-bottom:0}.main-container-wrapper .product-list.empty h2{font-size:20px}.main-container-wrapper section.featured-products{display:block;margin-bottom:5%}.main-container-wrapper section.featured-products .featured-heading{width:100%;text-align:center;text-transform:uppercase;font-size:18px;margin-bottom:20px}.main-container-wrapper section.featured-products .featured-heading .featured-separator{color:#d3d3d3}.main-container-wrapper section.news-update{display:block;box-sizing:border-box;width:100%;margin-bottom:5%}.main-container-wrapper section.news-update .news-update-grid{display:grid;grid-template-columns:58.5% 40%;grid-gap:20px}.main-container-wrapper section.news-update .news-update-grid .block1{display:block;box-sizing:border-box}.main-container-wrapper section.news-update .news-update-grid .block1 img{display:-webkit-box;display:flex;height:100%;width:100%}.main-container-wrapper section.news-update .news-update-grid .block2{display:block;box-sizing:border-box;display:grid;grid-template-rows:repeat(2,minmax(50%,1fr));grid-row-gap:20px}.main-container-wrapper section.news-update .news-update-grid .block2 .sub-block1{display:block;box-sizing:border-box}.main-container-wrapper section.news-update .news-update-grid .block2 .sub-block1 img{width:100%}.main-container-wrapper section.news-update .news-update-grid .block2 .sub-block2{display:block;box-sizing:border-box}.main-container-wrapper section.news-update .news-update-grid .block2 .sub-block2 img{width:100%}section.slider-block{display:block;margin-left:auto;margin-right:auto;margin-bottom:5%}section.slider-block div.slider-content{position:relative;height:500px;margin-left:auto;margin-right:auto}section.slider-block div.slider-content ul.slider-images .show-content{display:none}section.slider-block div.slider-content ul.slider-images li{position:absolute;visibility:hidden}section.slider-block div.slider-content ul.slider-images li.show{display:block;position:relative;visibility:visible;width:100%;-webkit-animation-name:example;animation-name:example;-webkit-animation-duration:4s;animation-duration:4s}section.slider-block div.slider-content ul.slider-images li.show .show-content{display:-webkit-box;display:flex;position:absolute;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;color:#242424;height:100%;width:100%;top:0}@-webkit-keyframes example{0%{opacity:.1}to{opacity:1}}@keyframes example{0%{opacity:.1}to{opacity:1}}section.slider-block div.slider-content ul.slider-images li img{max-height:500px;width:100%}section.slider-block div.slider-content div.slider-control{display:block;cursor:pointer;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;bottom:2%;right:2%}section.slider-block div.slider-content div.slider-control .dark-left-icon{background-color:#f2f2f2;height:48px;width:48px;max-height:100%;max-width:100%}section.slider-block div.slider-content div.slider-control .light-right-icon{background-color:#242424;height:48px;width:48px;max-height:100%;max-width:100%}@media only screen and (max-width:770px){section.slider-block div.slider-content div.slider-control{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;bottom:46%;right:0;width:100%}}.header{margin-top:16px;margin-bottom:21px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header .header-top{margin-bottom:16px;max-width:100%;width:auto;margin-left:auto;margin-right:auto;-webkit-box-pack:justify;justify-content:space-between}.header .header-top,.header .header-top div.left-content{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.header .header-top div.left-content{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:start;justify-content:flex-start}.header .header-top div.left-content ul.logo-container{margin-right:12px}.header .header-top div.left-content ul.logo-container li{display:-webkit-box;display:flex}.header .header-top div.left-content ul.logo-container li img{max-width:120px;max-height:40px}.header .header-top div.left-content ul.search-container li.search-group{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center}.header .header-top div.left-content ul.search-container li.search-group .search-field{height:38px;border-radius:3px;border:2px solid #c7c7c7;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;padding-left:12px;font-size:14px}.header .header-top div.left-content ul.search-container li.search-group .search-icon-wrapper{box-sizing:border-box;height:38px;width:38px;border:2px solid #c7c7c7;border-top-right-radius:3px;border-bottom-right-radius:3px}.header .header-top div.left-content ul.search-container li.search-group .search-icon-wrapper button{background:#fff;border:0;padding:3px 5px}.header .header-top div.right-content .right-content-menu>li{display:inline-block;border-right:2px solid #c7c7c7;min-height:15px;padding:3px 15px 0}.header .header-top div.right-content .right-content-menu>li:first-child{padding-left:0}.header .header-top div.right-content .right-content-menu>li:last-child{border-right:0;padding-right:0}.header .header-top div.right-content .right-content-menu>li .icon{vertical-align:middle}.header .header-top div.right-content .right-content-menu>li .icon:not(.arrow-down-icon){margin-right:5px}.header .header-top div.right-content .right-content-menu>li .arrow-down-icon{width:12px;height:6px}.header .header-top div.right-content .right-content-menu .cart-dropdown-container{border-right:0;padding-right:0}.header .header-top div.right-content .right-content-menu .cart-link{pointer-events:none}.header .header-top div.right-content .right-content-menu ul.dropdown-list{display:none;margin-top:14px}.header .header-top div.right-content .right-content-menu ul.dropdown-list li{border-right:none;padding:5px 10px;display:block}.header .header-top div.right-content .right-content-menu ul.dropdown-list li a{color:#333}.header .header-top div.right-content .right-content-menu .currency{position:absolute;right:0;width:100px}.header .header-top div.right-content .right-content-menu .account{position:absolute;right:0}.header .header-top div.right-content .right-content-menu .account li{padding:20px!important}.header .header-top div.right-content .right-content-menu .account li ul{margin-top:5px}.header .header-top div.right-content .right-content-menu .account li ul>li{padding:5px 10px 5px 0!important}.header .header-top div.right-content .right-content-menu .guest{width:300px}.header .header-top div.right-content .right-content-menu .guest .btn.btn-sm{padding:9px 25px}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list{width:387px}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container{padding:0}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-cart{color:#242424}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-cart>.dropdown-header{width:100%;padding:8px 16px;border-bottom:1px solid #c7c7c7}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-cart>.dropdown-header p{display:inline;line-height:25px}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-cart>.dropdown-header i{float:right;height:22px;width:22px}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-cart>.dropdown-header p.heading{font-weight:lighter}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-content{padding-top:8px;margin-bottom:55px;width:100%;max-height:329px;overflow-y:auto}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-content .item{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;border-bottom:1px solid #c7c7c7;padding:8px 16px}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-content .item img{height:75px;width:75px;margin-right:8px}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-content .item-details{height:auto}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .item-details .item-name{font-size:16px;font-weight:700;margin-bottom:8px}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .item-details .item-options,.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .item-details .item-price{margin-bottom:8px}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .item-details .item-qty{font-weight:lighter;margin-bottom:8px}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-footer{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center;padding:8px 16px;position:absolute;bottom:0;width:100%;background:#fff;border-top:1px solid #c7c7c7}.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list .dropdown-container .dropdown-footer .btn{margin:0;max-width:170px;text-align:center}.header .header-top div.right-content .menu-box,.header .header-top div.right-content .search-box{display:none}.header .header-bottom{height:47px;margin-left:auto;margin-right:auto;border-top:1px solid #c7c7c7;border-bottom:1px solid #c7c7c7;display:block}.header .header-bottom ul.nav{display:block;font-size:16px;max-width:100%;width:auto;margin-left:auto;margin-right:auto}.header .header-bottom .nav ul{margin:0;padding:0;box-shadow:1px 1px 1px 0 rgba(0,0,0,.4)}.header .header-bottom .nav a{display:block;color:#242424;text-decoration:none;padding:.8em .3em .8em .5em;text-transform:capitalize;letter-spacing:-.38px;position:relative}.header .header-bottom .nav li>.icon{display:none}.header .header-bottom .nav{vertical-align:top;display:inline-block}.header .header-bottom .nav li{position:relative}.header .header-bottom .nav>li{float:left;margin-right:1px;height:45px}.header .header-bottom .nav>li>a{margin-bottom:1px}.header .header-bottom .nav>li>a .icon{display:none}.header .header-bottom .nav li li a{margin-top:1px;white-space:normal;word-break:break-word;width:200px}.header .header-bottom .nav li a:first-child:nth-last-child(2):before{content:"";position:absolute;height:0;width:0;border:5px solid transparent;top:50%;right:5px}.header .header-bottom .nav ul{position:absolute;white-space:nowrap;border:1px solid #c7c7c7;background-color:#fff;z-index:10000;left:-99999em}.header .header-bottom .nav>li:hover{background-color:#f2f2f2}.header .header-bottom .nav>li:hover>ul{left:auto;min-width:100%}.header .header-bottom .nav>li li:hover{background-color:#f2f2f2}.header .header-bottom .nav>li li:hover>ul{left:100%;margin-left:1px;top:-2px}.header .header-bottom .nav>li:hover>a:first-child:nth-last-child(2):before,.header .header-bottom .nav li li>a:first-child:nth-last-child(2):before{margin-top:-5px}.header .header-bottom .nav li li:hover>a:first-child:nth-last-child(2):before{right:10px}.header .search-responsive{display:none}.header .search-responsive .search-content{border-bottom:1px solid #c7c7c7;border-top:1px solid #c7c7c7;height:50px;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between}.header .search-responsive .search-content .search{width:80%;border:none;font-size:16px}.header .search-responsive .search-content .right{float:right}@media (max-width:720px){.header .currency-switcher{display:none!important}.header .header-top div.right-content{display:inherit}.header .header-top div.right-content .menu-box{display:inline-block;margin-left:10px}.header .header-top div.right-content .search-box{display:inline-block;margin-right:10px;cursor:pointer}.header .header-top div.right-content .right-content-menu>li{border-right:none;padding:0 2px}.header .header-top div.right-content .right-content-menu>li .icon:not(.arrow-down-icon){margin-right:0}.header .header-top div.right-content .right-content-menu .cart-link{pointer-events:all}.header .header-top div.right-content .right-content-menu .arrow-down-icon,.header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-container,.header .header-top div.right-content .right-content-menu .name{display:none}.header .header-bottom{height:auto;display:none}.header .header-bottom .nav a{display:inline-block}.header .header-bottom .nav li,.header .header-bottom ul.nav{height:auto}.header .header-bottom .nav>li{float:none}.header .header-bottom .nav li>.icon{float:right;display:block}.header .header-bottom .icon.icon-arrow-down{margin-right:5px}.header .header-bottom .nav li .left{height:16px;width:16px}.header .header-bottom .nav li a>.icon{display:none}.header .header-bottom .nav ul{position:unset;border:none;box-shadow:none}.header .header-bottom .nav>li li:hover>ul{margin-left:0;top:0}ul.account-dropdown-container,ul.cart-dropdown-container,ul.search-container{display:none!important}}@media (max-width:400px){.header .header-top div.right-content .right-content-menu .guest{width:240px}.header .header-top div.right-content .right-content-menu .guest .btn.btn-sm{padding:7px 14px}}.footer{background-color:#f2f2f2;padding-left:10%;padding-right:10%;width:100%;display:inline-block}.footer .footer-content .footer-list-container{display:grid;padding:40px 10px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));grid-auto-rows:auto;grid-row-gap:1vh}.footer .footer-content .footer-list-container .list-container .list-heading{text-transform:uppercase;color:#a5a5a5}.footer .footer-content .footer-list-container .list-container .list-group{padding-top:25px}.footer .footer-content .footer-list-container .list-container .list-group a{color:#242424}.footer .footer-content .footer-list-container .list-container .list-group li{margin-bottom:12px;list-style-type:none;text-transform:uppercase}.footer .footer-content .footer-list-container .list-container .list-group li span.icon{display:inline-block;vertical-align:middle;margin-right:5px;height:24px;width:24px}.footer .footer-content .footer-list-container .list-container .form-container{padding-top:5px}.footer .footer-content .footer-list-container .list-container .form-container .control-group .subscribe-field{width:100%}.footer .footer-content .footer-list-container .list-container .form-container .control-group .btn-primary{background-color:#242424;margin-top:8px;border-radius:0;text-align:center}.footer .footer-content .footer-list-container .list-container .form-container .control-group .locale-switcher{width:100%}.footer .footer-content .footer-list-container .list-container .currency{display:none}@media (max-width:720px){.footer{padding-left:15px}.footer .footer-list-container{padding-left:0!important}.footer .currency{display:block!important}}.footer-bottom{width:100%;height:70px;font-size:16px;color:#a5a5a5;letter-spacing:-.26px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center}.footer-bottom p{padding:0 15px}.main .category-container{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;width:100%}.main .category-container .layered-filter-wrapper,.main .category-container .responsive-layred-filter{width:25%;float:left;padding-right:20px;min-height:1px}.main .category-container .layered-filter-wrapper .filter-title,.main .category-container .responsive-layred-filter .filter-title{border-bottom:1px solid #c7c7c7;color:#242424;padding:10px 0}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item{border-bottom:1px solid #c7c7c7;padding-bottom:10px}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-title,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-title{padding:10px 40px 0 10px;color:#5e5e5e;cursor:pointer;position:relative}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-title .remove-filter-link,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-title .remove-filter-link{font-weight:400;color:#0031f0;margin-right:10px}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-title .icon,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-title .icon{background-image:url(../images/icon-dropdown.svg)!important;width:10px;height:10px;position:absolute;right:15px;top:14px}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content{padding:10px;display:none}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content ol.items{padding:0;margin:0;list-style:none none}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item{padding:8px 0;color:#5e5e5e}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .checkbox{margin:0}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .color-swatch,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content ol.items li.item .color-swatch{display:inline-block;margin-right:5px;min-width:20px;height:20px;border:1px solid #c7c7c7;border-radius:3px;float:right}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item .filter-attributes-content .price-range-wrapper,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item .filter-attributes-content .price-range-wrapper{margin-top:21px}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item.active .filter-attributes-content,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item.active .filter-attributes-content{display:block}.main .category-container .layered-filter-wrapper .filter-attributes .filter-attributes-item.active .filter-attributes-title .icon,.main .category-container .responsive-layred-filter .filter-attributes .filter-attributes-item.active .filter-attributes-title .icon{background-image:url(../images/arrow-up.svg)!important}.main .category-container .responsive-layred-filter{display:none;width:100%;float:none;padding-right:0;margin-top:-25px!important}.main .category-container .category-block{width:80%;display:block}.main .category-container .category-block .hero-image{display:inline-block;visibility:visible;width:100%}.main .category-container .category-block .hero-image img{max-height:400px;max-width:100%}.main .top-toolbar{width:100%;display:inline-block}.main .top-toolbar .page-info{float:left;color:#242424;line-height:45px}.main .top-toolbar .page-info span{display:none}.main .top-toolbar .page-info span:first-child{display:inline}.main .top-toolbar .pager{float:right}.main .top-toolbar .pager label{margin-right:5px}.main .top-toolbar .pager select{background:#f2f2f2;border:1px solid #c7c7c7;border-radius:3px;color:#242424;padding:10px}.main .top-toolbar .pager .view-mode{display:inline-block;margin-right:20px}.main .top-toolbar .pager .view-mode a,.main .top-toolbar .pager .view-mode span{display:inline-block;vertical-align:middle}.main .top-toolbar .pager .view-mode a.grid-view,.main .top-toolbar .pager .view-mode span.grid-view{margin-right:10px}.main .top-toolbar .pager .view-mode .sort-filter{display:none}.main .top-toolbar .pager .sorter{display:inline-block;margin-right:10px}.main .top-toolbar .pager .limiter{display:inline-block}.main .bottom-toolbar{display:block;margin-top:40px;margin-bottom:40px;text-align:center}@media only screen and (max-width:840px){.main .category-container .responsive-layred-filter,.main .layered-filter-wrapper{display:none}.main .category-block{width:100%!important}.main .category-block .top-toolbar{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.main .category-block .top-toolbar .page-info{border-bottom:1px solid #c7c7c7;line-height:15px;margin-top:10px}.main .category-block .top-toolbar .page-info span{display:inline}.main .category-block .top-toolbar .page-info span:first-child{display:none}.main .category-block .top-toolbar .page-info .sort-filter{float:right;cursor:pointer}.main .category-block .top-toolbar .pager{margin-top:20px;display:none}.main .category-block .top-toolbar .pager .view-mode{display:none}.main .category-block .responsive-layred-filter{display:block}}section.product-detail{color:#242424}section.product-detail div.category-breadcrumbs{display:inline}section.product-detail div.layouter{display:block;margin-top:20px;margin-bottom:20px}section.product-detail div.layouter .form-container{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;width:100%}section.product-detail div.layouter .form-container div.product-image-group{margin-right:30px;width:604px;height:650px;max-width:604px;position:-webkit-sticky;position:sticky;top:10px}section.product-detail div.layouter .form-container div.product-image-group div{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;cursor:pointer}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;margin-right:4px;min-width:120px;overflow:hidden;position:relative;-webkit-box-pack:start;justify-content:flex-start;max-height:480px}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list .thumb-frame{border:2px solid transparent;background:#f2f2f2;width:120px;max-height:120px}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list .thumb-frame.active{border-color:#0031f0}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list .thumb-frame img{height:100%;width:100%}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list .gallery-control{width:100%;position:absolute;text-align:center;cursor:pointer;z-index:1}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list .gallery-control .overlay{opacity:.3;background:#242424;width:100%;height:18px;position:absolute;left:0;z-index:-1}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list .gallery-control .icon{z-index:2}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list .gallery-control.top{top:0}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list .gallery-control.bottom{bottom:0}section.product-detail div.layouter .form-container div.product-image-group div .product-hero-image{display:block;position:relative;background:#f2f2f2;width:100%;max-height:480px;height:100%}section.product-detail div.layouter .form-container div.product-image-group div .product-hero-image img{width:100%;height:auto;max-height:480px}section.product-detail div.layouter .form-container div.product-image-group div .product-hero-image .add-to-wishlist{background-image:url(../images/wishlist.svg);position:absolute;top:10px;right:12px;background-color:transparent;border:0;cursor:pointer;padding:0;width:32px;height:32px}section.product-detail div.layouter .form-container div.product-image-group div .product-hero-image .add-to-wishlist:hover{background-image:url(../images/wishlist-added.svg)}section.product-detail div.layouter .form-container div.product-image-group div .product-hero-image .add-to-wishlist.already{background-image:url(../images/wishlist-added.svg)!important}section.product-detail div.layouter .form-container div.product-image-group div .product-hero-image .share{position:absolute;top:10px;right:45px}section.product-detail div.layouter .form-container div.product-image-group .add-to-buttons{display:none;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;margin-top:10px;width:79.5%;float:right;-webkit-box-pack:justify;justify-content:space-between}section.product-detail div.layouter .form-container div.product-image-group .add-to-buttons .addtocart{width:49%;background:#000;white-space:normal;text-transform:uppercase}section.product-detail div.layouter .form-container div.product-image-group .add-to-buttons .buynow{width:49%;white-space:nowrap;text-transform:uppercase}section.product-detail div.layouter .form-container .details{width:50%;overflow-wrap:break-word}section.product-detail div.layouter .form-container .details .product-price{margin-bottom:14px}section.product-detail div.layouter .form-container .details .product-price .sticker{display:none}section.product-detail div.layouter .form-container .details .product-ratings{margin-bottom:20px}section.product-detail div.layouter .form-container .details .product-ratings .icon{width:16px;height:16px}section.product-detail div.layouter .form-container .details .product-ratings .total-reviews{display:inline-block;margin-left:15px}section.product-detail div.layouter .form-container .details .product-heading{font-size:24px;color:#242424;margin-bottom:15px}section.product-detail div.layouter .form-container .details .product-price{margin-bottom:15px;word-break:break-all}section.product-detail div.layouter .form-container .details .product-price .special-price{font-size:24px}section.product-detail div.layouter .form-container .details .stock-status{margin-bottom:15px;font-weight:600;color:#fc6868}section.product-detail div.layouter .form-container .details .stock-status.active{color:#4caf50}section.product-detail div.layouter .form-container .details .description{margin-bottom:15px}section.product-detail div.layouter .form-container .details .description ul{padding-left:40px;list-style:disc}section.product-detail div.layouter .form-container .details .quantity{padding-top:15px;border-top:1px solid hsla(0,0%,63.5%,.2)}section.product-detail div.layouter .form-container .details .downloadable-container .sample-list{padding:15px 0;border-top:1px solid hsla(0,0%,63.5%,.2)}section.product-detail div.layouter .form-container .details .downloadable-container .sample-list h3{font-size:16px;margin-top:0}section.product-detail div.layouter .form-container .details .downloadable-container .sample-list ul li{margin-bottom:5px}section.product-detail div.layouter .form-container .details .downloadable-container .sample-list ul li:last-child{margin-bottom:0}section.product-detail div.layouter .form-container .details .downloadable-container .link-list{padding:15px 0;border-top:1px solid hsla(0,0%,63.5%,.2)}section.product-detail div.layouter .form-container .details .downloadable-container .link-list h3{font-size:16px;margin-top:0}section.product-detail div.layouter .form-container .details .downloadable-container .link-list ul li{margin-bottom:15px}section.product-detail div.layouter .form-container .details .downloadable-container .link-list ul li:last-child{margin-bottom:0}section.product-detail div.layouter .form-container .details .downloadable-container .link-list ul li .checkbox{display:inline-block;margin:0}section.product-detail div.layouter .form-container .details .downloadable-container .link-list ul li a{float:right;margin-top:3px}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list{padding:15px 0;border-top:1px solid hsla(0,0%,63.5%,.2)}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li{margin-bottom:15px;width:100%;display:inline-block}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li:last-child{margin-bottom:0}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li:first-child span{font-weight:600}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li:first-child span:last-child{float:right;width:50px;text-align:left}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li .name{vertical-align:middle;display:inline-block}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li .name .product-price{margin-top:5px;margin-bottom:0;font-size:14px;word-break:break-all}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li .name .product-price .special-price{font-size:16px}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li .qty{float:right}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li .qty .control-group{max-width:none;width:auto;text-align:center;margin-bottom:0;border-top:0;padding-top:0}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li .qty .control-group label{display:none}section.product-detail div.layouter .form-container .details .grouped-product-container .grouped-product-list ul li .qty .control-group .control{height:38px;width:60px;text-align:center;line-height:38px}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list{padding:15px 0;border-top:1px solid hsla(0,0%,63.5%,.2)}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list h3{font-size:16px;margin:0;color:#242424}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list .bundle-option-item{border-bottom:1px solid hsla(0,0%,63.5%,.2);padding:15px 0;width:100%;display:inline-block}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list .bundle-option-item:last-child{border-bottom:0;padding-bottom:0}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list .bundle-option-item .control-group{margin-bottom:0;color:#5e5e5e}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list .bundle-option-item .control-group label{color:#242424}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list .bundle-option-item .control-group .control{color:#5e5e5e}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list .bundle-option-item .control-group .price{margin-left:15px}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list .bundle-option-item .quantity{border-top:0;padding-bottom:0}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list .bundle-option-item .quantity.has-error button{border-color:#fc6868;color:#fc6868}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list .bundle-option-item .control-error{float:left;width:100%}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-option-list .bundle-option-item.has-error button{border-color:#fc6868;color:#fc6868}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-summary{padding:15px 0;border-top:1px solid hsla(0,0%,63.5%,.2)}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-summary h3{font-size:16px;margin:0;color:#242424}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-summary .quantity{border-top:0}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-summary .bundle-price{font-weight:600;font-size:24px;color:#ff6472;margin-top:10px}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-summary ul.bundle-items li{margin-bottom:20px}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-summary ul.bundle-items li:last-child{margin-bottom:0}section.product-detail div.layouter .form-container .details .bundle-options-wrapper .bundle-summary ul.bundle-items li .selected-products{color:#5e5e5e}section.product-detail div.layouter .form-container .details .full-description *{max-width:100%}section.product-detail div.layouter .form-container .details .full-description ul{padding-left:40px;list-style:disc}section.product-detail div.layouter .form-container .details .full-specifications td{padding:10px 0;color:#5e5e5e}section.product-detail div.layouter .form-container .details .full-specifications td:first-child{padding-right:40px}section.product-detail div.layouter .form-container .details .accordian .accordian-header{padding-left:0;font-weight:600}section.product-detail div.layouter .form-container .details .accordian .accordian-content{padding:20px 0}section.product-detail div.layouter .form-container .details .attributes{display:block;width:100%;border-bottom:1px solid hsla(0,0%,63.5%,.2)}section.product-detail div.layouter .form-container .details .attributes .attribute.control-group{margin-bottom:20px}section.product-detail div.layouter .form-container .details .attributes .attribute.control-group .swatch-container{margin-top:10px;display:inline-block}section.product-detail div.layouter .form-container .details .attributes .attribute.control-group .swatch-container .swatch{display:inline-block;margin-right:5px;min-width:40px;height:40px}section.product-detail div.layouter .form-container .details .attributes .attribute.control-group .swatch-container .swatch span{min-width:38px;height:38px;float:left;border:1px solid #c7c7c7;border-radius:3px;line-height:36px;text-align:center;cursor:pointer;padding:0 10px}section.product-detail div.layouter .form-container .details .attributes .attribute.control-group .swatch-container .swatch img{width:38px;height:38px;border:1px solid #c7c7c7;border-radius:3px;cursor:pointer;background:#f2f2f2}section.product-detail div.layouter .form-container .details .attributes .attribute.control-group .swatch-container .swatch input:checked+img,section.product-detail div.layouter .form-container .details .attributes .attribute.control-group .swatch-container .swatch input:checked+span{border:1px solid #242424}section.product-detail div.layouter .form-container .details .attributes .attribute.control-group .swatch-container .swatch input{display:none}section.product-detail div.layouter .form-container .details .attributes .attribute.control-group .swatch-container .no-options{color:#fb3949}.accordian .accordian-header,.accordian div[slot*=header],accordian .accordian-header,accordian div[slot*=header]{font-size:16px!important}@media only screen and (max-width:720px){section.product-detail div.layouter .form-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}section.product-detail div.layouter .form-container div.product-image-group{margin-right:0;max-width:none;width:auto;min-height:400px;height:auto;position:unset}section.product-detail div.layouter .form-container div.product-image-group .loader{margin-left:47%}section.product-detail div.layouter .form-container div.product-image-group div{-webkit-box-orient:vertical;-webkit-box-direction:reverse;flex-direction:column-reverse}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list{margin-top:5px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;overflow-x:scroll;margin-right:0}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list .thumb-frame img{height:100%;width:auto}section.product-detail div.layouter .form-container div.product-image-group div .thumb-list .gallery-control{display:none}section.product-detail div.layouter .form-container div.product-image-group div .product-hero-image{display:-webkit-box;display:flex}section.product-detail div.layouter .form-container div.product-image-group div .product-hero-image img{margin-left:auto;margin-right:auto;width:480px}section.product-detail div.layouter .form-container div.product-image-group div .wrap{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;width:100%!important}section.product-detail div.layouter .form-container div.product-image-group .add-to-buttons{width:100%}section.product-detail div.layouter .form-container .details{width:100%;margin-top:20px}}@media only screen and (max-width:510px){section.product-detail div.layouter .form-container div.product-image-group .product-hero-image img{width:100%!important}}.rating-reviews .rating-header{padding:20px 0}.rating-reviews .stars .icon{width:16px;height:16px}.rating-reviews .overall{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between}.rating-reviews .overall .review-info .number{font-size:34px}.rating-reviews .overall .review-info .total-reviews{margin-top:10px}.rating-reviews .reviews{margin-top:40px;margin-bottom:40px}.rating-reviews .reviews .review{margin-bottom:25px}.rating-reviews .reviews .review .title{margin-bottom:5px}.rating-reviews .reviews .review .stars{margin-bottom:15px;display:inline-block}.rating-reviews .reviews .review .message{margin-bottom:10px}.rating-reviews .reviews .review .reviewer-details{color:#5e5e5e}.rating-reviews .reviews .view-all{margin-top:15px;color:#0031f0;margin-bottom:15px}section.cart{width:100%;color:#242424;margin-bottom:80px;margin-top:20px}section.cart .title{font-size:24px}section.cart .cart-content{margin-top:20px;width:100%;display:inline-block}section.cart .cart-content .left-side{width:70%;float:left}section.cart .cart-content .left-side .misc-controls{width:100%;display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between;margin-top:20px}section.cart .cart-content .left-side .misc-controls a.link,section.cart .cart-content .left-side .misc-controls div button{margin-right:15px}section.cart .cart-content .right-side{width:30%;display:inline-block;padding-left:40px}.cart-item-list .item{padding:10px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;border:1px solid #c7c7c7;border-radius:2px}.cart-item-list .item .item-image{margin-right:15px}.cart-item-list .item .item-image img{height:160px;width:160px}.cart-item-list .item .item-details{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:start;justify-content:flex-start;width:100%}.cart-item-list .item .item-details .item-title{font-size:18px;margin-bottom:10px;font-weight:600}.cart-item-list .item .item-details .item-title a{color:#242424}.cart-item-list .item .item-details .price{margin-bottom:10px;font-size:18px;font-weight:600}.cart-item-list .item .item-details .summary{margin-bottom:17px}.cart-item-list .item .item-details .misc{display:-webkit-box;display:flex;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:start;justify-content:flex-start;-webkit-box-align:start;align-items:flex-start;margin-top:10px}.cart-item-list .item .item-details .misc .control-group{font-size:16px!important;margin:0;width:auto}.cart-item-list .item .item-details .misc .control-group .wrap{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center}.cart-item-list .item .item-details .misc .control-group label{margin-right:15px}.cart-item-list .item .item-details .misc .control-group .control{height:38px;width:60px;text-align:center;line-height:38px}.cart-item-list .item .item-details .misc .remove,.cart-item-list .item .item-details .misc .towishlist{line-height:35px;margin-left:15px}.cart-item-list .item .error-message{color:#ff6472}.quantity{display:inline-block!important}.quantity label{margin-bottom:10px}.quantity button{width:40px;height:38px;font-size:16px;background:#fff;border:1px solid #c7c7c7;float:left;cursor:pointer}.quantity button.decrease{border-radius:3px 0 0 3px}.quantity button.increase{border-radius:0 3px 3px 0}.quantity.control-group .control{text-align:center;float:left;width:60px;height:38px;margin:0;border:1px solid #c7c7c7;border-right:none;border-left:none;border-radius:0}.quantity.control-group .control:focus{border-color:#c7c7c7}.coupon-container .discount-control .control-group{margin-top:20px}.coupon-container .discount-control .control-group .control{width:100%}.coupon-container .applied-coupon-details{margin-top:30px}.coupon-container .applied-coupon-details .right{float:right}.coupon-container .applied-coupon-details .right .icon{vertical-align:text-bottom;margin-bottom:1px;cursor:pointer}.order-summary h3{font-size:16px;margin-top:0}.order-summary .item-detail{margin-top:12px}.order-summary .item-detail label.right{float:right}.order-summary .payable-amount{margin-top:17px;border-top:1px solid #c7c7c7;padding-top:12px}.order-summary .payable-amount label{font-weight:700}.order-summary .payable-amount label.right{float:right}@media only screen and (max-width:815px){section.cart .cart-content{display:block}section.cart .cart-content .left-side{width:100%;float:none}section.cart .cart-content .left-side .misc-controls{position:relative;top:180px;margin-top:0}section.cart .cart-content .right-side{width:100%;padding-left:0;position:relative;top:-20px}}@media only screen and (max-width:600px){section.cart .cart-content .left-side .cart-item-list .item{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}section.cart .cart-content .left-side .cart-item-list .item .item-details{margin-top:10px}section.cart .cart-content .left-side .cart-item-list .item .item-details .misc{display:-webkit-box;display:flex;flex-wrap:wrap;line-height:40px}}@media only screen and (max-width:574px){section.cart .cart-content .left-side .misc-controls{display:block;top:160px}section.cart .cart-content .left-side .misc-controls div button{width:100%;margin-top:10px}section.cart .cart-content .left-side .misc-controls div a{margin-top:10px;width:100%;text-align:center}section.cart .cart-content .right-side{top:-100px}}.checkout-method-group .line-one{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center}.checkout-method-group .line-one .radio-container{padding-left:28px}.checkout-method-group .line-one .method-label{margin-top:4px}.checkout-method-group .line-two{margin-left:30px}.checkout-process{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;width:100%;margin-top:20px;margin-bottom:20px;font-size:16px;color:#242424}.checkout-process .col-main{width:70%;margin-right:5%}.checkout-process .col-main ul.checkout-steps{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:justify;justify-content:space-between;width:100%;padding-bottom:15px;border-bottom:1px solid #c7c7c7}.checkout-process .col-main ul.checkout-steps li{height:48px;display:-webkit-box;display:flex}.checkout-process .col-main ul.checkout-steps li .decorator{height:48px;width:48px;border-radius:50%;display:-webkit-inline-box;display:inline-flex;border:1px solid #c7c7c7;background-repeat:no-repeat;background-position:50%}.checkout-process .col-main ul.checkout-steps li .decorator.address-info{background-image:url(../images/address.svg)}.checkout-process .col-main ul.checkout-steps li .decorator.shipping{background-image:url(../images/shipping.svg)}.checkout-process .col-main ul.checkout-steps li .decorator.payment{background-image:url(../images/payment.svg)}.checkout-process .col-main ul.checkout-steps li .decorator.review{background-image:url(../images/finish.svg)}.checkout-process .col-main ul.checkout-steps li.completed{cursor:pointer}.checkout-process .col-main ul.checkout-steps li.completed .decorator{background-image:url(../images/complete.svg)}.checkout-process .col-main ul.checkout-steps li span{margin-left:7px;margin-top:auto;margin-bottom:auto}.checkout-process .col-main ul.checkout-steps li.active{color:#2650ef}.checkout-process .col-main ul.checkout-steps li.active .decorator{border:1px solid #2650ef}.checkout-process .col-main .step-content{padding-top:20px}.checkout-process .col-main .step-content .form-header{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between;width:100%;height:30px}.checkout-process .col-main .step-content .form-header .checkout-step-heading{font-size:24px;font-weight:700;float:left}.checkout-process .col-main .step-content .form-header .btn{float:right;font-size:14px}.checkout-process .col-main .step-content .form-container{border-bottom:1px solid #c7c7c7;padding-top:20px;padding-bottom:20px}.checkout-process .col-main .step-content .shipping-methods{font-size:16px}.checkout-process .col-main .step-content .shipping-methods .ship-method-carrier{margin-bottom:15px;font-weight:700}.checkout-process .col-main .step-content .payment-methods .radio-container{padding-left:28px}.checkout-process .col-main .step-content .payment-methods .control-info{margin-left:28px}.checkout-process .col-main .step-content .address-summary{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:start;justify-content:flex-start;-webkit-box-align:center;align-items:center;width:100%}.checkout-process .col-main .step-content .address-summary div.billing-address{margin-right:25%}.checkout-process .col-main .step-content .address-summary div.billing-address .horizontal-rule,.checkout-process .col-main .step-content .address-summary div.shipping-address .horizontal-rule{width:40px;background:#242424}.checkout-process .col-main .step-content .address-summary .label{width:10%}.checkout-process .col-main .step-content .address-summary .address-card-list{width:85%}.checkout-process .col-main .step-content .cart-item-list .item .row .title{width:100px;display:inline-block;color:#a5a5a5;font-weight:500;margin-bottom:10px}.checkout-process .col-main .step-content .cart-item-list .item .row .value{font-size:18px;font-weight:600}.checkout-process .col-main .step-content .order-description{display:inline-block;width:100%}.checkout-process .col-main .step-content .order-description .shipping{margin-bottom:25px}.checkout-process .col-main .step-content .order-description .decorator{height:48px;width:48px;border-radius:50%;border:1px solid #c7c7c7;vertical-align:middle;display:inline-block;text-align:center}.checkout-process .col-main .step-content .order-description .decorator .icon{margin-top:7px}.checkout-process .col-main .step-content .order-description .text{font-weight:600;vertical-align:middle;display:inline-block}.checkout-process .col-main .step-content .order-description .text .info{font-weight:500;margin-top:2px}.checkout-process .col-right{width:25%;padding-left:40px}@media only screen and (max-width:770px){.checkout-process .col-main{width:100%;padding-right:0}.checkout-process .col-main ul.checkout-steps{border-bottom:none;padding-bottom:0}.checkout-process .col-main ul.checkout-steps span{display:none}.checkout-process .col-main ul.checkout-steps .line{-webkit-box-flex:1;flex-grow:1;border-bottom:1px solid #c7c7c7;margin-left:5px;margin-right:5px}.checkout-process .step-content{padding-top:0}.checkout-process .step-content .control-group .control{width:100%}.checkout-process .col-right{display:none}}@media only screen and (max-width:480px){.checkout-process .col-main .step-content .address,.checkout-process .col-main .step-content .order-description{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.checkout-process .col-main .step-content .address .billing-address,.checkout-process .col-main .step-content .address .pull-left,.checkout-process .col-main .step-content .order-description .billing-address,.checkout-process .col-main .step-content .order-description .pull-left{width:100%!important}.checkout-process .col-main .step-content .address .pull-right,.checkout-process .col-main .step-content .address .shipping-address,.checkout-process .col-main .step-content .order-description .pull-right,.checkout-process .col-main .step-content .order-description .shipping-address{width:100%!important;margin-top:20px}}.attached-products-wrapper{margin-bottom:80px}.attached-products-wrapper .title{margin-bottom:40px;font-size:18px;color:#242424;text-align:center;position:relative}.attached-products-wrapper .title .border-bottom{border-bottom:1px solid hsla(0,0%,63.5%,.2);display:inline-block;width:100px;position:absolute;top:40px;left:50%;margin-left:-50px}.attached-products-wrapper .horizontal-rule{height:1px;background:#c7c7c7;width:148px;margin-bottom:24px;margin-left:auto;margin-right:auto}section.review .category-breadcrumbs{display:inline}section.review .review-layouter{display:-webkit-box;display:flex}section.review .review-layouter .product-info{max-width:25%}section.review .review-layouter .product-info .product-name{font-size:24px}section.review .review-layouter .product-info .product-image img{height:280px;width:280px}section.review .review-layouter .product-info .product-name a{color:#242424}section.review .review-layouter .product-info .product-price{margin-top:10px;word-break:break-all}section.review .review-layouter .product-info .product-price .pro-price{color:#ff6472}section.review .review-layouter .product-info .product-price .pro-price-not{margin-left:10px;font-size:16px;color:#a5a5a5}section.review .review-layouter .product-info .product-price .offer{margin-left:10px;font-size:16px}section.review .review-layouter .review-form{margin-left:20px;width:55%}section.review .review-layouter .review-form .heading{color:#242424;font-weight:600}section.review .review-layouter .review-form .heading .right{float:right;margin-top:-10px}section.review .review-layouter .review-form .star{font-size:23px;color:#d4d4d4;-webkit-transition:all .2s;transition:all .2s}section.review .review-layouter .review-form .star:before{content:"\2605"}section.review .review-layouter .review-form .control-group .control{width:100%}section.review .review-layouter .review-form .review-detail{height:150px;border:1px solid #b22222;margin-top:30px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}section.review .review-layouter .review-form .review-detail .rating-review{margin-top:40px;margin-left:20px;width:48%}section.review .review-layouter .review-form .review-detail .rating-review .avg-rating-count span{font-size:34px;text-align:center}section.review .review-layouter .review-form .review-detail .rating-calculate .progress-only{width:20px;border:1px solid #00f}section.review .review-layouter .ratings-reviews{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between}section.review .review-layouter .ratings-reviews .left-side{padding:40px 20px;width:50%}section.review .review-layouter .ratings-reviews .left-side .rate{font-size:34px}section.review .review-layouter .ratings-reviews .left-side .stars .icon{height:16px;width:16px}section.review .review-layouter .ratings-reviews .right-side{width:50%}section.review .review-layouter .ratings-reviews .right-side .rater{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;padding-top:5px;width:100%}section.review .review-layouter .ratings-reviews .right-side .rater .star-name{margin-right:5px;width:35px}section.review .review-layouter .ratings-reviews .right-side .rater .rate-number{width:15px}section.review .review-layouter .ratings-reviews .right-side .rater .percentage{width:50px;margin-right:10px}section.review .review-layouter .ratings-reviews .right-side .rater .percentage span{float:right;white-space:nowrap}section.review .review-layouter .ratings-reviews .right-side .rater .line-bar{height:4px;width:calc(100% - 100px);margin-right:5px;margin-left:5px;background:#d8d8d8}section.review .review-layouter .ratings-reviews .right-side .rater .line-bar .line-value{background-color:#0031f0}@media only screen and (max-width:770px){section.review .category-breadcrumbs{display:none}section.review .review-layouter{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}section.review .review-layouter .product-info{max-width:100%}section.review .review-layouter .product-info .product-image,section.review .review-layouter .product-info .product-name,section.review .review-layouter .product-info .product-price{max-width:280px;margin-left:auto;margin-right:auto;word-break:break-all}section.review .review-layouter .review-form{width:100%;margin-left:0}section.review .review-layouter .review-form .heading .right{margin-top:50px}section.review .review-layouter .review-form .ratings-reviews{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;width:100%}section.review .review-layouter .review-form .ratings-reviews .left-side{width:100%;padding:0 0 40px;margin-top:-30px}section.review .review-layouter .review-form .ratings-reviews .right-side{width:100%}section.review .review-layouter .review-form .ratings-reviews .right-side .rater .percentage{margin-right:0}}.auth-content{padding-top:5%;padding-bottom:5%}.auth-content .sign-up-text{margin-bottom:2%;margin-left:auto;margin-right:auto;font-size:18px;color:#a5a5a5;text-align:center}.auth-content .login-form{margin-left:auto;margin-right:auto;display:-webkit-box;display:flex;border:1px solid #c7c7c7;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;max-width:500px;min-width:320px;padding:25px}.auth-content .login-form .login-text{font-size:24px;font-weight:600;margin-bottom:30px}.auth-content .login-form .control-group{margin-bottom:15px!important}.auth-content .login-form .control-group .control{width:100%!important}.auth-content .login-form .forgot-password-link{font-size:17px;color:#0031f0;margin-bottom:5%}.auth-content .login-form .signup-confirm{margin-bottom:5%}.auth-content .login-form .btn-primary{width:100%;text-transform:uppercase}.account-content{width:100%;-webkit-box-orient:horizontal;flex-direction:row;margin-top:5.5%;margin-bottom:5.5%}.account-content,.account-content .sidebar{display:-webkit-box;display:flex;-webkit-box-direction:normal}.account-content .sidebar{-webkit-box-orient:vertical;flex-direction:column;align-content:center;-webkit-box-pack:start;justify-content:flex-start;width:20%;height:100%}.account-content .menu-block{margin-bottom:30px}.account-content .menu-block:last-child{margin-bottom:0}.account-content .menu-block .menu-block-title{padding-bottom:10px;font-size:18px}.account-content .menu-block .menu-block-title .right{display:none}.account-content .menu-block .menubar{border:1px solid #c7c7c7;color:#a5a5a5;position:relative}.account-content .menu-block .menubar li{width:95%;height:50px;margin-left:5%;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:start;justify-content:flex-start;-webkit-box-align:center;align-items:center;border-bottom:1px solid #c7c7c7;text-align:center}.account-content .menu-block .menubar li a{color:#5e5e5e;width:100%;text-align:left}.account-content .menu-block .menubar li .icon{display:none;position:absolute;right:12px}.account-content .menu-block .menubar li:first-child{border-top:none}.account-content .menu-block .menubar li:last-child{border-bottom:none}.account-content .menu-block .menubar li.active a{color:#0031f0}.account-content .menu-block .menubar li.active .icon{display:inline-block}.account-content .account-layout{margin-left:40px;width:80%}.account-content .account-layout .account-head .back-icon,.account-content .account-layout .responsive-empty{display:none}.account-table-content{color:#242424;margin-top:1.4%}.account-table-content table{width:100%}.account-table-content table tbody tr{height:45px}.account-table-content table tbody tr td{width:250px}.address-holder{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:start;justify-content:flex-start;-webkit-box-align:start;align-items:flex-start;flex-wrap:wrap;width:100%}.address-card{width:260px;border:1px solid #c7c7c7;padding:15px;margin-right:15px;margin-bottom:15px}.address-card .control-group{width:15px;height:15px;margin-top:10px}.address-card .details{font-weight:lighter}.address-card .details span{display:block}.address-card .details .control-links{width:90%;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;flex-wrap:wrap;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center}.address-card .details .control-links .btn{height:30px}.edit-form{display:-webkit-box;display:flex;border:1px solid #c7c7c7;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;min-height:345px;padding:25px}@media only screen and (max-width:770px){.account-content{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.account-content .sidebar{width:100%}.account-content .sidebar .menu-block .menu-block-title{height:50px;padding-top:13px;border-bottom:1px solid #c7c7c7;border-top:1px solid #c7c7c7}.account-content .sidebar .menu-block .menu-block-title .right{display:block;float:right;align-self:center}.account-content .sidebar .menu-block .menubar{border:0;display:none}.account-content .sidebar .menu-block .menubar>li{margin-left:0;width:100%}.account-content .sidebar .menu-block .menubar>li .icon{right:0}.account-content .sidebar .menu-block .menubar>li:last-child{border-bottom:1px solid #c7c7c7}.account-content .account-layout{margin-left:0;margin-top:20px;width:100%}.account-content .account-layout .account-head{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;border-bottom:1px solid #c7c7c7;border-top:1px solid #c7c7c7;height:50px;margin-top:10px}.account-content .account-layout .account-head .account-action{margin-top:12px;margin-left:15px}.account-content .account-layout .account-head .back-icon{display:block}.account-content .account-layout .account-head span{margin-top:13px;font-size:18px}.account-content .account-layout .account-head .horizontal-rule{display:none}.account-content .account-layout .account-table-content{margin-top:2%}.account-content .account-layout .account-table-content table tbody tr{height:70px}.account-content .account-layout .account-table-content table tbody tr td{display:block}.account-content .account-layout .account-table-content .address-holder{-webkit-box-pack:center;justify-content:center}.account-content .account-items-list,.account-content .edit-form{margin-top:20px}.account-content .account-items-list .responsive-empty,.account-content .edit-form .responsive-empty{display:block}.account-content .control-group .control{width:100%}}.sale-container{color:#5e5e5e}.sale-container .sale-section .secton-title{font-size:18px;color:#8e8e8e;padding:15px 0;border-bottom:1px solid #c7c7c7}.sale-container .sale-section .section-content{display:block;padding:20px 0;border-bottom:1px solid #e8e8e8}.sale-container .sale-section .section-content .row{display:block;padding:7px 0}.sale-container .sale-section .section-content .row .title{width:200px;letter-spacing:-.26px;display:inline-block}.sale-container .sale-section .section-content .row .value{letter-spacing:-.26px;display:inline-block}.sale-container .sale-section .section-content .order-box-container{display:inline-block;width:100%}.sale-container .sale-section .section-content .order-box-container .box{float:left;width:25%}.sale-container .sale-section .section-content .order-box-container .box .box-title{padding:10px 0;font-size:18px;color:#8e8e8e}.sale-container .sale-section .section-content .order-box-container .box .box-content{color:#3a3a3a;padding-right:10px}.sale-container .sale-section .section-content .qty-row{display:block}.sale-container .totals{padding-top:20px;display:inline-block;width:100%;border-top:1px solid #e8e8e8}.sale-container .totals .sale-summary{height:130px;float:right;border-collapse:collapse}.sale-container .totals .sale-summary tr td{padding:5px 8px;width:auto;color:#3a3a3a}.sale-container .totals .sale-summary tr.bold{font-weight:600;font-size:15px}.sale-container .totals .sale-summary tr.border td{border-bottom:1px solid #c7c7c7}@media only screen and (max-width:770px){.sale-container .sale-section .section-content{border-bottom:none;padding:10px 0}.sale-container .sale-section .section-content .row{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.sale-container .sale-section .section-content .row .title{line-height:20px}.sale-container .sale-section .section-content .totals{border-top:none}.sale-container .sale-section .section-content .totals .sale-summary{width:100%}.sale-container .sale-section .section-content .totals .sale-summary tr td:nth-child(2){display:none}.sale-container .sale-section .section-content .order-box-container{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.sale-container .sale-section .section-content .order-box-container .box{width:100%;margin:10px auto}.sale-container .sale-section .section-content .qty-row{display:inline}}.verify-account{text-align:center;background:#204d74;width:200px;margin-right:auto;margin-left:auto;border-radius:4px}.verify-account a{color:#fff!important}.cp-spinner{position:absolute;left:calc(50% - 24px);margin-top:calc(40% - 24px)}@media only screen and (max-width:720px){.cp-spinner{left:50%;margin-left:-24px;top:50%;margin-top:-24px}}@media only screen and (max-width:720px){.error-container .wrapper{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;flex-direction:column-reverse!important;margin:10px 0 20px!important;-webkit-box-align:start!important;align-items:start!important;height:100%!important}}@media only screen and (max-width:770px){.table table{width:100%}.table table thead{display:none}.table table tbody tr td:before{content:attr(data-value);font-size:15px;font-weight:600;display:inline-block;width:120px}.table table tbody td{border-bottom:none!important;display:block;width:100%!important}.table table tbody td div{position:relative;left:100px;top:-20px}.table table tbody tr{border:1px solid #c7c7c7}}.show-wishlist{z-index:-1!important}.filter-row-one .dropdown-filters{position:relative!important;right:1px!important}@media only screen and (max-width:770px){.table .grid-container{margin-top:10px;overflow-x:hidden}.table .grid-container .filter-row-one{display:block}.table .grid-container .filter-row-one .dropdown-filters{margin-top:10px}}.rtl{direction:rtl}.rtl .header .header-top div.left-content ul.logo-container{margin-right:0;margin-left:12px}.rtl .header .header-top div.left-content ul.search-container li.search-group .search-field{border:2px solid #c7c7c7;padding-right:12px;padding-left:0;border-radius:2px;border-top-left-radius:0;border-bottom-left-radius:0}.rtl .header .header-top div.left-content ul.search-container li.search-group .search-icon-wrapper{border:2px solid #c7c7c7;border-right:none;border-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0}.rtl .header .header-top div.right-content .right-content-menu>li{border-right:2px solid #c7c7c7;padding:0 15px}.rtl .header .header-top div.right-content .right-content-menu>li:last-child{padding-left:0}.rtl .header .header-top div.right-content .right-content-menu>li:first-child{border-right:0;padding-right:0}.rtl .header .header-top div.right-content .right-content-menu .cart-dropdown-container .dropdown-list{left:0;right:unset!important}.rtl .header .header-top div.right-content .right-content-menu .cart-dropdown-container .count{display:inline-block}.rtl .header .header-top div.right-content .right-content-menu .account,.rtl .header .header-top div.right-content .right-content-menu .currency{right:unset;left:0}.rtl .header .header-top div.right-content .right-content-menu .guest div{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between}.rtl .header .header-bottom .nav>li{float:right;margin-right:0;margin-left:1px}.rtl .header .header-bottom .nav a{padding:.8em .5em .8em .3em!important}.rtl .header .header-bottom .nav li a>.icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rtl .header .header-bottom .nav>li li:hover>ul{left:unset!important;right:100%!important}.rtl .header .header-bottom .nav ul{left:99999em}.rtl .header .search-responsive .search-content .right{float:left}.rtl .dropdown-list{text-align:right}.rtl .dropdown-list.bottom-right{left:0;right:auto}@media only screen and (max-width:720px){.rtl .header .header-top div.right-content .menu-box{margin-left:0;margin-right:5px}.rtl .header .header-top div.right-content .right-content-menu .account{position:absolute;left:0;right:auto}.rtl .header .header-top div.right-content .right-content-menu>li{padding:0;border:0}.rtl .header .header-top div.right-content .search-box{margin-left:5px}.rtl .header .header-bottom .nav>li{float:none}.rtl .header .header-bottom .nav li>.icon{float:left;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rtl .header .header-bottom .icon.icon-arrow-down{margin-left:5px}}.rtl section.slider-block div.slider-content div.slider-control{left:2%;right:auto}.rtl section.slider-block div.slider-content div.slider-control .slider-left{float:left}.rtl section.slider-block div.slider-content div.slider-control .slider-right{margin-left:5px}@media only screen and (max-width:720px){.rtl section.slider-block div.slider-content div.slider-control{left:0}}.rtl .main-container-wrapper .product-card .sticker{left:auto;right:20px}.rtl .main-container-wrapper .product-card .cart-wish-wrap .addtocart{margin-right:0;margin-left:10px}.rtl section.product-detail div.layouter .form-container div.product-image-group{margin-right:0;margin-left:30px}.rtl section.product-detail div.layouter .form-container div.product-image-group .add-to-buttons{float:left!important}.rtl section.product-detail div.layouter .form-container div .thumb-list{margin-left:4px;margin-right:0}.rtl section.product-detail div.layouter .form-container .details .accordian .accordian-header{padding:20px 0 20px 15px}.rtl section.product-detail div.layouter .form-container .details .accordian .accordian-header .icon{float:left}.rtl section.product-detail div.layouter .form-container .details .accordian .accordian-header .expand-icon{margin-left:10px}.rtl section.product-detail div.layouter .form-container .details .full-specifications td:first-child{padding-right:0;padding-left:40px}.rtl section.product-detail div.layouter .form-container .details .product-ratings .total-reviews{margin-left:0;margin-right:15px}@media only screen and (max-width:720px){.rtl section.product-detail div.layouter .form-container div.product-image-group{margin-right:0;margin-left:0}}.rtl .main .category-container .layered-filter-wrapper,.rtl .main .category-container .responsive-layred-filter{padding-right:0;padding-left:20px}.rtl .main .top-toolbar .pager{float:left}.rtl .main .top-toolbar .pager .view-mode{margin-right:0;margin-left:20px}.rtl .main .top-toolbar .pager .sorter{margin-right:0;margin-left:10px}.rtl .main .top-toolbar .pager label{margin-right:0;margin-left:5px}.rtl .main .top-toolbar .page-info{float:right}.rtl section.review .review-layouter .review-form{margin-left:0;margin-right:20px}.rtl section.review .review-layouter .review-form .heading .right{float:left}.rtl section.review .review-layouter .review-form .ratings-reviews .right-side .rater .star-name{margin-right:0;margin-left:5px}@media only screen and (max-width:770px){.rtl section.review .review-layouter .review-form{margin-right:0}}.rtl section.cart .cart-content .left-side{width:70%;float:right}.rtl section.cart .cart-content .left-side .misc-controls a.link{margin-left:15px;margin-right:0}.rtl section.cart .cart-content .right-side{width:30%;padding-right:40px;padding-left:0}.rtl .order-summary .item-detail label.right,.rtl .payable-amount label.right{float:left}.rtl .item div{margin-left:15px;margin-right:0!important}.rtl .cart-item-list .item .item-details .misc div.qty-text{margin-right:0;margin-left:10px}.rtl .cart-item-list .item .item-details .misc .remove,.rtl .cart-item-list .item .item-details .misc input.box{margin-right:0;margin-left:30px}.rtl .cart-item-list .item .item-details .misc .control-group label{margin-left:15px;margin-right:0}@media only screen and (max-width:770px){.rtl section.cart .cart-content .left-side{width:100%;float:none}.rtl section.cart .cart-content .left-side .misc-controls div button{margin-right:0}.rtl section.cart .cart-content .right-side{width:100%;padding-right:0}}.rtl .checkout-process .col-right{padding-left:0;padding-right:40px}.rtl .checkout-process .col-main{padding-left:40px;padding-right:0}.rtl .checkout-process .col-main ul.checkout-steps li span{margin-right:7px;margin-left:0}.rtl .checkout-process .col-main .step-content .form-header h1{float:right}.rtl .checkout-process .col-main .step-content .form-header .btn{float:left}.rtl .checkout-process .col-main .step-content .payment-methods .control-info{margin-right:28px;margin-left:0}.rtl .checkout-process .col-main .step-content .address .billing-address,.rtl .checkout-process .col-main .step-content .address .pull-left,.rtl .checkout-process .col-main .step-content .order-description .billing-address,.rtl .checkout-process .col-main .step-content .order-description .pull-left{float:right!important}.rtl .checkout-process .col-main .step-content .address .pull-right,.rtl .checkout-process .col-main .step-content .address .shipping-address,.rtl .checkout-process .col-main .step-content .order-description .pull-right,.rtl .checkout-process .col-main .step-content .order-description .shipping-address{float:left!important}.rtl .checkbox,.rtl .radio{margin:10px 0 5px 5px}.rtl .radio .radio-view{margin-left:5px;margin-right:0}.rtl .radio input{right:0;left:auto}@media only screen and (max-width:770px){.rtl .checkout-process .col-main{padding-left:0}}.rtl .account-content .account-layout{margin-left:0;margin-right:40px}.rtl .account-content .menu-block .menubar li{margin-left:0;margin-right:5%}.rtl .account-content .menu-block .menubar li a{text-align:right}.rtl .account-content .menu-block .menubar li .icon{right:unset;left:12px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.rtl .account-head .account-action{float:left}.rtl .account-item-card .media-info .info{margin-right:20px;margin-left:0}.rtl .account-item-card .operations a span{float:left}.rtl .table table{text-align:right}.rtl .sale-container .totals .sale-summary{float:left}.rtl .sale-container .sale-section .section-content .order-box-container{display:-webkit-box;display:flex}@media (max-width:770px){.rtl .account-content .account-layout{margin-right:0}.rtl .account-content .account-layout .account-head .account-action{margin-left:0}.rtl .account-content .sidebar .menu-block .menu-block-title .right{float:left}.rtl .account-content .sidebar .menu-block .menubar>li{margin-right:0}}.rtl .footer .footer-content .footer-list-container .list-container .list-group li span.icon{margin-left:5px;margin-right:0}@media (max-width:720px){.rtl .footer{padding-right:15px;padding-left:10%}.rtl .footer .footer-list-container{padding-right:0!important}}.rtl .cp-spinner{position:absolute;right:calc(50% - 24px);margin-top:calc(40% - 24px)}@media only screen and (max-width:720px){.rtl .cp-spinner{right:50%;margin-right:-24px;left:auto}}.rtl .product-list .product-card .product-information{padding-left:0;padding-right:30px;float:left}.rtl .zoom-image-direction{left:0;right:476px!important}.banner-container{width:100%;float:left;padding:0 18px;margin-bottom:40px}.banner-container .left-banner{padding-right:20px;width:60%;float:left}.banner-container .left-banner img{width:100%}.banner-container .right-banner{padding-left:20px;width:40%;float:left}.banner-container .right-banner img{max-width:100%}.banner-container .right-banner img:first-child{padding-bottom:20px;display:block}.banner-container .right-banner img:last-child{padding-top:20px;display:block}@media (max-width:720px){.banner-container .left-banner{padding-right:0;width:100%}.banner-container .right-banner{padding-left:0;width:100%}.banner-container .right-banner img:first-child{padding-bottom:0;padding-top:25px}.banner-container .right-banner img:last-child{padding-top:25px}}.static-container{display:block;width:100%;padding:10px;margin-left:auto;margin-right:auto}.static-container.one-column{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:start;justify-content:flex-start;-webkit-box-align:start;align-items:flex-start}.static-container.two-column{display:grid;grid-template-columns:48% 48%;grid-column-gap:4%}.static-container.three-column{display:grid;grid-template-columns:30% 30% 30%;grid-column-gap:4%}.item-options{font-size:14px;font-weight:200}.item-options b{font-weight:500} \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/1.png b/packages/Webkul/Shop/publishable/assets/images/1.png new file mode 100755 index 0000000000000000000000000000000000000000..ea290ebfccdd93c490d0280ce72a129daaafd1cd GIT binary patch literal 871243 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�{2pt>|_g+$$ly?t<3ocnFpcJ)FK4%g%Cz z@`bhrWCId6`%Lpqk4n@}fKH!_C3tV<3Xc~j@TBAMxnn#(+zj_*=~}0U z_r;478&7h9U$Y@?lMRA4pb^J6pkr^*9mTsHUcJT3^aq~mo@Fy7f+44m^Kz$Va;+zC z_XM1JRI=%r(dP|h;d*xE5ZmHOaO{bD-!2RIo-X6JYv^GgV%8ayN`TM6gMO0xX|JDj zA)N8(y!fUB_X`i&J-d6+jyK=;;+kF=d-wa7mN$91MZBra&q~U?UF}r^47hDKmFT6j zjA(L1e}Ku+U}&?xI>c_DTfv*F;LY`WOCo9y2K$1e!N+(}1G09EcfS3h9S_)(%Al9FJfq&6hY@st~*@R=&kDVMJwk0O~MBSit2pmpY!_Z_Z(v14Be<+P-B7cqlgP=edC3GRzJFDB;lgptIQDVXTdUA zjaR|7GypC$yl^K6fdpUlgO}H6d@J7eMU;T6b zz(2HsPaiK@F5G=HhHL*|eO>tarUCjy6IGq9#4ApKQ@RXwni70+!ausg`OUG`aE7Y$ zkb>9lUI18;bm|LFopB6bw{wnxf4KX;ExdBeB{F6nKJHCx_e$bk7TERixZpyrODOt& z^YZ!hl1ro858H?L$H#A5%>zhvsb4j z3h8=%+Z};cfoHb+DxSWEzuWv~1FL%XZLeth*}wUVj-$DX+PTXCj8t_xAV9VA!&U ztXb~o9kaU_P(o{v*J9tI>-0p*-X4#VpV%-NPUm(MwY@>G??Juc~; zp4Z>xPFNq}=vfkif2~P=? z{L7%^cTPSkE^ed+b-8IEydpTDSf~54G7RdJnrLuS4tcm-^rAWBkL1 zYxf3q1i?UTrjH+=?V9CO^g|Y%-yM(ak>Q*+B_82jb0CinrDy0<_!J*ygENEvc!3=J zVv~4xCI`@aWDh=Gq8*K^>>CgIe|OrF-&GOeD znM^Oj+qQfs9>6DrqU(JF>1{C>pC+$5L)(^BMH_tWX0%zvcx#Eqi=GSkn4P?M+WhFC(NC|B~f#2}bw#9sXyj(g~?x{BlozSq<@7$*oZwi_L%>V!lw z^oNP?l9*|8C3cKJAtVVhdK7eO=a;?&c(|*>=#NvTa8*EC0s(7^=oEhR*Vl~)j4&sh z5E-HCfJ^e-YUkkAS-8Q4Vok_2xT?NfpG^DBiH~>q5nT%qAp=j&c_YT~AwTd=QbM7~mya{c|vLrmKA%I=+GtN~6K95Lcnl7RFD0=&$Hk z8#to(B)Ags<6N{k_#b1&7ljkxBpAzN(76qAZt}czc;^g$mKYx#U4tJUfDe`JS=<@A zimzmcW{C^D(0ydZk>^mV2iI$T`=!gr@HIX4ASV%GxDqG4+013@5nr~(_P77^_j@`$ zx7MJn;6QSsQvZ9qYW=WOSyStIO$uv)Q-!iH8!)|LgDm?(VC9_dnnL z`CtFrySL5GOgC5e@H;vnk7xH zM>Z{&VGF%%<ZyDC45N_Zd(m$TvX9A~ zJ+V|gZ=77--z?C-}ji z#6vh+k`u>fWBBQz&R+0%_u@nAb6f79poOm>zrl?sVxpON`2aZmH(!dc9`u}Fjn=~l z36o^@Om-cgY(m9tdTV;WjE+ZlPn#)!+imx6Uc9~g+0%!88aUSPn+7JfyGwk-&(em^ z?zhKz13z?G*UEPBl}?lU1_Z;2owLIR;a$g@O^8*0e(A9GrZXq8`V_Kn_J$;8O9b#{FF<++csd4lh|zO~iIAt+($rOFGE zJ2*%(k|o%+(GR5oQ+)()7P;fy4(TK(b^`Y4Spuq{g>uY^sNdxy?D~veUBZRarATI@ zmekgpeqE;wk{b%44mwb%-7%SSUcE0{@3gwrLol`bcz!!-wKGy4atOc5!vrEGazkb0a1MofIa@t&j5(I&vUjJ9oYzKZ^gC_MQq!*2T zlZmp?dTr1FAMK$;58&yXc3`7_*ZOY*v1-tHi6*^;-*GHxgs;Trr`bo>CFYV1^f0*T zL%8_n2*`uI;FBbZgBU6k4}Acc9i3a4oF4w18BjRmCa0Ht1c$D@{OJ#93D0Z`KmV^ZH5&>+Lnwxc-VT;5?uRL>X6-d)$ZGpUAMo!=$gRry4U?G9tzoB zv~_P5B*Kmy`gS|EUtK?TAehrb`aj;28ya*UAFOMg4bHyfXS)^HyZd*)`{wSOW?ug0 zfBBzkaRwr0e(?-HIYxZA34K=hh+|(-ZcUJozPUIr-1xRULe~rHa07jpV!j_?SdH($F&5LjE ze*fG5+H#+lCt*n@TkD&=`5}WD&l5nJAK;Jpg5w+U_w?)BbSwE&WHhlEZ|B?6hmdgY zqURi+dNr6Im`wza?i<{qM}p37=+tyFL=0x|aK0?KuGP$$&YhT`0-s@tigQ@H*wjhq zr|;2+Pm9^<1G}IRaN{#H;>$Mkb?Z+%A4~-kZxwwQ$SS)W4DjgRY`L21!)y4&Co)~E z3Xku*1N5SqdDqUYwsyyt?D>WoFJ6u}9=JTW-Qi}9F+{uyT_5c0>SOEV4eBkK(tkX{ zM{?y?9`zEPXOCMu`{DDuZ=RolD_(9(&FFdlDqXMDqXwGqOL`3oW#Ar29bFN-_;=IP_mTD9>ARPxZb5*Nm2dE@dM z=c=s!d{#9S{$D<2Kww$J<=bXkftv5Eo;J**yLb%yw*M?7JKpFhCxI4B-K~#)V5m-y zfeNCKF^h2&-)zCI#SFrs2pGfo{ocqF#SxA!44Tp*^u`QEW~qSnNP;Yc7a(H(S?^|T z>={*!sBjF_jS*mGq+q1bV7h>byN%xQlE<#CZSB(EPf0W7I|)&a8ypw40V7yPAZK(& z@f8Z8e|?-pjzo^q?>xHtL&sp$hjN7Gpt|vg(M{R=o)d_dcy{4290CX@PTFteT|wmx zFb?d&AKr&I+UQ@qQ+nbt*=Qrl@i4_nzPnzZU=kB~GZgLNG`Mwv=JBQzb+fht7}S2V^9PJ zeJDexHnmzic=n=a+_|ygJ(j|+VI!keS7!nyYIH==i_wK4DiQr6WG3aakl8Y28NFwKT9`m ziF@52o<~o1W?6#HC28m~;CWQSybaw;5^(F<^#CvD#BND$fxKIruuPKpGW{H}BQSm|Vj(uJUH&+X_j+s?;ImOUV4me?*17aTHH_(<@sK@~pgW4hb%>sQUZ zg`b&o0SMmUUV|>?aqNs9AG_tBHfc~FCkd{DuBl6>H!xy9@s2Jk$3`ULBtVy&xvI|% znx>n_KJ{&YN8gGvgKN3Sm+=d4`DVIxKYg_m!<%n^d-v-5-^@R?SKr-l{^|d^d(pYi zq6L2=ZnQn_&4udg`}nAn)Ln@#9IIMVn@qDSeq-k(MI3B&Y3D4us=cJ%F&)6;40&zQ z%*QNVcEMU=ae|x|h^spu25*TFA2pq1XY3|ElSB3KRN?>GFaBX!hu_U-u|4`^8#8u#{MPZEuIc~z z%a$J`N^eGc)siR!$S?CN2HbSU+X}@`GM%nv7cYCsO6Wi<{XN@^J?`y@u1Cb^^BQxr z#E|l)M#+;MG~9_f>!Q<{s{Z0xN%xCacmMotYk2RaH;oY=rcd7fmgUd?#+?TI@JO~@ zBRjmpOY+2fx?={LK0=M+Y&*gDhfekc=Zgn$CBw^?tB=!UrUQMgzLPps)aj$nkqg~C zxzlwW|J|M1AS?jq0oCM{uT$6g(Lk;Nv!jl|!Pe-)F+lWo1Jm$UpS%_L!rOKA&~KoM zX7t%tcY2bKQ4i1AB^_V^ftwy*i9Ma>8?_lO;m*FGW>Nv)TypK`m6#rkD(Dj)%4E=Q z6Kk%6r7%dFJew8ZIn&yQ5Mm1YA*;|i4odc{ zT(eskeT?t~q%#X~MmnBam)K#-rsHEYgpT1-fFoSro3byWW6ThP;K5{l>$4VP9>Neq zK|Jhp0%8p-l34;#81EFYOP4Z%v7nS?paJ(cYQTvK9$X2m?;S(1lDtO`CR2>v2BbOB z#6Sq}8hKlD43=b_aqoeUU^wPT7R=+RL~zbA-W-MOcQi0Q0S6D23A}U4QHGj9aWBIg)TE{6X6?w|hA(cM=M)9~s)N?#-_-n8~rvw}}bB7%^; zddk^b*3K-R1dr3#L!hJa>?Uw@E88i7z_+js`f(&2Cr4F_@vMUdjGeEtogUs6gun&| zzwu7-+p)x&eLQa#&Oq?n-}k`QzxwmLzxiMPOKXeW!ap-abB4EebnPV1c+Zh>lxMI= zo{sU%8njpS|4jkzZG7e2wsy8UoF&HDk5~O|tri#UIc)!3vqNC9U$Yf_!*r(e5@HYE zEeVO7FAL6(O778T7BYZi;+APNF|e7bdV{lpqb-vTOx!#EDDZ3lx)))5^X>DyuiKW& z+H`M-dzY@hDX7`rsA|Vwgcm;Oi*7s&=H-9s79YfC7)127dTa#0=uk z^&^n$QxQjE_=dD{$zJUz=@AzWJ%+a-`ex1aHJP#p0Bv+JpDd1_eWPQTZF$v zJOlTV_w>5o`uTLX zuo|arZIXwM$&WmJ=HqUCvpf3C!JnkG`qQ@?o?uUo=gtsd^a0!NHLBj7qMR1F?~W&) z^iR@@PPE|P24NvC58;F8(w4kUZ*KO3X1Y{;Z8zu+F@r8NjFt}gDKQOA>;zAA%I_-2 zM;*W8H<>LS2BV{!{BQYSZL#9ye_}IRILSL6i$RL@==c=L$5=F=T#9c9BT}Q_?fWRV z*Irr!Qr$jo9jI$mD+zV1oHde%C_@SSmRyqxTGp`hNI95>|iTg1^ zjxEQW0iScH=|zKIwhGc)Ix(X<{FG!FjUD_6e0@{eit}LjTqExN&KX?>1Yb!KgWGIe z_`(zRGs1ogf(LiBkYoJsk2&LkYm|9guhi$^`=S5H{}?bMMJF6D19u%v=c&QX_IAt| zmjHC#dA!qi=vHnHwf@KYn@;?sGe*@X5J+O-2T$@IUsoTT8=ZaY?{XSsrjYe!&HKp- zO;=HVlRcczX!YD;oqq0G2GT|F;LA~M;LVjlP8EmO6yD zTjoC{y7<#8a$5?q{Woi4297_#Grr4C1bFZIfBnsWz5B(l|NY(1OHy8ysL~(TV%z8z zWa$Au8r=S2!OKtbza78G*L?f@#f@k2aRW-gvajk0UtxY^5-y*W=r{Vvrb=e&L|+nR zirC@sFcZr*e<*3P+{2sFTy%beSV$o(*?1V|y;<^(JqUspw-p058ZOv%Qrn};-?Srz z1pR3b7aEXAT=+A3;Czq=Z~9u-d;$Ias#!|AL(nre@!9SxCXaMcU4I(@hTCipz17EA zI#re7zf=82EFG7~nLN<;1hV+7a-X9w`Jt-QdomDs4%`#`fx2{7o7q?20+&F;caz&} z4KE?EdgSTw_(D3y&#;9fmt%kEH(;6H%|1}X%Ne-1!yt)&zisxO*GIE|efZ3>xb+RU z8-kreNj|N~gxPl&;07Nu^jU1tM?7ZOSFAuYd)2?sRTi{4fKHOP!7V*j*u7+O+Z(2H z@YuPMOj~E^V|`XfECNJQ=m=i=TQZ`5LF@Y-8l^9mG`w#6GBWtpul`jp zoM_9sc4v5aKU-@3^0(~`{Qax)k?{M_c8wqMZ}5H9ntv?Y8%AU2(QE!V9q5nmfj|9~ zsFB&UJz_RF6a$w_L<2l(GJkUUbnVbXXW0umj^CZXigs5lJ^tQ+=1ds6rain?>ep{@ z6u9`~7vOemi^^M*%x{{#J`-a4<`fRx(d9&IJh4=uHOirbLo3V z3}*BlLpg&Av~A`gX70^E(R>XkuGt@W!-bTMn#l)$F5O>{i03OI!l8q^HqpJoM{=^% z#9bBpWqLwQBKq?C7tLt>wpR$Zw4vFP4{W0cdhY%Brd!^vCtiP5uZf33PLN0^C2z@$ zP~LW%aSxDm&cMzN16ph}USQ!+INKwy!>d>_7;rc<0SPxg3QpuB;q_#+eTeY|0_021 zf!b~2THO89zx>PH$EUx%`}KeL>$}$l#XWHi*@`~2J2I7QPJzZdm+*&O+^TOMT3Zd- zerP&B1!;$hwjcs)57_ZvobkLgIk=VIohM02-_tSugygYZ$wBy&d;ZDW*6wwg%=N`C z$eG9CXVeiC&3Xw621x;({=h*$?<{>F<9-X=ZS!y(cI_=wa0}fm$>CQ6`JA|Ob|}C< zHY=d;b9CL-Wpsuw@xlsa59EcPR|vmtZz%f4XT#wNyhry*A-vF7*(_JIlc};`LVk|x zgAPo0(N$Ss56~a}O=w*|ayj)SZd%ZJdMD8*Keo65fNOo|I)6VrC3(T-W9YzQP~S=I z$anoV$ZOWtAj2)``w!c0FF5bg>2H7Y&r2+~V+H<@A;>v**65@E@ufZtjL6?42tMCP zoUGyRfgtuT@=Hwd9$s_-zRuC@*?Vv;gE)5|`CZE;(2)K1hpx>^Mz4XO>*RDL(zt;a zRUCdgxCZT;aZWsZ?)+pt1)FT}6#rKGz2u;_iv!^a!DGj3G97~Z1~L3WZPeWid$`h1 zaT(4V`~+LSZ|NfakA5HPUPCpxf6+s{k6OwQU7y1* z8_bD%$n9xMOYX&-{w7Omq6nI(!qPWJEugOF>lea$UpKk?Te4O7`-hnZ*^68LRZf5$#J-G89Xqk?M&!?DD zeUlCR7uv@QFv9WjOZvgXvcP`?DLgR2d}8P)jQz)TsI=m!6&-bwrja!OP{ao*=RsNly)pnYuO4hQ&C4vB_> zc^K^@`I^(L5*W&G4_COM1r4luqx()?iY@rU74sczWZv&$y4nODB(+JLA?9>zxzM$9^^b;-#xke z?#+*PKX2Cean8$(@1uf02O2d?1gvq?&J4(_c6OKzN6(fjN&3R`ely39zx-+r@3UT9 zL1)a^2z(EN2Uj?oRoRObk|!rs7wN#!J9cWr_{~tVsdR(05-jk^R%!2ATbcW~`@4Vm zhr3_@?f-W7t3Ul!FD3}5V3VDq4IJ4}r`NAU5Z|50qXoe(9zK=;cm6jm4=^w_gCr5e ztN6 zO|DVguVhpwn}JQ2GTD5l*%ADzVS4tU;45MN-M8P~eb=n?*Iz#^>3zI)w73u!{iSzR z_gfOR+lBFjEZBk_9G*QpFRqX%-0xN`5?{vy3Ac9dN~*V(w@c*X?QBpWJG|R^&Tw6z ztNs`9i+!hByH4lTS0vN3)6OkHJT)UDV2UC0k#LDG z0;211q6^kR8@%X`jrxA~(yo*!8Zss8}(c>X&a%=Yrt1`+ss{7AU)5qto=I))>>41^chqYHZ^yv9{zPUHGCc1*hBb0AKBLut}hJXepa`r0>uRw=|5;?e`{8f(=*r zk;CO9@ROe;JoLDz&c5sO*w*1STS5c7Q)PXTXTM1keEy^>>w_%#J_9oAslRMs$uFq4 zb)&(1)y(Ub0@dojefN61CV+O?@aN4O^E=|5HRoGe(RDgT`L^vSK4!=7x0YAybhyMi ztfT3~W&CzWX|h0P#a%FWpgf4nK7RSLUZjM6OOvAG#rtT(%dGwLFCO=%yKE@RHn67n z6$vx@!!x{sEB=rL`*3Z#R9$Sk?m(fBYnicJQg z1VSE*A^pUAIKY*iT=9u~=nlJ9XEV+OdNS*Jr{;^{N4DY>4dp+kL*jM)@E<8QyG=lVXqd_@2i9BE_bNO z_=sWv4z2a$++szvDD3g%3DgD+d~G^Xz1^vfAEWWcJ2aoZNB!{4cbvrFN&sdk0Ve=R zU&1B0DSk*UH;D)Z4-h#c3BDIl-84DVDy}iN+Cm zgc0Jw!`!2o2|H@fY}pBrlmbrLa%z+tqc)qNaRuW!hB>azVHmu3&~-}Y`Vm^~V;p#M zEa3&-;2h$opdc^tiv|IuE`o7pp^uX~;7>9hZ}F*5V29(uY+#Qv>JV=J`ldu=F~?v3 zcmO}wd^QqF39ewKF5^=e5FEfz{7**Oo9S@N+1ZPyfg5hFE9iE-gnYu!kd~C;^QoiW z97Wg3K-sK8!0-iZeZb+u<0OB`Jfm5C*x7;6Z>FwxbI{?#!12?A6Nl#0jwo(qO~2H^ z8#4juQ1{~h2@vFTuEP z2H4UDT6M(XDQAFrjQITK=;Bd0GjhW^gC4V}zy15aOP0-=1pbeDxfY89{rdM+O=*y?^?F388Yo;eeraPST zW(|1I3TLBSYvSNLJ*XYr=$pj%$F>Xl&2N8u_ltk~pYHzVZ~w=;@4tO9{oK02+F#DF z=G8wlC$rV`XEqjJIW+Rc_oK7z^3l1MC3^G{j7T1?yValktYiKnz4);@@1kQX0OHt( z?#Z3wWS;(esBXg6To9m41<$Ct`@p{Hmo9&nF8#k;-RaXM$Ccmr2O!XUVvR^zBdabDmt{y5xkHq7RIyP47UiBR2mZaj2T5Bb;!?8y)77a2=rLujjTH-6$_Ag3Fc zx}Z@H_Af)^c`FRi2B_{P_I zKIoY+R=I)$JU9FAJH5WBPDcs`VjVFUw|H-j&=z=;pva7|}8=dn5*}$5Ft1*{5hQ)NCe)vWg;DTnq-4x2_ zAQAlO=#BpInJFkWNNoo9Z8KOvj#E1U{j?$|#^O9jae_MIj*fb#P7%yN$B3$&leLdw z5eZogrjQa!g23d#%Fqc8tmDvQ+yr(r_{M|NX`k}=-53ZFATWtGaJ0sBPNA?3JGhwP z#KkoA#=;z{Llk|EHfC&P8Sb4|kESU#!xK@#1hz31LY{&|*BoN~F#h1%cQCcw?5wtM zHDlkby|x>tZvj9XV;w$3XU7wG0M5+@ayJI`y=3Ax)|9#cftTawcw{9~VtMLLoA9_fBFT?pOpf6k zQ+j<+ehk1k@VN?^VzWBDxSYZnhwP7D(9anVKo#R0{m2-|EnKgO)AbSy`~e%U4lQsv z&MgQ*xpe**@{IZhTL6UvU0(7KEV#gdzMx;B)-K<0-hmsR$?dFc+>os)*|7mIrU$hV z47c|?TB7vslU6eC^;Wfy-s`eq?}E41;c+}}Fqs~=r|o|G*Q|WJXhk<9;(^D4b(eH6 znwSm6hvPuJ;i(m|d*`)~aK!_O?^Zm+nOxZ6r3-=t+1b0xPjH$^dwL`BAs>2cuc9_+ z{Jf+(qFP~mb@$6Ze0uk@zxda!#C79bZLZ)>R{AR7UOt08UXyHa(QzhMbj;hyJZh-z z86|kyZjum;x7zoIk5%Mz;!iLwf?Cg#*piReXWnmB`f)tCmn^4%jX^V$Y@(v4?LmeV z{lpL1rJw!g$B1~638phBV0$%ayt5@kJ$}PqfVKLo9i8yjuV4S__nYwYPv|)5;|V@~ zZ_*$sh!!0M&e=~mJbKhCcDwnB6wY1q?ZfUexy!VBTv>SdyX;ADpw<_!C0%gcC)j-3 zSrs{c?_7d6XgZl+Ild1?KHAfb!~3&(>k3SMGn@BY@jt(F*#jM7JLqth-?=8TjD;@n z+mc)QAt36D7hblpr$4ZjZ2F#6#`k(tVEX?3AOG#UkACvgyNB<&dF{zou#rcfB$SfZ zFFfNOi(TRBX%!D$R*yG)rPXi6YSg=}$|{04{)OK8-LXBvNB^_C zI`!9<#FG>Qzq2pik6SX6|$4|Q9D!nD|%ctqc=M2~Iov6UVqj-a_bP0UA z$R3xZL^E4H6WDa!1PU&lKM9SXFJ88CPZm~9<2QQ2gP($y;T@iM^F_&}fz~&^*-m5Z z&}eYUOMQYvhvLrO1o&B3p=_%fpK9lLI#3sMv0IZ~EB_|m<9Wx^m*hR4IQ!zuPI5b& zP6zA(=6CGlrcL;VZb*4H`2Bp_`|I&l~^ZEA)G_AwJ&ng5)s&N9XF# zMtt+D%IcyCsT-qjZP>)(O#Sg?lly%47C^ME9`BWFk%~?Z?{FtW2{fD?vkTwk`^HX< z6KwDmvBV_V`Tnh*&Kw_@@5!bVtw&!dp!;n9Xq@UzZs?Y6UCP(DH`00T_k-|R+}#

J(zSXUyg*gXf)$^?MAf7P$^gZ`czwO!U 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%0D{!E7*~3j!*JM67`m|v) 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ðCX|L{?d{?u9fUxDHNWWrJZOK-<8 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

    ZI?65B7D--k9m43zxlII>DEQo=bM% zp4;D!F0Q*Aehv(taa-ZP!4wpCdy9~3WRDLkYtF!XuI%#g;SbOBz7||I24NX0giZoei*i zgAWCYRfiQS(@(XGRgCP}s=XEI*U1B1GF5;|I$+IbqUq))#G9YDDpK)t3IH^nBIixF z=@Za+_}F#6r+8f#YoeyVbXWJa~G#bQ6#d$rJBZf$tKJV&B*&k9tRHazewS2PNL@fIi>0!bwK@JPtO0 z((h44OsDquq`M_`9W4)fm8Vr{?dfM{U%xT@9K7X{uKk!?Y?GkF0m&v6%k1y?D7UU~ z`0*6sE4=BdvGAX~aq<9MY=horV~t~1mt5HEkR;PL*%EyzkW4n;w@I4+vr&yNil2OY zv}6x%OIzs{2V>>X86~d6r*QIjiYbc&7D%3D$L?@hiOjCDQ$G!jj`7?PTcSGl{-M4m zHrr~^$t}u7!xpQ$uH%Wha`~A+kt-TJ*tpmhE`Hz@kL>7vF=0Mc{?w+gu9?`=(JkW6 zZooI$Br~`dH`CYXz;y65chzSbWYpa?&1(kLOukXQ_=K+Iu1?_J3MYA^M=?ppsXVZF zcy#yMeq8MT`G5a^_26E255o2J*MG=|i%-$?{Q38HKj|)lqSICxy5qaz0(?P?UW-5{ zu5IG8NvNDxL7koLA-3c(TMj2buy?$m+REy)>aAy?J^VcT{Ht_GSA5I1vijBN-~XRI z?R9dnE_R#(SgavC_{dJKxdP5+JE8Fp5tfx10;817R?vo!Ls38!ZtRpKF-6pp1{`>#7|Lf1{X-8L zeCNQrfVKB%rUAE96b2kgQkWQZ>VQloQpJXX;+NV!>9z z?--7(@5m%4gqQwS=ru$iyHboH^R4nWX2&<;<}~2rBRO8Q;|AWVaAc%-1yhlYKEo6f z`U*Igu4d3(bd6EMk6U!zS15K4tgY5}e)_8qM>2L!9i8B6=$%YDr_TZq@Z z>5{~FoT;LSGp2L&;BN&f4R%b=3J}eCaM+6jI2Sl~J9&0VX1=<%m$IK_|&QnuK? zy~-yV6b|(AW5KeI^nPeSqgNtX-2ubi&GWE{k|_zf*aL4_qu}9c84XAVA;Qq z=c7${PhxcU!ODaH3jibLdtqP&Z+7no1oX|2`K2lq@4&ejmHkAI7KCmvXNUV#;V%VSpC zG8y={B`+TEF`K*j75;6F3iWKzWWZ`HyEP$rR03v~#?c?Umhhic5Qqo!k7Vmk5W~jb zXbWymla7vV=0n*VU7y>_U9WG|Xt%1xPd0w!Ga30F41aW|uR?9aOmCMjoE$+$#wo7E zI&?xX3#yJG`2*>pWObpjmT%unMxeNA^{j`q$eChgJ` zqmIue-+1KvC*z(~UJnGTIm!3m|G)q1yWjugZ?d~X*B2F?R>a@5mErNjVr6gF`0nd} z>Q#iF-@SbP!+5eCh3?t5SnY1h<0fwCle^So-lNVI}@N<F-{;0fG@29>6zYdC@G9uf;4+3KfX+FOV{~y|&Is4WCj3Iy z#xN|xxb}}QWXd^3#xXqC*8?8?A!PN{u#cW02VP!O-OLJ|- zOY%C!*C~ixd)FQqustEHKlwSJscQF~Uh$*eIqzVw+x zCQ}Y*0^=O6!P~zZtye;oU{9brxWPuBG1EzoWZd);tfNcLCV?tA*}=_e@gdltr@_XU zgmB*5_VG`&(k~h555AQ&&gQ9V`zP_Fcp9&r!?*rmlQw=d-!FT`tH7pcu?JKmC+GE3 z=;2Ett4{-m9}RnOFqnLUZL-VzCFb#vJ{691;}1NIzR@@NSB$|y{#O2od3ND5xb*1L z?L^n;R>8H&TeOf7y4b6{c%4SJOZ1-Jf6f)0yaT2M3BD+Bf!J{+IvN-5jx)&;gg>I1BVmM7AJ!3=U7%nrH^7r0%V zV2r<+V7{g}3}$1kEbpNvF!)h<R>;2lzP+Ex zUa=}>z{jTRP&YImzut;%i$MIrzf%Yt8|RynzT5L?)@KnQfAQcHU0!YSs{d|jXIpTs zNVkHXJ-pezTNBZ2Gyh+FNnf-1-HAA|Q|!KUcOk&GWWaCIWpaglG_V7{gO=rrY+wAs z|NDHJ-DxYnq6x2L$M?wi?T^LCzF!j|g{Y!s?}ZMZV$^juG&srD_wSp)btfd7x^Ig@urkXQOrpn_U@&7Vnsj;Hm2mQ5tKaO)qMb3D zoMazhy>%Ns`HN4RRFSvBF}k<)s`Gp6!sr6`*ywVFm>y2@fcuh@&qO?b?qf~7R5PuA z*U6D>i`g1U&tChabI0fzp5nVgP@`A&-fJVqCmz%RCM@%f`lX%G?-O6{80C&l5Ur{= zNr}HR8NF*C?KgL?-?e(%U4eT)w$J^wTmMH!AM<}XfqcIIE**#i`O+q7@uHAEwH+B) z)NF6N?E!LQ<4k_xpKyZt-br}{^mU1)gby^ebENK zT>`ee;Q!=?^bdA2CA(vQP#mXHG}2Jm3j3Znw*!E+30f^;rAIRqhiK{kWX(7gcMU_#uxA3N_DF5@vt z;A0k&{ihI^*~Med6n~Qm8scdWz||N088xG*DcIU(xng3p)_;XXV-#B}cpBH~V8y?^0(FjdB7*gJSy;j z~hm!Nib2^IhN?7Umqj94*v z_&<{nus9jnp$on2iS3!tpm~L6cpc+i!{=lOXYHB>K>7$2{?V zHS}32Wl9S=^OIA6&wePVHk{G*=Y?u4X1k~OAS2rc7DVcQ`JY)eTD29s^@E3XIKSI@ z@ruu_y3*JaPhGL1I;sEZC%eAme|&mVG0aebN`-*T?OA!5t@Vx9Pv+gRUDs zya>35-I7$n^Rtr1yZ3YzZxsn}(vOGs1}uPkk$>mOeh;E`PryXLcXXb+F{o5roIR?K zpPtFzj~~x3rv0%!WdHCFzpIdaxgyoC4*l`#-z}M+Tf;B!zWu}Rv)}U?q{XCyxMJ?J ziea>hZB|6+^Sj^w{_gAF{$@Tasf%@w?mzBV;J&PwIk)&})a`A>>g2(?2e1 z@Re1!=P!P^`{JvgCf6ov@pk&L9dYQq!2++7U;kr&iYb3&FM})SJmj+^QY-}I$7r__ z%oXa`ZPt>0aw9u(2Ve1}_|Smr(&%DaTiI;I8%=bIfFFys^ppepFEru}`z#({~JveU$>9o_kh=vA-=Qa*gwa?1eWHCUYK<|Ljgx^bBK+MX z=iOBVy4JrHFZEx6hu?exjW@vz<`6d4c!lPNd_kLEy#D^+YAhL8o#Jm2y%kY(kQbQF zT|ViT1+SGoi(M;2>f=G|&;;r{$d_OW(7?BMec%W;O zcsk;bjcgBU`;5bX=uv#PKRR8Jfg*VC_^%&1%O`kRtV+Jub_z6;;TF5X83ED6uFk@P zw-?YE9P$iaKGhPPckDX*M-z`)oQ_7ktkA76*A&m>h38AYjx~KZ4xhog{EiT&b8#83 z`#krznt#eL3d8RWMh84@;~_>|4;Lo?q1mTQ!f)>MdS+8 z>_F}yZ+rT`{PK(L`tzb3XXnY}Q#>WSVACHu_ONz3k<%>N9A7%}=ey)8 zj?y`L;C?`<5YfG^1VpQn-f=JiwSi0c3Qmc(E&)*}dDV~V{B^GuVw{9yoSDdZ{Y}mt zfs7c_uwc&1;V;8v2cL>g*Q4hWtmDh*E=NCx1rmm$rCE^vVE9yUd3XaI7pw&ea6^VS zJSmhU8OL}>mz5m!)b%JSA#J~`02WWX^&6i8>=o#y;2h2N2KbL7pQ4hS;1N>hFyywe zAqdHewB$k$I!zayM-PQj9KK8>6a>zlfLq{0WbH~GV6AoDiWzyC1aJ^748!M`ZZ<3H z82nuvNk{hN<@Hr5b$ZT+24|C&PTTK$;m41HrVx7gDR3}ode_KxHW7W7%<#2|PyC!t z(Mm3drRjw%!7+A0xG|gvU+mFD=hE?Hn+*Nq5SqSdfD`XPPsh>mrlJcC8vT&J{#Lxr zq}c_zkl&?K->fKP2}R{Ae!u zpvj->^P{?>8^2_rFkrt|fS!(%qfc_0U9qjkT$2u@-NZaSvMK!}Ksq?Vp|PK3 z@C~vOo2*VQ4&1m$d(093&R>4{q}yW}yV=S@dLU!gqJVW?VesL@(aU@?8ZSS(UmUO! zLIjdBG;R%AG;sTUMPRU|>*C9KnY=_+-v({JT*d7QnrIUf$kDBKI_SUp2;`0J8kio` z(H6h^ROIpkD{UTPG;X)KieKL~zq2H<+oc8!(YAZlV z<d8cQDRV7@h5FzL<$$T9xGUOemEQ~lGqEjS9{2jm)D_W1E5Upr5~nurcNg43gDZs1k+wod$z^@ZU0D4RcZOyc+N1W`w-}Q=$wq9a6WtW}CM@*i4wVPS|MUO+KP`6kpjX8q`CPGj ziy09-+8T^@jcm8b$v68O&s~2S4EgMF?}h)qtz!TDSHB!i@?-07y8GtW4=o0Wxu$t9 zdmY*0PuKD8wSX5)HYd(&Xr}oXx=l*6zx>q|auuKPZNUPZm(`q;W!J%HbKWpUR&e{g zWPIRfk)M(vgK8k7!Kegx6iXNlOaLF=hq&Y$NaIVuz0#uBfp`MYYmAJ4dAt3m$WmA$ zYBQ_|;sf5-dxAG(POyUne#A6pQx4OPoB)5#^AA5su*CtC(y~2mCppgSVcMjj<(e2h69*m{*OX2#Q z09+B_fuxG1t1z2PQ?fq#`&3AQBcKRG3SIrI-1=l6=+gI+!^c*JhC8~*e+A@?&%Ji1 zzE@je#g@V=AlNz}L=JyEX<%PPHF_~m-W|;`ysJ=v`15{v= z$>{J*erp6=TkyTv8=K--oci`0K{ziR1g|kBSoApHjVBYbxa+7m9NEKgWa&=Q3Yn7r^xb!MqOf>UaV#(ywAA-4hDes*l7$M@+m zeJBd-f%NItIXlo-J2q$%!-lP-StUEapynDJ;v3%fq;%(ew{-wbbj{ATcan{CeT8ng zZj46rk&mKAqI_$=ak$9XK3(|e{<3HLFBOg6^UmJkIkcK^^=o{+3d@5lXd_F+(Z$tP z=p-{RP5MSB8!LcB)#US_hXm21=GtfHA9S5QJ$P#6UgPI}Y+x}0zv%={4@D`SmqaC4 zF(95@^LO9mCHQ2B9_-IUa zorx;ECPP+a?{0fEi)O)85T2E~(U^?SvjfLQrZ@VFUJn{Q>gSa&9;PEU7e2OfiZjI^ zSIC~yp+=|dV=ZFHp04dn<_ml0FTQ$EYAf>P@rOMjzby#Kj|}H$=}z^A)E zE-g5lK!DZlb9X2;g|VV70{bR*pH*LW#JIx$i2ew*swTx^y|C@HaSF1bMF4Zm7Yt0;=vEaYjxcZ-<=;IIq>L6 zgkdkq7IOh5-vMWoZU6v407*naR4Y!Bk=TE>FjPD@!ZmRdKg%tRBgf@n`5K?eGxjFy z$9|5yap0><#65^iI`naj2j~_3*H%8fJYZ;)LAkIqK14AX3DQaXB^lXuJ2XrYc!Hdt z2J|{IPZfJThIX9!w(=G1v+pG21qp>BoO`M{MNs0k0Yqt&Pu=C`!!l~=yv(K~tr||-M>OV!a>vZFV z*l^cnvcKpSeDR032lc0qD^Xm*(0KBsb9TViwt^lg!Je$}?1vc~AA5?w`lXZt}kvShKmXODZZ;sPB1;&SSR)7R?@yLXi+?@aL zvA2q}vc_)f+__e%;`!R!=E-w!bkK*NZY8$C^q{{6zb4r3y}r@qRg<_ zgJQbknC)#vGds8nbE~;YXMM#qtH5;Pd?qv*ZS{|Q<6q%W@9?GLVj_N>zuFbc=t?qH zw0j`N@$v{G3I2hZotG!lLh?REvlxPx%jU$e6(P|jmTl{YRU)(~cAlZ(JZ$K#5^lF^ ziZ-znoMWqWU2f^xm;JbdiBI6tE1l&hv2@9Ve<&*0e*X*AiJgmabdmftaZ1CNVwRp2 zk(WI8CW$~OJ{NQ1)#^1KOnAg1@xo8m(;*lVzao*me9uzD5D+#8S2P_vxXCEJpw~IN zVc+DTID`jWxzcFI;(}}JS7Aked~~bJ@pTIMq!hBc9^E=upGx>Mjk7kUAR@Swt$sR!C8G_e6kYbkN*)@u`#-tJ{u+%F@r9>igg8X z^vrka;6Z8E6vG}eryGkE-mvtfEnaWmiqYA~EpDNk-pR^)rSbXbadIkt+kcH#u+V@u zxy^$`5VuLwEG=y_L_~dRE-OWFeljO-(=eu89QR^qXAkXQHrrAiO81 zm1okWtu39J4E=93)_2FjSpM(4yM5DjxOUepQvGx?-cE5HAKCYjr^p1-k?{k@p<)Mh z!VNK@eO9$NLFH)Qe)qEdZ9U=a_D6;#z*8J1US-f50s(sE5QEum z;>I54>!4w{z(F_|l~4kCa0sIN1)V6n84AO|gdlwtV_0Eqm`&pooS>n!S<%;+?a2); z;SwwyAs+qspa4XhA^7gKBNAY!R)CDxz8H&s#ghJ#+2j$Q=+bXR%3}_C_R!40nxT-b zKQw78TKZhkccY7u<8^XjaCLpucZtt=*A*6Ut#}KceWhlCXV%D2C6xl@&8Rq^fU42g zks*h3OY+e2zyosWj?vS_oUNd%(IKb8^KNA^o`NG@7*}9s558;f(^*%C>&(9T7T(0M zbMUUvzP+`995u8!JaA6Ybc)K*&3FqI$&tLKYqAz-$ROMt2(RRHlFL*SPP4p%;b@>I za+E+MRI=tk3a^oIKB5twFF9iv zSWO@HDPiuo09`<$zdpulD|Q8Sir$;Z z_ikEtbKXOX7B+$BLpS&myDv+4*IxE^Fn_$8CZ#=n?AHG+6(`r|9b1hpT&Do(8WDJtMU zG4%AeI{ITvb9A-af^6TvY|vH#be#RO`I`h4eQbS&#pHTyi{A|P3Y~-N{(XrqUkUbo zhF04T0nAqTf+QJD-EH~Mll67nYTi4)P6by0cPqTH=((5g&!*X4{F96KfH#+#oPR6~ zu#3wUbHQYCY#MIG|Mg%S-waxNw@;DIfAI9MUtW9|&FoU43)bk6@T1deD>*43{OaF) zhz+u%IY@MEteA9YVQqZi9-F2!4<81*jh?~Or-hoQ$M2;)I4e!kBO239u?y%;dM5vD zBK#g+q*HQKJQb}bH>@|eV@%|N0VPNdfi4%th%G%(qP{mB}w9l4$T+{nR~pSw4;~ zIc4!1&C&Mfa_Q^%As)xeJ;|7yRseTy6J#>$?_KYGhu@vVn=~g!i=^;PkKu-Y#!PVa zUxT3L!$fX<_X@Z8!(eR_j=Ktd)EjAPU_LWKLk>7eGj>u6XZ)8};_&IvBqXg`Jd(VAd;66Jw? zR!~o(g#Zo)2rs#8vw7!+Bc-Cv7=M@1$heouK+4u<#g<6d}e2~Y1 zcLK)2&moM_6u)G8Z~svqJMT&za{!Vb9}Nm{_&?(hZS-8G~8E_OwR0! z9A@KTpH32?fPg+aWn-6ZoWN0%tB66b3D@g-yN#Aa`+o+WdIteSPSBg~oJtl7~qFwiP#cho4RLvF}^08&L`+ z4=kNnb=jAMJD7D>IG(tBCYj{3Rk+~s5%x(gbUHsY1}*d9+nDu@rtJCr;KGrC??-ND zMU(u*tUUl0O>7IzU@xykD1Ea(pY&}3XT`3*;p{?t#LvD%vT?1GD{f7y2!`FiZ?T76 zepHBr(!ub5>gV-c9?VntjP_`Z zfqf@z#is=tv>w@=6J`>$d8Ex7Fb;u;0meG2-M6G-k1jh3?n7O#nF?_TC zofj_}6OMIkuzVpGCjlV&JSEum_8^!eDiH@u<6d@PkO-3yUxLZhkWom`C)YDvjP7)51WWA zht4+oe)@>FCgkyz&fq>YsvW9__)bVR83@jDWD^68J;9H6i*vEpSmQg}f4;ls`-5jC z7C1QpWA$qs2$$R_h=F;hq~P!MON8~d<>T!+4cdf1gJsOkp*K5@rSxo>*)|BUer!dL z5aOUt2gBUm z#U}A>Hu_@^l~^Tn0xbL-M@&}9UGY&$+IgMmM8nTs49~F(T;NguoUdk)6aQz~#ijU(h9^Fw7a^ z)wUK5Et=aRUdqo=;6cp2p6o}Pz^7nyZ9ZIoa7M5GipsvTCwf<$;(0--^O4ZFZq=uQ z*-hs-1byPwQ>$bp39!3RChz(-Pyx4~(lx7;s67r#XPlocpMV9Hf7-SI1&5dve2Hqb zo!ez~==@cHfDzK477 z?2$Ph(Hf*4g7JDO3BNzL5?XB&Ocq4rkK7s_e0^+tI7Q8pOV<$24&U{}wXF$c^W_)x zb!6x%b#H0$$}roWz_K-iUeWmQnfPMG;v^Zj@y1uURwRgJ@$AP{6fd^!#CG(Z1T6{f z_8Y$qxZ9+cTwD`WPqK}V#sG%X-L8-4O(2R}Px{dba&wCrZElqsH`uN2`S-aOp(i)5 zds?x0v+W0yol7UsgYlUny%=a8zou|}m=EujaYwD4J@!HqA>DT{?gh^(odn8%j8(u{ zxx^FtHgdkxQJ)It>*fCZjSbzk3OwUacZ;>;lTEOxt5}{t)>lD5zf?NQQ0M|tOtF`G zlZM&Mx#Izc)#W9p8~vNy24KI&)hFGP*J4+)FlO?tKl-rzNjK3({_k6XMgd+!P^Ejf5a6+eSlV%@D&Fs$&Cb$_mnXEeqbduBUq+9FyTVJjt_*kzJ#&E6xKj`$@)I2neQak8F89*mq4aeyZVWng^>8; zy9=Aqsz9Y7xkBCp;E7CynW?#z7dg0*J5{RcAvhB&91Xw@q_%SRDOAsT+sKn zJCS}tZL#5sq3A^o9^>QWgy06lt#N)Q2cr4oZuQhJesv8$(kFab$*TrTBy2 z%Wgb}A_T`0@+m4#KZMSp!Axkb5fYd?uK!hFTmnfAU2a@sjzW$RD@-wM$=n!vi_77q z^fAm?YIx9&b7d@ypzkYi>T@ZYu{lP|jDi6$1aRxmpnX2DNjN2gcL4&1B&exNLn`V2Kwpx8+B0_A|P^lid}# z>3#vtWQCslzTg%<_#bum<3$A&I`H5YADghfglxz}u_Ae~XZrM`2+B5cglj>*!sPhe z(dBLpHDJG!4#v2`*U{Unl7u4qW^#iIkLxS^ljHMN3~Yb+GTGa1FoMvXZ0N`YMJ}=J zNr1Cw>v^xmv6aT{KV!V!Mq>Wvo9}k_2h;8Vd7I1RNY2Sjam!XB;O_Um>gLOz{bEJw zZmoB21!I%)hZO}18FnY3TFG3|)mVwuRtCB|zQ|a5g8ZT1RnO+Hf~E&yEUVc^Ne6|< zuEl$O6s1;6_`$Y=)ZyNTvzq$8KKHtIy*^32L5sMxJ@k!tOU-T8fUYUzpY@ucFQ5IS zx3{z^5=nblr@qr~rCF7wJVx;AmzL@&741mm9Lc-pfN46KJ_y}rtWYu=#a=SQ!JHUBt~_t=1+F+RV5 z$8M5&a>Uc@C;hAt4Mx3-nP*S6SaRZpSY!g4UH9*eJ)Gf(YYPN7-`e-dx0s=@>H3P@ z#!21*o~Y4<2mbQDEgU8r=dA_e)}aXv_iwkx$?&sQ4f!;9{MM`46ntyZvNr}a2F<%( z@!;K}^v)S$xv}6_c<}xB?8l1rwZ4-xniV1Ba*Dr0XJ3OIkoZtkg2i6-x3AiMZQscS z6VvyBygrMua0DA}h4zWnZ&#So1-o$GFIoAXBqk$1dHT95W3uo1!R$-^0z7G;sW)yd0Urcdo@~ixUDkkk|um6 zX?zVV_`&0|vpxRXITIan^MIV~8rRzg&d)RV!#2epz98n0j^e<=e>?^vUm*i4&9@vd z-a9TP!)0;fs)5A7<*KOB&}QWng?{WL&=Zs5Or2zsj9;?cokFzV@(|kumw?3`eXd$$ z`{$F5Rr*eI_|Yuxvr7wl-+%x5?r;D0*Bc|AxV8t?qQ>IYm%U06ePky0jaT{!?%)KL zTo+%W(Z4f6J^nCl7E|2yJARi>L=0KkN+CzvQ_Du>SiHk?CK%#E5Ic8%1co2Tx2LXP z$F9>O`V_W~#TzuKZR7^m`q*{U9@xpG@yCWu=ut{e@X_U|3G_#lU(2Mk2Z)t`Am6pj zhqEdcw%?C3CHg)I<62R|;ARvV_-=#LpMrk(`#;?M{1^RvT?BsF>d6~{I003w)eiHN zg%MA8+d4tfQ-@lo4 z@Xa9SFlg($@f~hu#qkmPaZWJ6IxBMmtko;Q?-XDJtUp7AV-A-gpz~T;vC$lE`;4As zJjRZ?K6gHzO+HxUUUGhug=9!Ik^y-7`kV~K%&wnX?m1J5og8ypou@bY;soqy6T8N0KW?A+3ChRe(sMzJEbM36EtKfn27Ln>W~Fk63WRvrCi-Ys z(0b~gENJ)PP0s?0cQSj!!6s+nepO;)_a-xB_@@97k3Bh?aD!{rF&g_HawF;P#ShO* z3KBuK&{%h0JjmqXjRmpv0tZ=1NCFc*o`+Q6saWYe8=W4POsoXA_pLE6U-inbicrDK zs*Y7!w|U`m7sd}hc(_U+h0iTKy4&s8~L9UQMrx7mP)Nbu(k6keTX75YU#_bHa>e^$5oj0sO@ z`@=iq*gu95Ehi=v)T7ZJ$UL{(?ft~@yR*&Y>?iGde&s#08XR6g^CqIzdSRC!KI=!8Q zd5USU0zbU`-^#Z?uXVFcMDcVbX#(1_66r^rV@Ds7*K8!&Y!7ub^WB5@eD2HWv;e_Z z{rq$}A-&VXDgMN!lf2p1pN~KBTU--=kKN7|>hH}4Vl)_JW76o;_lu6xS5b0`UGT_B zT!(8D&0ve~M`DL!|G&n9i9&nT$%vs|}+bgS5vgY1VU!$Zp{u-QEM9$o2o@#5SQ zd-#)`fCtxfl^(51FV_@b8admX36fQQo)vYZR*3TYzAq+z)#~PXi;S43C^~sztGgZJ ziF`bKH&_jI4m~X{b{y;okf)rJ=eIxrN9X01O*R`tW@0+toaYCdq}KJ4bE4ijKCO?M zNvyK9%l=@k?(q|h;y@tkUz|fr`q||8_BJFWJb!+EMCX@3|Jk-1kd?;2&)r%JEvGQW zpL|AVidN46h-Y}(N^ak0SIJ|Oop^zsXKo@5Z~pke^Eb)+vMF*P8+Ulf^*S&25;^$t zwH)W11ucBTwR$D~#qc9ie#K`^h>7Y?eq#b5Ci}}`CR4}iMg76lA1!cA{_#Zi;Is1w zPg`lCFr9X?6{g&248_t0BI?ZU(pHxdq_2kPIb|~=|9EkLvvkrPIB5Sor0t2J*)5n zS_O^3(Z3Z|(IYY4Z_?oQLBok+uoq`?w!wux#ubkz0aPd_A2M|70Ppl@RnbfF6{4IH zj$_E(;#x9$fA^DK3uCoaFcNt5c^vGQCD_T2g3O9y%eD}cErfY3(`5@}fPdG}_pbN( zfvFgE>*IMVivlW#q93zvwBGf=68n=h6~0d^ve)pSyT2hkGJS?#li`laYaI3>#{barX z*10u*?!rv&*~C`SiXmv)7KZR>iX>jCfLWp1IfWVnwGYzknb^SVZXG}MbCUVQE4QfQ z;j8xkep-2rzsWv*e%?Dw=~nUhtO>$=t@HkwuvoD^Hh2mFNnwR%F!;xQ)i1es=KPMljYiXTb-~l{(BVJ?3pRKZG$LLUKU8{(B z@8Fu;><2EB{oCqZ#~5esp<_1C#9jg#VJ8Tu?ER{ z_54a__=7aK!(>8=Nw`Nnc% z`Nw$8gzadlD<*WEL)M=+a6eQ$(#eYKE*f(RT}QzQKi?7;oQLmfr%kLL7x^Tj{G$sDkz01Uto8qoj}LL>yMk(bKyKO^ER z1KQ3@deX1@T{<}l9U&^jR@u~_w%zpPCj@XDurueZlww|hLw|e{E(p{XID9HxBbLC- zh*0vacuYO_2)KxszBx8TKMx;{!NF949mD$LlocF7dLch~=V>$TfG6}Q+)(zuIhfhH zt7GY(We7_%DB(;JDh9Y5$J8-J`Hq1-@AUCVlsLf>`KkybCo*+fPmPf$T-Q`|ejAjC zJWbJGj;!f$$gsXu|0otrsC|ywp+pq#-_xT}=P;YjrieHO@FtH)Hk|r9oQ-b#GsO*e zm=?bAo5;-JIH}4QF!&Gd&>HP2TLM~ZQqzZdarB%NLW!Ejm&Yj9=8=kO;?J3aq3CQp z(GD1Nh=bQ_hG+M4hi5qcVUfatJkxZnY4A=IR+M8DJoqUk7_IiemVSbf<093@BF=wc zr=+Z*Q%-&cg_GtWeQm0U17s@hoSaZ#eXJ`m{pMhze@xI=wjxH`KraR>UPaD6%+We) zH;xO=J-?LE!8oSJqIl5A%nX@8Us5GXup$mFXDDdTyU;rCmxh)(=qm~<1JSgxbV&@8 z9q#G&>9i3u7e_YAI5;gQJG?@cosa5BtCJZ(9J4+!{9Vc~gA`NUj_*5s^g!B8tubiU zPjgDp%9J_S;Nf)f6%7-*#F+~?`5OA?IJ4&EeR+^a;R}7(d;k4oadzFGzhUdxw`cD- zp1lUAL(h%pUQoBHUAX0v@vX0Y>A3&?-N7k?AAlh^b;1kTlsLHL0|CH2DPy_}%(dwu zFTn}AiqPZ}-?n+C!|09-L{h$tUiyr8Yb`r`g?|?=6uCo(UJ7ICnnPB*(#zmPhveBj zPG4~2*fY0DkztV+2ELAXg1>ynF9tSX3~0qu_^Jm`j7=a&AMK&2so^*&)rY{@`z?ZZ z_$3SJ3qA#Vge!gF2t}vY06Vw|pB>8}3%o&Q^3jdqm*}w`T&0gGr!R2nZ%KHT!wM#j zHX4J!Ql5d~bS^cp`3X*|o-_sT9C8GicH|qZRzL!LN%%ohCpf{Q9sM{J`yndsL;*CC zN|&b$JoNH_uA`lNdNc9k8D7crsXB(Po#FJX+EKr@I9WkL(biIonqm(fyn|2hPaDHJ zvfNG-IMji5ljGX$igdQUlV86*#{>E|8qeBq{Nc_{+TxJPr!A4=4(`M* zg!V<}%#Og@L?84%oORRW70=-tb^C)GZQy~UN9o24h(eN<=e8GQqGpRChagi&@%({P z<6zpPgO(Pomg)#dwBN8Kx`1Ai@US(s2M!!Ad8p$V*#~kNdchN%uq%#mn}TUo7JsI{ z%`fT0j4x8OWG28@{qoXHwYMnkv8`dHnh_#{bRF2pC7+9a(KmRkz*yc3EQD<7XMCKB z-1hR9LuNWNu$1^d(iCi3p4m9Kl_uXoy|G+@6^+n>45r>0;pv!YxuRWKt>PR=vy=rl zA|x-^@EANzPCZ)nv$l!N3uxOsH|19W)bY2J;Sb5{nVcPTD~(#ibhfSd}lIU02Xp6aXcJ zdB17nhVekwUT!)6ys>`Wsvss&D^ZN(pB!rS80{BP(@qf@B>7**3y9Q;u$WjBc)I#8 zSxQkdpr-NzZeZk`^+?1>l4D`SQBl9tuO4-nCbv7&jz%X9I6e&$!6C28R>a9Tn0FYj z7>-h$A&!!jFy4wR)!@`|*fAHpg>=O<1jv*(BA6Byz2O{d$JvUhE=?hR1T4ngQU`=H z%`T6$DCgyAPXy(dDL{A%bBef}I+DN8h~Qzo0-Un}h9D@quo#{5S@_IveLI#&1V)g& zt0P=efKYHAMTiLF!R?1rZd#_&qhJUBbEGh&i$qMJGj`x|XZ!xWd&hzO`y#kY;)tya zeluk~Q{rvlT3J)F)6788Er7K%3M%;P=oiDPzYGFK2ESCwIF6-$1-*r1N=&LlrMoFR}N0Y*C*%2{u*6o&#Dkk6Rtn&%KFr`%wOvTbDqU&q4JPr7Ww*s@{a*mvmI*mwB!*uMK%2Ca-k^BV_&jyt;G zz)bcT$lT<^V8CAzT9Qlsw=CgcBEi-7$ZOFt&yPis72ZM^yk{-0wVjM%xS`(7i(G)Y z=o8qEoH#VrMYmk>_{WZ$Zn%Ez*|oR$?ogHs?B2D#;M#ie1))g>m>DQ8T&Nz@i!#rD z`cRj-gvS}Q$yq69EimCH4l+lr2V0aUiEceYzZtN%@uNsN@8PL5g04O#&&e{LfUnXk z`EB57>4GEA0%Wa!EhV0O96t_Ux|=hdGx&)Sqhn5RIMpARFmVllISlnXj|_g2=)6fc zMVVH+a4H$7$_4j6(cfpfTr?9GDxFjE(*r{@X^S{w(L2S*!KY;)qM_s3gb0(>O+?mc{P^tEh{_EN6xS{%plx@hC6#gQ-k6dI8&?PwGId^ad-8|1_h@N(uG2K!CG zR!n3_U-=__e9wGfsDp=@* zz-W*abQK;R#Bb=MM!Zo@fAK)WByY=3JFsXpB|L&2MJqH8f7bvd&9;sQTNtG}l^#L9 z$ZL;07L4Tq9CMvWK}4@;*sK$tt7Ju{_c%DpuFd+p!wV0MZQHhw3okss0Gl5tQ^zME z>~(t_sYI6ad}bVg4QZUidOqug=|P5s@)q&3d$^*j=#ugaa>u>485uRyyYQklg@@v_ zlv2s7wbm7fIGA7b`cRkxb8|eGW_?yg>Y_#$C7KHHoLO-DejEW(hr^d^6q4hUIPDy1 zCS_p+US5j5g*$l@>D`rSVu}C*FVC?+@<`h1sc!>Io4#YZ`D9u+m+ zK8@fEUQFp7IFLwNq7JK8tt%RESnp0F=)xH2qwkbzIa?Y{f`{U@ICx<9m=i?FadIde zyoTlup%>wkbT!y4J^@3B9vq~N(2&!_2)c%L#r)ObgE&q3UILuw1ihToC|2JOCL(02 z+ekj_lQyG>(k7!$psK#m{lKApV@({|jX6~ykF&P&U|^b`&2+27i}*E$C^)BJ;gSL= zLlWg%0tb!&PJTqe;aS99S&q(@En5>IKQey$hHJ-;UHity^|`}5@EpnD=Hg8vs*A== zhtsnY2gYMAUOt|D>AG>*6_<}Yaux5*H{Uh3ZeBLF2q9zC3B@2SO>W-J(cbL-Fk(8u-9_zR=-V4Pa!(6pXl zkVxX<)X&&3LXv?s!=i0@=4btT8y`FiQbwa?*mt~*ckvjxXWa6$cmSXnzQO?c6fL%a>~v&s(jl0GJmAxEhVx!txRp3j1w}O;7?Q6YD|(?}As3tt=NOaG z8nC3SyiyG&(l(v3fYAvZk4NtDE+ZpyUru}Aa&|B$6khztnYGM>lTrhdJkxLR(McRr z^5h*mVTv_b3NPfA;RL5md?r%V11@>-NMkfOYm^s%q(H%NO8s%n^iB7{Wbh4l^oJYL z(yRK;q3XYs4Lsh%#k8Kds!xA|+DhJAg2rL1O=aj>e9%!W^j4pIJ~@bBcO0BDk?4Y- zEJ!u`R8D6*-*~d{QgzV7y{?s`iccFpOaB^P?M+GjWMgsw+M$)VjCl3Gcs*_Ora-eA zGo6|~PH<}jjlt6O_fivWqTlr1Z-4T7R(?SB1^+aTfLC&#FD{BggBs8zM~bE#`_nL1 zeW|}tO;!@j(H=PPu6CwKIomP8q20zAS%ahCIDK~6RPh;p$ulQZ%%iiiJYdm^%v=Qq zy6#x)>)z}$*c`oz_sVYM9X-7-0fRNUghD?i2Ns-`ED7e(jqp54{AAlxyl_K4O6Ny* zB>m^R&?hJtb6UTZ*YC;anS3F6(V))%hm+vKGy2jD2i@blBg*Ikf8p}xmEerO!S^!z z$ZsRVrEdZkImHiPl=SOl_>HbIODw@bnk*eqXiT3&hDt^Id`BO7)Mro2!VFT?nUeWW z*(m#ZZ*UWMli6nYreE_fr&B+{JL#YD*HVr?H3QenOX!6Tj!d7`NdAE{WtT)(`OZHo zJwcBaKhp0_2Rfu|n}~FHqEg^eW??hsiA+iLTDCooUx@(+L`M+A4C#{tnu|aXmx>XG zahRN4ita$}R=(i;bH-hF-#fP5dw-@89>;HgwmZA*B*Ex zEO9hNPul5@5)6_MNGEE8TiQkdkr>mH2!qi~RRpMtuIk{*Fuh&vHjNacr%!f>L%y}K z;I1f52vNihr7=z!+8_~gN+pot+=|d4bQle61k@2EwL?C?IcJDO2n$astDiQSaH5JC zQcp-Xd!CUfWsO<#SB#&L5~f8M&mz64GXfVwZ7SMYF?~LiDdUqdXkoFmmrYWo6eyD( zHHxxXBR45FB#$~NW59_yb}UX?l+EIW*)WoP6!nrNS)Z0RC>v{b^^wqVV%Du*SBebu zloXgmk&1~$1#IRCeG2yAhjX8o1-B!!diQrCpfL{enYzck@UAW_tGoUoaHXhIPkse1 z&Tr#^13Mk*qHPIo)qzKfhmxlSj9|CJ*3-!_(1NdBI98^jf`Mro>8i7oZ$2#xxaF2R z#yQJRjq_Fnuq;2AH~*aEZDYY{2x!4o@o5qxo0q6(@Xc+8IX!^d)qQu@Cnk=Q=B zGfqSJ{y;|H_uap*`0GW_xMJKK**SC&ZDUAJ?H_A78);`rj`qUG4yre6f-mi?Uz{oN zBZwF|#vkGtfMdJPWf?i)<&@8@`N)kX`(n|3o}eNu6?GfVTHw3`Df^ zq8XnZ$U1!diC5r>6D7g91}t6m8&+S{RP<&yQ+@cIkbQ8xa{&P#=hNq z#<<{u6bRp;PrkKMY@`8gUxp9#U;oH*7 z1p}sP=;4@L72oAu4HQz215ir<^gT>S*~2OPaRjVYC%4`eljc1fS5i;@h?593zBYvKw&{;{=(Ma4`e^`!4>}@A zzXqz*BQK{B|FBb?z}b;Zb;74UHtxU=$Gr|%-CYN#X$Di(3D0DKZEa^)UXF9HUv+7Z zLDxpCEr2jZeKFLhs zwD3n?O!=B#`jV>SAhu(xeM!G3xYf&c`J5c$ukC}GIW)op`mAk9T{u=bOBo8Uc~|@` zqHUm*92`+W5xsQjO4)?SU@ELVA`k4{AAD@8esT6y|hs&-|fXg zmE&w*KJ%!OfSzOjN>`dW%JU-$R;&o53nx2yA8hlDFs%X;OeI z-Uvc`!cj`Z{&(AKFc@kUC-3#M>dZsq9wvn>L+Oh&h<3iO8d4all9DOL%KaG)Q7Z)9HmZ zz1@x|_)QUdE_%t>$VWk&N_{8_6GK!=t0RK73pM2y#;E|Wwn`Avfp(?>sHENyUBtpD z+*BOrbKSc00!JdHNA{#$QHj2ql35ZND2F?YO^8~-B5Kxb#!1Aq?ZgG|iA3jYql!+W z)A<)}of!pZ*e0S88Z5SxeKxfKuM9Pq7iCHu(=5mUW>FlZNtp!1^krVrbX9h;5=fD6 zOu_gglEcvrSST-ykB(C!%>I-5yZUBK>Rn!`)4<6Oe9}xBCQcu!bn>J~vuD0wbbpxI z=(-$)e4mV={?zFh!LIl6g#{wq-LCdHaTFFDG+rs}^gE1AaWazN&~DVx*p~s30U4u5 zV6~O6Rj<+ez8p)oG@ITM3m*G-?+Cs*^Jz4Fn2ec-J-l+@eAdx6iC`S9%_|g{*?~;u zrQ$ZO6aoCCuiyy27DOqWziHLDd;89DDrnBinnY?>Wz8>G;~Ym}oIagpIgv*SY;nqP z2UrNFtBryjJv~9Xv9i%`#k}T`5|88#pKaE8_=I>Ie?xfkL##UlQGw9_C&5Sy`u7 zh&&pwlc$n{oEkrb-ys^NEvj!@QlsO$*bE4%X%jCs#1aIe3)u0x|ijGPH zZGc+7;Q(VBaI2f~wb>Gy=sJ1|yds*X5{Zi`f|2y8VabmNoiP0fCr6I+j?)=NGRq`7 zTbpuHkGAEZV;T59`VlSC$H-xTuNGQQ^lT8?d8c1_o%Uk$0?Bkr0^MM6*MnF*-!`Tk ziIkby-&q@N6PgX$@GB2DY+XB~X7<`?RhQ?MJj|QdXOF80ER!9Z;Dh@Lo&Ykb^$Q1~ z9Z=7}3@$ibp1lF>I3P1U)X`miYrBhY`?*b0sc}aC#+N$e?PU=Sr+)SGwr`U&s?Cy> zlwjlOP47DYOpfvnF6c;oD!B<<)_Jp4_yn9iNC*$49_gVrQz!*NXITusm+%AINC&!! z@w8cj{3mHEfCQ$%5T2@2dEz_lN+8Y>uX4ze&+OI0%-XRPW_;-dFxmvoft(y(4yXVN zTkk#mPIYjG^>5MvzUw0gS3cm<8f;HvI6vf%jc$9@Fz0FE0dGuokUwS0ZWXW6EofoD z5WY^u&L@XM&x_yE4i{M+@G9}E;DnRU`6RF5%6bQ9l`j?e1bg?-K-a)NxX6F>T)(Hs z({>VkwG9utql0Q`Yv5@8n0}-_<1MQPde*4nZ~drWC7J~*(xC@@;=j}qSlU6I`r(;( zjRQ91A>8Ff`bd5ZG}`_a4uTum=oq|HOJ35(LQ2uJnrP^%L`4^eiE8v>HH+cU~!#fsHw%chxLJGD4dN)(2Cg^a*sja5w*MVV0W^K!jq z9#`9TAXAX53bE}F5^V4gMvTUYaef!&w<(AHi6pH|RH>pG`8|#NYt)dwi(GhTgg<{5Q~PFYL5Dw~m3#o1aKrdgf{o_oGILGyF>_=$WTOr(!c zU$kXo_3Pf9`^GJIZXYKyJ@bMWJSRp!>#rjC%R+<0F>JIufn=P(VgyE!xEAu%iG$bfDrGh@(4lnl>_pm;I!ahyQ#a!z z^3e`Iv9AqADUaT&!nhRy%y+zB#y$PP9G1aIJ<@JPRfdMa3NI|pdfOlZIN^y1e&~KU zQP9(A6TZP~UA8=&1bHZ#0Fkw}F>tB7ci=NNB1ge>%81~)c;SEk+4bS89DS5>E0&%f zH{5kl@eC9eWvNuW zn)J&wearaH9rtIjvVT1FNsoz>FA^C;NS@=!uU@?@18nP$Icz~@2o~~}d@Rn=4}4mq z|LAY)&>1bi@gzFd2HDgFzLsx&l&5)q#**o;C|@r*YW~EhZ5$17(6{(G2N{&76eQ3U4WxZ^fqRYaCR>$fNYG>Mo}vF0>?mTTW%_TbepJ zsiYg-@tbm-26*v@=A|!ga?txc1pb0j;?Wn$%@pDL6(;#AfoH? zP0q7CT^_E%mJHzmFqY0qU5hhN(C!osmQNWvR(s%6C%FbUzL@Wt=)i_HXb=>X+^G`` z`l+lsl%M3rGOyK#x`Hu7e9RN8^7Xac4!HUwX#{*=Q5zMD;{erg;+ z2t;^qk)>*(9r*9bQK@?qI9mayc}?DABj=O6mYr~r!qor(KmbWZK~%|GZBf}~Ic2IK zPU#UeGzjh4jC4Bv6WG#hU`*diOFTsUdQLyG!}?ryD|$v5dEo;;N)xTw9wMsU3fSlu z?<;jg?2@tbPW;F*g=_MAGP=*E)f!wTBVB^Nhv6-736Px1RlWjSlJ@Zs+Lh0f{Q6JE zOBd$7#CDYJN&iKcr(lwetMF(E$B`JFt}hSh+$6eTS}rESOBa_uPN~9O`UWSB`zq47 z%(M1`z{W=QyIN*9t6Ld3k~{|pew3=dyduZi>$Vzi3me~zb0cJ0DgY7X_@)4Yb~F-# zG7<=(HQ>2O@JeUh<+z_~uDNb(-*$JRyH}Kv1kb#gaEcC>BAFR1ioT*9$%E+uCc2Ao z6H$F%zH&trf1HEhzIGC(UC6f~OoHTMj4%{q1wmj#_(=&)3c`C!0yKcAU_cN~5vEaB zl~0azvxG_XPd_;sc~pjiV<9zOL|J2)lBY&JDF}C~b3EIZzVPL-ciYWl{hH0Cc$Z|I zVGeE^dw1u&&}DIQ(~mVvvos>3&E+ejB#!6Y)9hAVm1$67eqt@h&}AM6BkY`-EH7BI zdfasF)niqrW1jbdXI5Q@s!u(FFNO^)1O)y}1!Zy5ICS5gW7l0@8Ot3Tw`_foxFQ>x zPL8!3&reU{IHPlL2M6d5iOnpnq+2n?Sk3a_gHqu67w!(^xRv>d*ssY>wq*;Vu!38%do1hA<3nU=g8_yGrVS zt7I+uak^R`7)-P==+i-Z;6ah9bE=#C;OjMk(b0AA!I`Vm3i4f_7+@w(H_8!(lk}VZ zD7neIHhO70nUqPjl|<0nNti`u@tkO4KIO4yR#c~)fRw=RY;BNVbRaKqSeesafD0dr z0`=N!{VnGwFhPP1Y%#MX=isG_O8=)`|4EUS;0zykpFHEJR2v~yIlkc=k);QnpBgv> zu(WgBS-%W==!iEYI0Z}5-1ovw@}wR!bW%A``jDiQb8@SHG0xV;_7pdL#1Mye8Nlgh zO}%S3xU}?w&7sFimn9#^-k>W`sJedZ8$36Btrv^eK}pWjf6=R+E;qZRO&EiQ;3se@ zJMjq|d!~OJYIreIr=9A1DwU_4!#t&%B=R@eGWE%$PfZh!&uqXRUiDsH&+u;7%OU6} zE*P~9hOV1F?`0FM+w1XzbvB}qnyyGKK)jYHPa&6`r;%8Fo9WH zVDi2OIjK*bQqgIKGw{mW&(m(o>oIgl_mq9(JoCY=;pK zdoC3W`L0eq<}7Va3b|vjOGIM1j{2Y0KC3u7rI*}f7 zesnw5c$bf(zl{UD+wkyrnitrAgL!&|F5)BkL<|2;K?ik}?^J!xi&PrbQ25hTFbgC= zSoaEz`?)@J#J7Eplnz{S(UD}Mao%`uJMS6Vcwe~FKD!Y-dWVJ*_$-y0p)&2XUng&^ zrf~Eaf|OH-QGx{PEOZj#c=8%5MCBh$Z8?Ar*KWv^*|%@cIA`wL_v;@Nh8GD!ca_s@>&BlK*g~(vL1YoabX~T$c@CX-B^d3@{OeOgV^R91mmf z%|Y}>Pxb(TKz_fbw)4-saNNIbTb!Q@E0PRmePOIQ=tUQ>XWi)WBe?+J)ZuZ%HFu8X zxpH*V>b;3P=ZK}%r^of5|C9057rkMebN<$f0y7E(w&)a8m|C8MwAx4?)$M&bh@n~G z5?S(B?FM$V#XF{yFe1U3)-u%v5WyuOLl@J~3@OJK6H615E319=x}Nq(=J_3qLc#9K zT5~sgtzGBHEfFldP{m_#!=E#{nF1<@XGZr_SG2^_l-Xjpvqg;EW)(DcN=1~9exU1# zY>+qP{9?EP2I<3v|FN@MZD-LzX7^SZ#5?!AkXNu!f z_=}M>TVjy0Jm)SivD77PTe-rEK9%E}I8Mt`e$nZiDw1F!$9DayC1cx;%or>_TpPCb zngPgin}8Zz#Nn+;as$S8P?s-lN91G_;_~J5Q+`3F_mVG8!-gz(Sh;+`xb&hm;#N zBUw_x;6X16mt$K7i$P?(M24I8h=}IFLY(F}a`{^lg{wU{F>PJbhUsJ9pcXz0jc>X2 zrg7P0t{59*)Z~*W+lt79KO}Wcbmb-0cM3msiwx^ULy_;H4OxGP|I@ATYYnXMMc~j5 zy(JG`#oN~2>FA*>Y3MG- zX|M#2?!m+L(?9q)b@-DOXE!`&VL@iV3MibOe0I7svIc4GXwGmiSNb(ACvdWb5e7X( z=2EJbl0lRUBr~t$#FANXkg1J)*(~>5(kNK zvR-AM4=JQq>1R8LbW=b`N`btaoW3^R1}brwlDDqNF4;`JBzWjV z$HivlG5W(dy(l;Wmzs2b@F|XZ+Um89@<+=nlw@7E$X*+D`pfS&(wsRw#M#tGywhuV z@lexE9*(L!&09_@h#fBd!RTwRX-0m0=QN7Mf)ReTIXR}<2AjHklHuvMyq?SRARneI zhuCxY(}sE{_?mub7QEq$bQ`?g-a~MzQ#6=ebzU(TIk?&>UQYl0)*pHG&whb+c-x^@ zH(6wV1-bA$*d2@NTJ57LuPpunjM?I~t5=V`*{`FYc>TBrd*<`mo*H`ccnf2*iensx% zZ0A|c%&@2NQ#|+A{lTY^tCTlD@47-K?^TyCeX2riNS3)RsiRBzD$tNqdcr$!A{fV~ z00()unU=F(eT(i>nMt~dM^mU$!H_oa7M)9v(nD;z1TOfJkDLe=RRlKg^tT58Gx+g4 z8!RRJg9(30<@2ST!cE>!a^qbv6x8u0@EE<`WlA@H4J`EzUIG_beX`vKK2oKa!lcY6myiqMI$Oawy>6+2XYL68TS#HuPvV|l@*jq5UznI+`Wdo^2`S&C{KFWDnmbIM zp|feJbX1~R=byJOYlm{2R~%*=SO`C(aWGS~tFuAObTH;JZDZ+!h|Tga^nyh1c4m^= zLiWQC?5?X?*JRyv36EyO$Sou>!htCM+1P&D_2cl4`^K6T=Zr1qU6$n!PF|Ql&N=tI z@%*b^J`TmkQ0VxP@(zoHc>^`iS?WvKyTzS4IgR#^Ur!D%uq7R&IBXeu#cPDUb-Q)cE znT=T23Sh&UL|Q^OyQMd;jw2P?yWs7-Qya#z)fsG6)V`Nm+;-b-!F}TnjwZv#pw#cw zO-4C2_<4Su-dg&^h)_7GTdVR08^vD?AS1eZ_1ZE_9RZt7`*NO&pNctaP)APjj`MG| zYl)FfvU~RK8M}8sklMpTiMG>WS3d6<1<$ncw3T@eWbv>6@RIj6SPGo2j{;}f>6C%J z!IFc^lfVuKRX)zT-;_SxfS(;}RPW>L(G4A8Ylo1075?xWCo*k^7^RqfmDa6Yoy%D= zvy%sf3wTT7NYW{EK^?LmUancNdfN`8Yn*Kgb{#9;XBVP*N(RWD{?89D(8Y{iEuBat zGYtif=n6WHaY|bY6Ul=cP8dC`K9OU1v5ZN1{au%vomQ@1UQURzbVWOgtpg3(Ilder zQGV}AH>7U$>tjt>=l#jd2v`ba08@CK(Lg@B5uNV2=iV6R&?e;=vxPaGN20L=8dk1a zmQ9$}`5uY5+9G&Ycg$uI1)OI7~mJb{IvyI;!5$*KEp+4qua*JAG$cr0M$| zcidIKIfI^Y2I)3VwdA`<+2+j~E11#)NY5VXKNytPzP&N`-n+fZ`lopszAOW?jKWe2 zL86uezt#1%^qbn?4C|VH=%X^5Hi5$#(7j{>{gkyFqL*=X(>9H7-`;RceGP^}wNw~* zJ?kY>Y*XX5YzQ30K5?FH*n7hpUo$ScaLc&pq6^1`u^C&po?pjtX=QJYMSLKeS?|1W z$GGmRw`M=ap0O*-8~90FJ^9jSl((4}I7{+moQG2Wo?3ew4$3)J-^? zzv^IYQDqF0N5$~VmYvR0ggr4ri{c0_jUyu}s^GiXjsXO1pV~?&eM7suw?hJpQqlm$LjiAZHKIn=CTg%UG_913#bR$99bCzkF??%=5;+ql?BX z-}FP{d*AXsUzh)z@xZ|1xzBxBVD3l^qe$V+&{@t9y3iMJJTLESP?SN>@!;C#x)p0U zA}6zsj-wEM$@*eO&>#BXi^>M93yfQ+S5}~@kKsG=1#;p=IB|IMuDPfS}02C2OgzA@UR3%c?=Bb z8EKm7@O(<}(1Wbhk$lC6sY`!2TcVh7piJpmj!W{r>s>!I-u||4oThkc-@biihZ-jV_iJAm_yj++wLYhak}8K{#L4yFAB^Yc!jTCR`+ zKk_3#G~V|1ZyesK%}4Ty2cPlGmlnR7l0g|o6zEV5Z~pMR-aXzv2Ry&Oh&!H<-zFyO6!M00zIg`k3GW&r>3KmM`t*0;X->nq8VCq3!P;=Sr_e&Z>; zXg~tKDZTTZZy#@a1pH$O;#F6@E*G@iU+u$PFDdBAY}-_JZ*sodfq?6dCUb0C&%=r2 zldOrRe&i#+l1-)?Ca~uG{J;l3G=BWYeyP2tUoBP0XXC!*hK=BCapdsl>eVa8 zJKypB<1KIb?wa|Vs}X|;f0tZ*;dn`OyhKi}zws;MGoSs!xbyCN(w-=`r2ttrQ3Edn z^5zdtpMZ~LU~~sNLU1br%%-q?VZqXese>GY^+6n#{I`6`)BZ`Q1S#|0O`Q&RT%dsU9fZDiWW5Gke(t(^$Gf;dAH_h><%2`Zq ze8{(>3Z{N8id}4Y>A;zuNaa-~AX+ZLd4`iC3H&JU^c(o$TX9C=)xZ}F^j#lKS^&n5 zT8=~SvK^^6pY2CB{5{}o2OjRGb-FIblJF-x?#gxvTtP$W`l3P60XWUelb^B>;Dirx zDfv$A078T)FEgM4SB*04I^x~wOpTe^U6J)802g6_r20!moWv9h6zP1BW~2{6TIs2{ zAjiApV;Bl6dB;i6o{SJRT~S<4SH0_Ko($^pmu!{P*Hg-g1_s{caSFW?oiJj76(Ffs zyMCLVpY(nk;C95)>mnr3Ov9=NLs-rsQdbF#smCagGtQV2Vs~SM%+z{{Bu^AGTqlIL zBTg9y(G5Y2^Zarm;>gBe)kcvp)WQ8nBFq^brH+-W))uoIO5~TpH1ZQ=IJkTFSeARr z9WK2p8+(>5v0f=t>`}&c-Jgtulo(Ljc}Ouf&=36!&5T|}Xfoo&eEK7y6?{$!zP=Vu zlVF!nr3gigk7}wW$U?(*cAG*a0I3h}c(*pn=v6O&@p$@EpIpzTb{_2~$NyS0S`sq0?m=DOFkk)E7{Wd)Ihcq8 zhad1$L?KGCmogl6q(U4$PHb&TiSAeuhrc(%DARg_Vt1lLMTnCZ2OA_Zs>d>jTO4{l z?r|6A?B^BZ-Z;Dm?z?AfJ@5RIC3Gg&BIjVn+whOhbQ0KO-b&_cw{w_TKE`8GBJ%k` z=S>6r5OYSuS)?LaC|i1?^P_*9SW#2V5LsW5nF($ClM0^T1%M({no(9g1!%QfS-+uw z7)*|azsoMWWW4&-uc&(P{r~!3e?ETk7k_R1@t^*AcwLnUFyM7)7{bvL7?n&uzVx=PG_2UehhXIagKJ$i!{~AZs05Y zFbx{LoAT6`IsQ?$r};$)8%A024}F7%`0J4*vyuh|?|tvTEm$VUaw_Y0+2Sy=0YEz? zEsyfR4_j7i^k=^(p7`$Xe*GhIcGUy-9Z@FtJ=>>0jy2RLby{{752kdCjcR85e()V{ z$-wY?&+6!^f38GM*b0Al+;#W()E|8&m;T&Va$7T{vjHx2(iZGGoA;m-9Nl6-&pC5j zs)VL&Ci_S>N>*a$CfliBY@$Jw89yo_tdM%zzADR^PqxB67}1=QDqjbVVsFwmDm!a_ z9(@yCX0}{~d=Kk)m8+Arl20_>3>Nuj(L=VfgFba?k#^&=Wv;Cp>K+)=X=vZP${$g- zby)`is=w(Eeao>e_)4#F_Oq6|2H4T91}SJ501Ynj&1Cz1;(>Bz;Vckm;Rq;9&Mt_L&v#0P8z#*t;HC`bhW4nPKqqiO^s zsw;^D3N0IHh*U9nu9r>SDF^8M1waHtbaj={2{gdY&q^3dloj)ENSB7tj7&LSsiW3N zsWk5cYXJ?m$#Duv=(}>lRSYNE)(0NHO$6%GS;)f}935U={w-puuZ>RD83qS-5v$*F z1fw839Ruo0^5`}|Tc4Wu@9e3VcQ)6dp z@%7*SZR7v@xBn)a57&&RKjTTkH-$u@#bM4NGA5Eb5OgY@tc-|XKVNn`LtgiHZTrn-)WXBQ;= zdLsQU#~0tmKv`?sYo#gW^dZmOZ_jv3oZTtmkwu9r!sA6-FBqE=^Y|ctNV@69+sde{$TT+Qb}&X=4wD%ZYxeuRS9P_~L904rwpq5Cbh!MQobPK2 zR@C5SpqCIAO&dj%ePLcNiUHZwN{HNpf zum8Sr>#gCP({2}Y^jIzSE!$9zTscrpwN1V||nv~Tia@8;-;-2>5xtzwJ z&IZHNshf_Z3x4UB{^PiOHmmnY+c{gli?(hVZ~wmU8rOXJ`tgyEetaCsk}nBWoh(!R z42=Hc%QVcDrR1G&f&V0V%jpV_+SkONk>6jHo#pdepX;VlvPW;^nLf(W?+wCx2BP&( zbV~T$ch6&DXqvKRW{y2A_EMwVcO?2 zl@8NJ4dxTIjm|yM2 z`bEFQwa=RlM75L3!4B`&(@1?3<OqFPe!pGvh-ous&UDs7l-MV2j&xFPp(Nk?$U`cyeQ&*I}eO~IZBE#KmL_F z!{qzM1zXO`i0AOQ^_E?^mmrR5uDm^Za&F_~8dvm0lS=8UsBAfC!I6zw@HLG_dxwWn6OMCF9yJes(Y=bGRj?^|M&Gif(% zs_5aI1;2?eEY*-iyiD_wO$yf0S9rn=bmiF12GNWcgFZilwpPlbgd!Y~u`mSOp$TPm z#TAbm-~avJH(vbW=a2KwJNJye_*;Mb?~YG@`cKEd`Pct`+*Mh4083 z?wwhihnCjWk$(-~Ve~$cqj(sjjahg4imP5cE{sD>-p-VEXCQmi&9{zE|LJG5K6r1@ zOg_9#UrkFIC|O2AfAoD?-oU{W9pX&TTV`+&yMqUmesGq*+DTr1MwEYWL_dAA(}h{< z_z(ZVkB&FK{x##>|JOenwDM+m(Ytt9=RC{bUuP1nVsz0M zUqNfz6OK^_Y0d_ZlZ5{LzyH_cjc@$E2jz8gw3I{7)RelLo;5IzbHH}#vjE7cM4wLN zvK~Dz`V|yPe|_q5U9aOfwS`a6e@gO9Yh0&i5C1HuC1u%R4x#)HIj9}1dbG5_`|o(i z+v4>8mox{aZnf*t=hkB!*>>7Vte}%w+(eUSK$xj%TJ^b8%`Q_}#$TjXN%ReHu z5*X<3iKg{1|8NS!7%dBE8ynhuL|<_F8nM$e_4p2Fv1iO#4) z0lZH;f(s+|mK^~fe3e6(=K?ouG@6-3w2@6c2Oii}eogy4ab!uivZ=~)u4TFChd#0) z&oaZxm->4KEHI_s+S`*s7MUm>$TM(T->yH?l2icsj}9bG$&yC~s^HZ3G@SR~(pP1* zC$j6PRDH-R;B_>c+{L${Tlo$xlVqxWICZGEbZ+t%P7~w+ul*PNfL`i=$J@VKXbKv` z0(QZ|<>l!fJ{b5Xb8$rrR(@**!L&b6z5= zd%~O@h8MC)l@ZWQV_j~W6J_MrTMv}R#$C7FJ`U~8a)dBtKnM(3kDFy7wc#%edGttd zll9Xpvuz_wd)_oG6L_=<58$6ilb(__cAGYA7{B-fL|AsB2JvP%ob!2AHK{#e~pQ}5psqf zKltmZaEd1~$6y7g3_xA%QVJ=u9NwFk*$0y<$HLEbyI+hLc?gD5XJj<^`H7$SM`bX{ z;@Q%M;Oq6Tf9-hfYhOJ+^qU_Z|L?#4>9H#_8TanaQlL25lz2rdQYX0lNuon9f5{8S z(=y1S&(4u_v~k6F!HqV+0TD*{O-p;8Cg;f<*UEiV4MuZyCyUy5AxvAHWJw( zo+TS_Rt7AHj|NahHz|eef5@PyN)-gr|SGDB-jS z16{H)KLdU8Ms~pqM6yj+NDO{GE3^n&vBSJCO8B!wwep>XT<|ygcvu@xS*?b9N`7?fux9 zjo|cyw%NH#Kr1#g800TB&z(xXjPFZ!Jjave$cD!75u`E81%LfcHB%ls!hdyY$?W<3 zOz9UMQZE?vyYx!FPmU~5e0S?@@mC(Ou?DG@CM?WJK5ZkTr$VE`Z_1b*mh=cMEdkJm z$SeNhoYPqkI-KbuSdoPeaC>J(tm(e^EXsgYzsqrsO#V!;PS5$5tA z`HFeI@IWGoyz;c2PRH>hR21Hf*&xeq^defGJLUrLqGTAM0hvG6#j&_=+r8t4tFI|y zcSJSB3ee3!>5u{ePNHaZ5>cvSX^$iPV5Bj57s*VBi1 zQ$h!w^@Ug=00%=^QOs`JDD?;s3I;^gKg=o;X;T`+5H|f3p#neVbH$}Ad#91-vSqn{ zYw@bFYsao)Aa#b#k~gCo4oU=9n+p;}wY%JiN+j4ZA(XUBD2_NLA?s`p2cLK6#DOI- zrfxJ_wQfUpl-^U3a~DiFf`qpNCZjUzoDV138}UpOH;N(85!&%4MnmA;f4mKBjR*mE zh6LvZG%22%#B~U~^ARx|WlG>WGL_fGlyFtT5r(4xM4K6Wc!E2OEz%ZrRZ6ksn?K(6 zy>H6Z)Bk&Cw@zUA$}Qvio4#66Hp^xDh@PBpoTI-sCA$9j$312|?lG6;WQ4V6=+#4y z&P$Z{?SJD<<3In>`$Iqc-6KoJ$E*fnD87sm`eGvX&wp-jZg{AM{`QtQyub5Xzn$eM zt1|t4D0rFiR|Kbx#>i$mgEr1^@IUc#@BwcWllDZF8NDl?d*)4YTKoJLzBul>bK7|Q z<1fzHzt*59Y6-`og{4LC`PZ5706Z1%E$dM|Cm^bJCcBm+w5)N;b-32JhZ(3Z1G@OR zl|&ev7-0R|rcLX|FZ}$^rk{`NmyhsY`r^C3`%U9Dul=_1BR~3ojvKGOF_U4|McX9N z5fZRch?iY*;rRY+Zs7<&nnZq{_v~kmE#cQ+e*bUgWDwVMw!u)h)XLkZfq(&h%K+V2 zm+}NoiClz;p*=@Ku6h{@GULI`ISmHqi6IWy*cq7{QUK$=$YUt#vwBZbaLy}I&mRzz}+JqFns&B zzj}P(3)f^>$NQ^qZs6<dFX%+UBVh?41C@e?N3LR&z7Lb`M~(Z ztO#eiZ5{q;`!G4&XRpU>g3Y3wlD1WFK!-8(V0*O5!0yd&eq)^8U#X(_t88*P)$PDF zjoAZP==NyJ{MGr~VUNi{e$8uMIWA6w^wB2O`YY!vazT#R-EK#1^T#uu@w7zcU+2f1 z>FVskc>k||Xxx0u?c?6q;(ghew?2V_4Y3nja|`2@8R$OySx*_4%>m=V*q0A}_@kxM z>1Kl~G?yk>=RKgE8QhlsJP0mo<704P^AtM3*+dWhnx{+<$S%}CF`w+IKI*&jh2DJk zyvpX8*->&RNJj7XQijkVav=DIr<}81PG@w2%SW^w4lNy6`X_c>oo2bH4I<6C)w2^R zpP%KEuub?VN?DgG4~L)A+yg;<4@~hn_y{#Ko=-ZDZ7TmD`A=Fx#-2tz)gzUi4P4}? z98djC*Wgti4!X7q7lBhBtS~5lBIPZc?aj(P2vDb1`4;lJ+o0=eAB`{Qxj*f(&C_o* zShzBtIfte2n+G**6aWmTMPv$K&4VZ*K%37nx{l>>0dH~g(nQ9NWw-pE?f2#qg*7S1 zan!J-27xZ+ZGwOYPRB%CQ=JQ=6c{SbtWif*tN_O=&z6`?Y!6NDa%Ven*0>MO;P^46PG=K~MN7O|GETvv`gXB>>DDU2YtM$j>um~lEhT@>1H zfG5-|@3M-*Y*$iY||950R2edKT-Q?swu;#wb^^;AFj!rUemxc24n>}kUb7=YDEsudrj?)=|n z%j2X6j)xRjGR~Fau%aal}PR0`n&no+sE&I;*;aCmt8u( z^;@nwYqa#dbI%!X$~5k;fAGV_D-@Pp{!&M=T2Mb1LpYbiyLIc<@zSeaG7Oc9#`zSX zYo(y3eqMCX_gW%^Ckh`C?)+z(#b9Jjj_!NXpPrD7NlwZI-9!F}4 zsj4%U>W6Rq)>n>o%Od3Ad(qZNSCkq9W>>dME>4ftOHPa@Jnn)xq02&_qcIT2#~6ci$8I#z_gkfbnGX*SY6z9B=uaH$G}- z_iNF+<%09a+p^B@=l*k|`!nT4atkYe&d}Z)RhB8GPoZxG6 z#J{O89LF}&`&8wN*7zf_06MUCitC){9KmttVYW+ati&TU-2+rGZ>vKO**iR zv5Rqf%`KhGsjDSE>3hioAm&W+^n3E;ulk+*9hhhb7(O0t`oSN3%lPGA{y+tf%Ery= z)c46bH?RdGxTVRa$OC86yWaKA`g}D1RGlf0*0ltzbPVTd3XnxMLVp94xf0v(!$0!( z$EW`1A0-PS2Bw@;WEO1a*f(~>o?Ly?E#spf{rz0rvwwW=o4#Yb{Y~FKp7ew({(?^U z&ENi5mJ%K;-HgZl9nO+9zQVKt4T(5UY_3#}W`0-_#2!o}B-b2W6eF|B%Uk*L4DBYT zSyiaUE|@h`Po-`SfJT5VLTfZ2vkEyQ*M9SohyE=$2pqgz#Ox&Ac}Koj`Z4? zh_PF@)VY11f5TYfZ*cD!e0sUjG@5POogvtrkRW&%Xd1AtMzHAi_sMf+Q9Xa7hIWW?B! zr7s#E|AVvu&O0yLM;u+Fe=8duB)B4R3hE_|WfttQ?og5hpKY{DLz( zW(hOwz(0qTL!`YL?T0=T-t%$<+9Vqf2Uv9bkN@~jGT3OR&HL(WcpZH?ke1lYmG))> z<;k4OYH)clX9wHFoAGSPn*rGVDDp!Kje2vwbC%J}51($|bzt0nU)CUJ4;elOYZ)N~ z5B(__2Af>zqw^qZITFP;W6W}p1EY17%BO)GOBRJiafcV`l#?Kup^uP^fAy39{I6sK z%KEI!{V%`pZ^mn1_om_v3X?%ulcf&dpUpYbj^(-V^+=wdp8?Z%yyn&8gCF^wq8~kF zpog|L=0VeB1azIADx(>^l>rJoXeY@xeOJD8Z=N%1b0v!104CI#<)ZivA`FIdDb3#f znRPfYw%@yBd@;9O($ykI&wl1p6A6FAc+I!HvgC5E`v33$`|ppt@4avQ(I5S31M--~u?Y2!9meYso?g{h-vB=ApcM)fzaF<|&A6->RRN3`Pt6;1Z< zZb3OwSiDnH>7g+j0DranJL~`0l}DPu@-sj4Q{#27`=03KeN_w{KqK=_gqudlLOYHJ^a&51hlpLv6MGDg6-m>0vl~*~?y>Q&Y~a+s_06 zxJyr@ohhiKEn-qWLfX*RZ~2y&o~d{}d(S`o=i~Pi^pHg5!GmTTCjJ8lk#lz{b!qS3 zoX7jyAN$1kL^d?P`W07YbMxcJpM5UJ_uX()$<#>Q8vU^N=6YA@(YVH+AYK_^O_~r<>UPvTS)r zpKC!rZIpbbJech1kxFMpP9N+GnDVM4x^2s~SI0+IzG<+july%`-aMc_ewF{CHmY6q zs}GDE+wNL$1@>89z_C}}!*ki;{ReVmRB{7Er)u|L8Y+)F9V_LYXd=a300eOm&3W}( zOO$wZK7jci3Z(OKrk3|o3% zj2*aJSR=5>*9xFVD-Z!W6vlMspR&EvI6|9#5fpG2b0x1eb`=0D`1G?KKrpJ?u6dt? zzL5>lVemYgMiub6XaDi>rR(k;cigjgY`=f+_~NxU#j*SHxNpaSanJU>c_ zrdrbG|M=vm#&3M&qcwo4jA!`g1y?>Nw*hV{*x}0nW{LQbQem+Zb=19+Y##3|t z@5aI}zOwwqdhX`MF2pGZDH^n5X}JL~MS(w_o%Nw}rQiG5$0H|)616iOWm!lz9)@>& zR6DPh>ns;Zoh!vLGI%vLcOsG9!$*U=43Jjjs^Y~9v(W%PGhkh{DpP)IGB}Mvn3qkM zc-rPo1HcGT@Ned&r*7Ms2t9-6^eXUim>FIC5Pl@*srPvJ&j}?6W9s>YlL+E4pkT>Y zN~`mk!Q(5ksqn8VU3~G@9JBN<%DLr;O5gRyZ?9wT{;Jxr$W{dZH_OX6ww*au97+z(4q|B6}j|;WYB&H$8SV zyh3i^*sQ>x=W6r!yyqvzo8I*HaZ@g7nJdv_|KcZpJeS*KuL3?rQz@wQP9Hqyu+=83 zJS*eZxz6~n{Gv;U&yi4P!KS|OHT7?*wW7$e3uL^aGwDl^61*~Q87P&**zdwp!M!s- zMgJmq!AnKhv{Op#jG&zHp$)A+`?Eh)?V=4DYSVXp#`D@(m_BESGEU?(4TlV|58?fY zNSY++XHM$E^Bi3{Ik;?_^dNu4M%KBr_4LgD;J2=$VVh)89fgCy0+a<(l>w3kDe=O_iV6Dj&4QmQnzHb18=cg`aRc1I5Q}} z_pwigAEOJ=EoDk41*ZHgS|v1J&MtdNR&BB(FD?*z|8M-(_~l>!&G9=Q`~7N{KSFmy z<%CUqip1oOj#qKXU`qHcB5C=W0>FnK@9`2I!uLQSM|iDgQNPo97y*cuOiA>o+W76o>ayI10I&nUV!0=f)aTi1WKT zS;{pxer2@b&l*rSeo;OYn`tbL*zq9AEjoVZpOlRe2!lF`2gJR0iUFYvgUq}Oy!{u@ z=4Z4yKW#6rQwkhi*6o#`hnYm7s_qF5LC*0+Ss@2|z>zK@yn58VFiRmq>NvDUOcZ>N zx(UuA#~uaNikgA$^k323Nk-*dpI)A)A8;tPHTc#^Eq2A{=rTm4QwfURB^-6B(RY>3P%S!bbg54d{sm`G z%xMJHAL%{~Lb(>Q}yeJT50_9LNCv{PW$`ckwq| z*O?099haj_{L=anUOL*+vJ&DaAO5Usq{9OgF2{`muWN&YN5h61@TZ|V;-_Q`^PD+Z zipAJC0IBtiV5v$-qaBmjm^{;=+`0d~R_?a8XQ#kt@-}{~A za0L9KVI8<%24eTG zr*b)q%XntV(wwSGq&5AKx9C6)f|qg(I3$lUJvZz1f9%J8ICU9_w&U1G<*^NJcuN3* z6S90w@N4;2pHSc(Sr28;(jq!C?eO2~M|7_WEK{kQD3K~-f+HhnoXKF{I9ECjBmww)O#_uo5M$o6^ zJlna_FZ{wUR-JRbCj;;<3MoLQFJ?3il>BYjux_rRXL#skcpi2H~qu?!=W+9En4n7%>c2__t4 z8DZ1RTHmbUO+Fj%@q+zLW>+13>hy)q+iP~qwg*vcEIU3We8$m57Y7gM8yMUOS8M3O zn2xBwbW3=GpVhu0TZ~Vp+V~!Lv;(63G=0i5wgev+yxD9g<#Eckoe;^Uzu-YTwd67t zH!t=locZH$qZg;V>*&fR8p1=WNgWMX+U&K03(`4&s8n>qw2ieP8f3gV#IEW?ZWXY= z1fWKLsl$3Qk=hl@Ru`bvsS@OjdQum~UQy$;OUUcW-2f_j1<+b5k?4|7zb$!aCWGQ2 zJ@bp#HP zhi1GgAK10ek!_}i+_afz`Vo+--R?_Z=f)SZQB0Hv?X>4RevvRo zXn0fr06+jqL_t(7fg}L8@?IhY^1anK8wc4v!+^{($|!&BVRbfp^>R`IK+P^ zVp!-6n<`w(T+5gcH1Equ%bWjff_>f`8w2O+(<6Bfzt4Hr)5Dwd$BSS1yhl>xQRlhh zF_#sc@gIIfa|w>{BN!%wSyA8U6bY^-9Y#U>ZS&egGb#_sQ5AUDKU$$rYuT80Y1=a} zNOY98=_Q6y8zPY@RLg#9?QnkogMawX#-IGjpH-PN{qwi}*7w)7tm*}CrIe!=4e&VL z?15zj)9W+U6HqD{lrl67?BWDFz+FL+*p1px5j?_I-C(8<`L74dT^`?5a3f~c1~pCu zXH&#n@=Q|?!dg$i{-1lY8F;SrH~;1jj90$$WqIAk6+i2vr0!GU`IGs}mKJ~NY+ zZ3GXHjJ8v|wJCj$3M|Kv46Hd^Wp4wo8LGlYWMF<^PHlCY-TIB|N*9uqtn5ltqOr53 ze90$LJLy*M{5?3h3NGM;vk5OKD9MArd-}bfk(H+NL-I)%lwH8<@SCg?7l6BMSlUee z<%1=Uwd!4O0)aC-1OI}4@=F}kf-7(cHrclz(SbD+llQ)}*BX?c^DC(y^7LPAh)d=v@aCC6G_3Cr`UvTd29tWpB-mnKQcp$6>y11O zPp#|CdjrJMXQ>bF+xOtB;{SG#)3cc^E)~-?_=@?7Ed@DBbJYpi~IrfC3nj z81+PmQh7NYLEhonb;BAloeQyuglTdMAI8})*#lYt4dTdOJU-Mee-+P!`3 zxc{CUk(TpY)Bf%~_XnOm)rZP-hJWU9Y=cYZ@S!7P*T%br;cJUTjn=gFDV2R`)S6r#j(c5xm3N1jZf!V96zQiMb* z;ApON|G~xM-n~o414nY9!m=yI=dRCknuBY{;YAmZyY{Xd_v~LcZoPl`_|ol*vY}(% zxN}!FuAN*y7KTr=g*7KAWKfksn`opp=0@lxhv|`i)C@^FM{YQ6BAFefi18+G=|9|x zIN%SRv6dHa>DP0f^Q@xZT=4&8oV-=F2QGrug1_ zDcsO{E8pR3sff6NHAG1HR7d{p-*fy+agzs8ni@={4Ln!T!svqH<&;fpH6Uj!3`Uaa zLH%iVjjsIRAN~hpt|@NEw|&QVygKltuGCux$Cm>VLmYmuh!1TXdXkm7QprK!1=0NI z1Oqp)sSiRXBi%+Z_31$B6U@MC?c6bR&2y7ODEh}yt|*}XC6VDNUp+X(Kkt6`k5|Cv z46o|ZPyN(S6 zSMicr0TFU*YTvsVO42_6$bg`i?kEFKY7?yKWdxyNG8D~pdY0!w0E0k$zX{4S&ZguP z9x(R6mA;J}gwfb%br#R5BmdVxH|0dO75AGDRQ^usqFxT84t?cxgH2?W{!&LZn@_$D zb*-<;<5La72RWd>>3f$fl@qOxsZ_o4suLcnP*>gjow^&x`I5vYs4K;*Uwp`~O&sTG z08sgZH+*U71HICYFnpmKjO1TBAcz6WL;ZWGy~!qHxH^Z|sKFU~I^xDI9dzs1sWeoK znTBG<#=5m`J`#0n=fZjp4kcnOi8J=Vy*uM{?aXEvn`+bpD2T|Y^oYn;c8q6g%e`c7 zRSK5IsY8J7sfXT>fD)PBI(DeaiBhVkMi6P+atIx)z9#F56WM$dMOkO-7UO4~Vss7XJUOU(bA&)*T&!!$u`_X)#7?)s)d`$``g$v2n zK8tW+BDivt)~?`VMXrMtd3AKyvK;Aj;DLSP?%S@9^SZnQ$gN#p{LCFVtDINs9s|Kx zo)a3b{(P?YjN`vFQL#e@vymcBtee=v0cAv-N-?tQerck4&w27yeXLsGKzYkd7)p_u z3op3@m}g92;d)nuUVO$j zJ+yfYpAiyE0y>g_7ho@+iI#%}Yy``wka8pp6fWkbYm=jNQ&Yp%V%%7Tqz6A@n& zcto8Ee;LcXqkuh^=NV6b>KW_vaQ}e=3T;MUc}L3BkDg4}r!9R339 zT~V#+OE20yZnr9$73vT%&{6r|=m`ixqkIi3iwpjAa!A|H<26KO63 zluQ(x@0Vn~?Kdlt$+zYRy2AZ8sS!uw-FnBJ;lYQTKKv&!h-l@QBgZD%FoRcvvcfas z895rGv5K|}UKVFy zeq{Xo&;L@^_Wr11Uzc9=!YjwG{K^L-$8>+{Wcbq_M;oArj~o~amgZc~v%t#%BS-jz zOe%*aWtj3EojQ^lmiA1dJUFFFkm zuT4AefBy%^JKy=XIWKh)<^9AbK2=501Af)rI=AV7W+mt0v$LJMyKC12b(QsmgNMW8 zx4I<*i={cQS}NRN?j&@zftUPr-|O*T_~*Uv{paHcf8g(i7OjtJgJ{ld4bZ_`X0@`s z@n~f8DOpB#QPym4-}%7E9`dZ^U6c*IbT*qCJ~izgK8@BcxHyBHJGP-V-bS{_wsy=w zhH4M$WPFX5=*+1#1KfC<&6cJN`02)?V7~JqDkZOtZ=%AJ&E)8o&VYx!D|;840+-IR zcaT7{R7bAoMdw*0k#&{1JuM@ob&2>|2gyl}`!QB!Ly`4i#}g$M1yav}-S-yJEl*&;R_99D zRV$+Wa&wxcCN`KX%kS-X-#*USvSqyVs^`||5Ccg1j?t~7wqt#+bTrK4(vRBB3L#0g zo;4i=2L=vV^1X5Ay{I2rabVB`j_{gi_y%1bd-?%=)UnViA?c`0VGdnbYCDaLWbRytZNNynokBu$v#6H_1sTTU#eZfJD2KVyEc;lQ0p6}`nq0qe?KqM3yKZW` zKUZB-YC-bYx+TjN0^2oL-#m6akXy=5Whp~u6&B>wlhawAKz{yz>h1)7^RlcL|92Lc zjRA%kU}ONW0rqgj&`&~|0kAB_hwp>!3Za$BA!9^=n9L2YB!`fltiu=^So>7OF?OB_;Ao7m}z5J+W!RW~nuo-}hRyhYa8a4IDxe2Z< z1?%fOqyO@|bYyrgL&2g6BWmY18F8-q<~XVX0}S+A-~Nu_+0TA@UC6O#lV_g!kT$?% zzO-C)X}*!wit5)c{=A8t%}R_cnbJolDAG`JQU*BB$#k?zaI&L<1axZ8_`wV3m`<02 z=1%AGFWBYRY8l0Rj>#Z`-kp``#1DS(A9AMa1BRz&Kr}6#c;a!xD_{9PhZnu*WwBXV zI^oig#mk~!;_RkXPK&jnWT%dY%F%sM`qQeaXKbe#LHfI$ceK_A5iUBikNkvJ{hF1M zz1r43ClFOEWoui>9`?-1tn%Y?df9ctE_s=jPR*>twn zuK#rS-QWAeI)MSdvByz$wWOzl4UX$OWO-;x569`tfX_Mif?jC5GkS^-B*-FqzdbU< zacaKhxN)G{sjU+Q(tpv$wso=J>`r8i&L?wlEbxXUIF1jnD`nXub$RYP zxsqI3Q3KNOmSqwAp(>klvaoCPy-zS0SWA3BwGhfV*&9+iBJ}Gr+RzX3-aHCty^g)> z%VH!{U(tq|6eEg~!cm-Y#ciE))dvon0fxq-wemq+8nS5ZBJO`WSbd}R6s!oKU zI8B!lBtqqnz#93KvzO;K&Nx>R(Cy@fQ7CE*5}tVxj#~zUpX%>v9!8Qs( zaPk1asHv3Q1nKJ1IUSLla|!VP6?tt0i~gnKVGxM%g8)WWe!rW&T3Ny23CAAYnWy~w)!bcP0v1Mu z{~ml88}kpefOI=4)2h1v{tXasqnct4%E#zUQ_+O>82Z^Y;!$z>aGh~wy$f&T6m`@ELpPL zWwJ&$oJxjE0fk=ZUu#6c9iFSpYf2%8F5y%7;54fnefD;w+N?hPTY64MqN~2(fBFbN zZVK%@uLw=}k}_Ttr)g8pqh(ADcrj~P@Sr=@BgJEyy?%t9hz}x@N zds0UzxfdSMh&szog-?8!%1NH+a_xQWW1pPq@XF8eJ}Z95Cvq0=yRugK{PQo&?69Sd zS&A6jeB@z=4M!YyNb$Xy=3!25dW;O}Z;QX;!9|Sn-5^DjH2jyo_>WEE z@NtegWF-f8>L-|+Ut3P)t`eMp?9_)Gd= z1`r>>Asc~D#=6;Ue8Jf?RRTl;p5P3;;4+gcpw{bsQ(xK=UB@HvHR_VWvuB|jUrT?$VW|pzX<(8^ zT{pPW82HtseQ=hXHt#`+B@?r-Pz5mOU>w|~=mMj_`{2xxs`mn=uGQ+9EQ5g(;;^Uvq zZEH6VOEZnO@4kz3n0XVYh!%LQ7oH#3IluZ~lhLM)n}(|{yDU-NC3%)MDB{2&k^~o+ zx~F8|(}u$Iq@{;8?8C@Gqb8P$4iLS?NM=@C1*e!cgD%`d0mf_%Bbse8J ze0a-nz;TDf8OzawThD*ot9F5Mi@Av>7^uOquItzg_>X1irTjkkj|Ml?Ozx|t2 zbBchA@LzDjR}21zS)`5ZbBuCx;ju?&liy>emiO?DZ+vS-PVp-_*<12{T)zw-`o?cC z+csw_KV+Y5xO@Nb{O3PwI54L`%}V6%KR*7k^=CQJ=RW_X;gjcmdieYWUmH%%b@a zd2#&MkII*S;Gct75li~JXqabdpKk=O{^TPQ@>WGDi)V2M{wo@!UO4hxppova&G`gG zzSLnou2Q~RBE)us2k+HDJ9!Jvv~6}Sl~udwtnc!WTRc}VC7*%8mhkJs;Cf+#fnX3+ zgg4()Nkxj;K>A05fi-K_7d-nVa3mNYI!+c#k0r0fJW<~Di7G+>;{~~jVpKq@Nafzu zrmz4*s4*4NFs_Vo%Yv=HPz5lOP+m$t~rV2J}TpQ)O|8V5thYq(oAU^oqC)1i+Gdi0ml#x`*A!T<4 zaJOG!e$!`le4DmHrc_^-BQSP0q?j&-_j0lVJN#{qqYb|dj{gX69aLSdO#kQ3>yF_^ zKf#XyDQ3Un-zT1sMn)={1%`Bf@*GX!a914qzQ4O(-07cPHwdmWkd9t(k6sv`sh22%swdCa+?LIQxro8dW_zanvMw5*s;5S_X$POc zU-49EenHOUefUHFL)E!wdDHd}NhIuoi@sXC?!9vQUkW2I^|F#U|B0v^zUn@ERkyIpm3Qq(pDH;l?We@AaQGYuA>{)tcJyB7^DpqcRMU6ZER9wnHj(C9+sR;-%2jsUNN`cgrMKc2;`HOMbN+fdJCwG1i?@b6Osx{u(T$ zu6j1fS2{TTxFLhUzx>O$6|eS%2;^NR2D_a=IOJ5q&#V+QRiC}TE(5L?z33&wo8I&n ztwZ)G#2)KJxbs4lkQ|UXr@p+-`O{^i~i&z z^-c6<_o-gp?H^7pouWSF$e%vL0XlM;4UR{-yjum62W{VW4exr_`|5OsSy5im+h;uE zc~wgN5}T(F;D63@o-q|~^4)y%EyFokE+c`tkyJnL_K&*Drbk|UN7nKSlG8we?n2Xb z>(&pi`h!0m{@4Ha^1IbB?ZJ}h%*X%857nRdY{0iJyJEN?OVqByv2RnJly;MEM;r0;0hwx_4%)#(-aHFH`%OUkwb+dhcN)M6_}*Zo9Q^dJ25#wl!IZkmG8ocCKK+yR z@o{wR_3D8}@RRaz*ZG>SW9su;zefL|f5S5y5=hcN{2yBu*pjn!uzEbhKmNl{`cEfY zjtUQ@pYu-L8kw&`FKVr53K|_)7+upxIn={VMb71&6QvDN8bI+vS}Mkr3lbsfIygQ( zvVatwgFp&chd989)e!&;)((c396U^@oDMXT#W;hr_{4E(iCE;FJjIl1NQMQur3@l4 zXCXF-km_8%7;r|O&{A69sDcc=3nY=YM zmHw!&5S_dMAPeLdWCL5S#$*_!)bDWq{gxh>uj}gNhg( z|EB7SzQJc0DCN*&%RYT%iE{7*A0vIM(3F1yPB~ZB(P>j%BOTh&6|tJM8T!D_C~!Ur zs^qyemKDLCme%FaZ}^jxq4S&3J2zaH@N@n-3#nfpIZN_Q*e~DFv6X_Rd%B|q4u6dA z)@Q@VbcZ*a2GKF~!n;4bZ4;r-44$**b#-lCJND?K8n`|FwRw%ht3AouqUsYor9MWS zGyU+KOfV~f@7tGO9v;XbvS<)vxHy6xKH8dRj@H3b_znL%Q@0pnMukuQ=_k#2^Zh;k zdN$>~{`GH6+iidf_aaJhc1mG|CSWu(P>yhjuqDpb&Rz6}B~S)Pn~MiI5tO64uDHKb*E2F+y>8VfssadbSujiL!>C@R~zo~EuW)2@i-2oGNwvDc5-z$v{BiTOhyw47Q z`lqjpQ`z?~kFBT3(DIZet5Hj%;NgZys&kOpU@ve|hjV#+4G_O;gXzGQ0dhd=y`oWO9u z;cH*}dbOu)^US=Q)qH53**mph9=_oXZwViUX9Axn{&<4WwEXlLc%-%|?dj)$9pqNdgQoC7bEKp6LB0m;Tf6-D|EZ+H%Iqq{dcr{`M)G9QuT| zY-ri-$Srzu=-3rF0UNkm7otfV%>>=>Y3YKLmq%cv>C-gVKYjz}7R9Q(wo~H~oIEOFw)Ik9{mL%$3wl$ls^Sbb@tb*!d$>~(OL0j^pg@krw z5KSYq?V$0aRaliIQ?21i#%?50+%TbrN_YSqflD<(Y!p$LvKp12VoZW$>tHph6aL2M z>THH-rv-6#6F&I>PtYkTb*QUHN7@Hx!&Sy4W%XNB4RZVFoB&8gC7(_U!KuDZIpbjUpf z;}5bLQ;=(NZ7vDa?~zx0QtoBQ3LsZn<`~0Ffzw;Hb}ftycT&+g1m6-`I(eW5N2z00 z!jCn>rVjcsb&^+`(zXZTqOUzL&gQhtpfJj!eso65Qcnj~+bJjNvF`Tiav{%w%MM83 z!{CKp&jXR&3}&3jZbU;E`}RdmV&<;ix~yX3Df$Ov9$B{Y)^d_<>})t3*#vzUzxy<>*_%ws-gXNj{Zn8}E$HA)`pA zz>mRj2NQCbK=c88S)(g(*>vxv6X?h`1F2`{+b_eWoMg!wTz(N9!_TrurpnNG;0P~* zQGWVQUL^opMFytW!F=HzbAn!_b_w>wnN-TvN_;9$}SqT){2RAaU!k3(ou?cYc^=y zo=Yf1N>!{X${k^=kpQ3*1lcE~LCh%dKKneki6WlVp&pD62@QBVgCz`_$@}^@8mOw17ZPH|}0clC|%v@_momW|*%C)EAD2`m4|(7qSbh9OD;CV#&- z{XcmYJeiWg^q4~1;M3Z4DNoU@XC)l^9`)cWDT+6JYWj`4)IkhbcAZ%s>#?Bc~8 z-PcDBGq~iRmCyuF5GYF|Qhn-WP~vn>3YCym75$_f!nBEYQonB{;J4ab3c;xdA-$aK+;LVzQ(kxmtEX7%cxdrl5G2a;tCQuVQj7Krl0e>Lr! z$fLeDABt+p9eK_dvMNf1AdZxI{|Elw%YS#t(v$SI6ge3|1~eOI6RJa@k9UkveFiUO zJPUD+zjh|#xJ(@2QP<5vNSY`e0;!g@y0+O&mL*s8vq*Yh%#dlyEIpx%H*dT>x}?`A zZpsM{TeE(1M@8Ucq(aMe>sOayoYtm+AUbMK1gT9+asnhtR7juh?S!A;F@V(iQ+V^t zZ~A6T6`UD=O!=%5>C2rXiun3Be&glCcfWhhloI{uInQ{?@WYRJcp3RLS^BObw5bpn z=sPQUKRVf99i0-+Y1<7!gw~h(Gb@onaFZW$q^!S^t%<#n2M^6k+F|tJPy5P>#?DHQ zee9!#lTSXe;BTEfC&!r`nq%93VpfsN2K{wx4yUnc#14!{u+1!#7nVkidYxfu+Z#tI zaI%k_EU@eUJ8~89k39ZK!yDfCma-jttM_}obC&vV{K|hD&dQQCc9o4G%j4+=>>?em zA86Mn6PaP`zz+YQ*5&4NbW%sUaz<+{aL81&La+Q!X8c|hxy8rYRKM5d^yV4c!+w;V z%x|``@RLmC)TLwm9>FN}jmr$x+c2B)p3E+#QP0ZJi#*fCY_>MKEJqtNw`~QJw!kFN z$S)ZC>yveCK5D%1Va#qfyuDNc-r=VFiqvIIGF76^RA2rf`(6E-e8O{;OGdcp-3L zx~(*zpo$>OCK}V~K;5*dqjrFz1at;a-N`t^iF9cPa$5M>5dqkEWSQ@-J(ZN#nPQeI zCqnF5KS!ZfgsByb$*cZRA&yMaie_}4N21>01c67=F9{(UxeaGcE#z4dJALzx^Emcx zRQe+^FqS@p%`?Ia;q@$^?(&vQUD$Y5=K-g$rVQjO+!c<{p`&N=*Ybr)StN5z8ApSA zyC5e}tlzM{90~A)m7}fAyv~U2P6|b3dn5v*KL$0m@i4eBMZr-lXu>I{mSZ*HD|l`}>-MXzlq-Ik z2(xDdr%&kc>#oVWjd23hJ8!~wJvEBH_$mS(eA*~^;a+ZDyI(FlSUfq&p>K2Pfr7G> ziQB(sC7bGOg4$yDaH2(EF;Jm+UH)JlZYWvG-=Y2LETR&+dpV(pgqEU(3$tq-jnNvM zAxeG+SLtJ@7F@@v4Ie93k->Zk209WDV?}oA-0tA>wQqd$Zkek_{vG^-H$IbF%J64h zHJ<+AUk1Jvf6rp!f01C(aqnx>QgCAWZ;aTK;{{RvQW}0+*G)%+axT0PWwj=c)8d@p z4eM?XezRX8XML+{=Z>6{xoqXI-?D?UhambUYjGDWTRJQ_VE^I3Lsw<+lH(B<91xjU zo@46{+HDy3Y;{d|a%Y_AtvL&QOJsyFT84q1B(Zh#DDiuizGr{KcNzbDO60Oz?r1Mv zYe)Xx9KK$c+0pe;FViXd`GObxde5570Q*(H^J~N5hp*If=~Q|{9gdWYnVnIpAGcBN zb~(SLF1vNfvjhqzPw1i z&e_#QM+0{azw}GLFq2>0;%03yY`}H*iE}tR*Z@*aE&b6x13MF1DieMy$q24(&TM@c zdz$z5Wc<+|zGnE*C;rUvp7(rUxIMrBwaM{hPx?=fAAa$vKT}npEtzc}AT!jNDdbqT z-(vZY06+&Xz!x-CDrY%7VWyA#dr^*hSXO`FGu=!*Z2ag1vJdT(kf)|)e6d7TeINhq zfntm2#jcgT3@!O%Wdr#af!8_Bd>H#)DsY+a?0NYaHTb5V16S}W5ElST7lEn7s_aR4 ziSCM?1E)L^-l-FO@=P0^7XKIb^NHHdf|s7^wbv6TK7B8THytg!R6D6N`P5GaCBMN} z&UfTY5;#?c4nqma367?3fl&MGS3?3S*2}rS|CMB#i0=G=U_fjjVjF%V*zym)+ip2&B8A6NNKD^sGwnq365%o94F0 zSc^F0J9nJ5kSO&hibOy4oyY9x}eSi0ndkE4WOf~0! z`NED81pda2fo&Tw`oi=bext+jfE%7T3ubmiu{<+-W56K68(dJ`mK5#HVX^cfh#i(5 za%k3fXCrNR`j`hia5(1v4;c=|QIr%MLqwc*sM~8Xk7mS;He9^+N^6w147;3`Zscwmi3w?MlD4 ziW=u4hHcw7$I)JwzO5_Sm{#_lerCV`-}tSMv}>Ltn+z~M3ovPR?{Xmv{l@Xzv?(`b zB1qCVvR3_fe)|vl$CQ67}!itc_i_SFMz({G$4=km@g)amig?m?c~+>yayPX zgHO3S?IfQ9E^wk;;hvrepHe#buxOHeoZ#XG|9CgyV|}Sv;K+wp>Xz!NV(rAXa^_i8 z_Q{5@(rc-YzSFOwa|IWiX zZojI1hyHzMe1orjhxSQ(H9&YrgNTX{D(y_7xLFLH=nfOUI8KVSE(}+lJK9)F$8t1Q zcJ?_;9a1!&A&Uz38N-9F4MO)mt-V2u5Uze_C{i#fH!D#}@G3_;pxqy^>z6<8(FN{C zCbUTo&85-s!(qU$=N#T;Q;w2x&gcGaYsv93<##(}#n8yG zk2qS8JR`mHeech1>D9S-Bk<;ip=HbV56{G5O<%6PCTH%ZdxsyfGIbdYZ5nP$-m7CM z=7eX_cz&Xd7}IS@bF%i3LZjsHCd`a$PPd8tB~iee0z10Rr}>ktTV$N@P0Lj~blNuH zOKrm|e*b^hnW(3nbV8N+xBQPt{Kr1=nZnPgb6P&yptVkFIkDc~a;?Q#!-!dnb}>X8 z4f!~5+#G=d#OTWjL;;)crs3g)2cDit*7{+24$$9kzv$vxTNk~O`op2YDK3g`49=G> zUO3#meoc-rjGl~4?3XpS4!QUH;8h0=8yyXn6J$<4>6mFv)iVK&RY$DK4UfkTS6_X7 ztu;O%vb-+K*lxP|=3z%}ahj6>^{n*5U-`}StEb=b4^@^BOX*TKPS%pH@Lw7Dv;}&6 z0zdeiUh~~eTRuCWku}7@BU{zw@4%M`RBFiI?9_bNvv0e0MQ`Rr5%@P7@!k)9Y`A|m zHT{>L`mw1MoOs;P!z+I4SB78vpRbC2ixCg3JEIr&mcZSChR}#?1V;UenyxhJRPXkd z%&>6w^_?Cp2P_5XVLa9Eda2v2dX(+<+qq<;*q?X5`+XJ3J?t7*5mswsZ-tBE8N5`;FcYB_~)Tx0>Q^$@m`%>cLr793Qjqy z2IKq{@a+?O=jPb*OVky3M!WC*u8B_tUN*xs$A=1f;AejVV&GC|Z4QesH_mA3zs=Xm zm#-9drSamG|XwaZ7~XN|Dy z2iov8Q%&Kv{Jiu>J{M1*>3rv_0YD~9t8vO0vg>=iYlwBo@%H3}07kFY90vP3D#Tuh zuFf>z$yRly^3;oOn^|^b+Rdp7h^vE~DDUrZfDuoAj8r_84z}|ND>^mi1v3S}>$l#+ zPCR+El^O!0HKM*ZQQ;M`8cB?C$6b>hxVX zpKuy5)6ksk#=oi<eRIR}=$@kQ*7fZA~&dkt*sFBKh1I1#O2mWnYWv(-}up zxv_0iPJt+fPn*U;E=$ly0}}l=!kd-!!{8=tRP_=Bc+gJ_w>=D35$F7NEvY`4>d`6v zZ^oXCUNe}{e`QV8A946$cWYMpDMbnwMFJ1tFn!dodY8|UCpa5p z!lMQ)`dPRxWHHre{H?njr3&r&5&!0cj;pNyL zbM#TecdooDj%%hLQy)b;%RvVFSH602!OYz6j)tcX61XTna9Gx0EivP!|9GZ=t(^`MLf zr__Zib0{+KMBaT?G%fi;%}h^PCnuI)bejLxxC~9ANg3}k8;NIlqWrb_sa-y?vW+rffEB2*QMf3$A%ej z7z{YkVo@%Naq0|uz$5+^adgAjthDN|`wWMz+!^Qdrd%vBFGhW7HiBe;ltu$mwae*S zzim?t)4rLZTa@FRoY5V6?23U)^v&AvMR9u9-Ii-=vzz?5IpYTpw39YBC;6};3-EJf z$~woAz0}f64r0J`W|H6qmaMfc9S?`WCmE2>cY7QJ6UKVRvUmS%!^+`wro6z7ONDmk z=DRTaur>9(;*VZGoO0r^!vpSj(%p;a$$$Q_A096L#y5wzob%p#ZymH?#oiKKH`)vG zD}lk;;@~&<8TH%V>fsFPwI-$M7d|5zAk`?Hw`IvAOS1=`9e*<_)X~tj!ovOwQN$}bJTbM zbTIDDqryFVwIlwDlRm}^pFBfHYiDcLH8dNeo26^hb}&|O(KWT^G#_ShEfr+*wQj@d z+*||9FPfK4!)%&90d174TAHbUc}Gv^D_f^eV5YBXDeA7Csn&;ND_!n9Uge91dCt#( zKaGpp!p$y6HRcl@{SL7CPh!_Zvs(v%7fgH{&)5gD(fKB}Fo@F@+-qlSm-xYRiq&VI z0tUZ5NGc~e{b`wr4drk6{Ui@1&tTQafgwzVn=+LF$%JT3 zkgKB|LBk}D6?34z(S}fUd*^`BIm;0|gBYJ+xr&@(wdqQ+cTzMg#9SVoX$Qyg+2J@G5 zWhTQ-(Q}UVt&Nb)YdLPlaex_#Q$RL{TJM$}rlpKpY3*5S|3;tnab(xrwyq+_bu3O^ zktq=eqh(GlShobPmQ845PU?17J9#vCrC{YV^RP8hLFmM$H!>QYwT|C9F|vS` zcy>YfJ6}uL)&MT~OzmPWxMbWo^D7Qpl`|Tb3~!HN`o~Xwrg$K)|IH*bSs(cDKMe1A z|A&I3I7WdPp7zbay4J@{bXdy+{-HnGaG>wzTqEvyCW>ZZoK4XkG)(VP)y`bdlcfP! zhr4X$k;AH!9xxnu@a&6PCYH2}&8-5Bm&&2h`mwvmJ9El&)IqK1OH{W>caO*9%6;E-T7c827 z3X4h)KmN4g;1f?7mK?ciSbCqsYSv(TPOYeOM$>n?O2nvSF1&3(&L&7cN5{4zOeOP- zaBNY&Lo~TEK!9g>^|`miW{7Zdp2!XdGTOE3oRcfKcSezJ+PHpr-mktaajw=xu$n33^s)Tg;Y* z?#d=VodibClwilGOY^XvvjhGFIO%9@bo9E*JFz4}n!NEJ0t@|hV=j66&_Dd+@XDZS_9~5m z2W7~W`fAXW-(`oRKgfop@9Zf&6;ARjUkm=Cd&(-~VaWq|3dGhWd)`y}{ECUgnX+)r zZX;NvC*{~Yr9^T^f2JBqe>&J_(H?;8002M$NklMgEYoUCI0-=|Ep&1=7pE8qT1+r@E^8YejaRr`700nZ7J@O<^9 z@db|RkNQKSk(acMF7(V?N*cl>PAtIz6r(pXTr+WxjNAKGv1lviXo4@y=o2%R(ochk z+G{kLAR3ndtSrL%>`|c()$0(Y^No&Ex>9gpj25JJB)e_SoZn46u#Cvlo{s8Tug{fN z1iP0RXb;jQBN^qCFv~3b8@BOT|7s^fo%)1YKEdC(>5(|b;OO6Y)0*Mh>#vES za9djXSky@wp8?W_u>}-z{TC8PVCM!V(Y4wI9~EshU$@_-P3;!YzliX=xDDig#AMo*SjNu*djJ6kM%MHUpCX zDq@{{E+ko(b>G_(<-vb=Y&1T*0te$!1|-h6TmKkIirfGVt+B9Y;1{W)BZ?2=)YXg| zp5A9smS=>2V`NLLqxiQ4r%Ml7QR|zn=e9BSyw99J{Kf0vl&hdG-CNgwAn)+(moNI- z@W-!t{p85F=CP9fz*_6!N**$u90!u@aE{@jW@aX|G%Lp7!#T&XkDCjB1>cr|9dPL3 z!@D;?FiUAu1G za88zReE6fE99z8Gr&CXs9k_qtse($$(R`yG`ZFAu`qaoavPYvoWKdl11Ft^$1OJEz zet-m5BTV?do|Ubc1nI&j@W(c&U*JWXB`bcX2s(OKdph!trQ#kmw9Ih+ zl>r!-n`SA4Cn66jR$tIse&7gqMVNzE`bVGfF&iQ%T0TJV&(8xh{FAZGn+$Y1pxK+8 zgNKxd88G2@eZq^{(I<6#RzC_W-A`pYnmp2?2LO1!@dKZY$Hry*dF9i^xf*FuzFvTw zYt5O)+L1s?&ZA1&A+6|4o)Q>NFkr3w9M4uWvSDCbn1r!4$azs0Wcvdw2a2#0ihiz4 z3x4Nk*f|%b*_8n-2V^YoJDMr4EJStvL5m-OeT1W#ic{X5_70LLfAz`FSV^3XJ5u_e z=jv5gij{#M-+QDlnj70{qIF%`@J?UG=?KU_Fw@D0uR0=;owZ?}I2#+*4L9F%Q;f?^ zSvPb`qG+2FL0mhmS$#{^Pu@7(w*K~EbA)?+Hi>LZ-gUVOHe5O^%9@~sxzypNo3BkY z;^yJ8kNeT#F+X%>(GVQ;zrLe`1fBwD?7$wM`ct?_f4fhXR8Xd!QJsX(Cm}&UIF+aH zmvZRJSrw7ow#BrFq3rRX2P;?$Kuz4Wq%hWqAQ)(r1{ z--mL7!&`>0U;52FyMx~Pb#EuIU6jN2U;BnPC$jsoT0=e#zUeZNU5Vi;SqQ)5KeHor zmc%Jz3=D8fm!%w;q2qSM`86P1u>bPmxci?zoPI_&nPqM0<~WdUOB(fQRkX)HmW+uQ zjr`3pW7&;a%H%m^u08AG_glI!%MJD)Rvx@Oyg(1p1G|Q`x#H8UYo7hYk3FuJCGF9U zpO=2?ie7u4`tiMppi@+qByw~>)+HYp-Ged}^`27RqfJ>_q17F^x_bTE4W)DEJIRE+ z1%SGmIG>C#JJU=?;PRJLk)nLZ_W`5+0HHu$ziRDY_{7b9+mR#)F->HT3u$}zwx8(r(g067I=@pTO7reshlgJWT z!yo*X+7FPvaRzD4a;YY4q-K4V@D7KI?f=y0zBpX<&sW#;Y5%M|CV~Uy+XRr(x%my}{?u0ij+8Imkl&@}Q_ifa{2g#fevRmB zAO=nWFDr`aON?l>gux^WRA)wB6 zM^s=mhABlc`m9GRN3bOM0VhESz@^b)_H682FC*ygSnLc*BXhM-K&r?r#K$mWxIn87 z#ODlgzBEavfw^wg2;7i>=+fvUK(f|6FF5i8Le&d?2qzf&R&6A&&+1aXBf54x8ZdMnz!?kkF$?v`U?j&y2e;}Uy3E4mdQ{sU%K$C zgK45^>9kW%8csRs_&7J;D!B2XXr?7ElqTUVyhq~Twco|K6SUNg*>@|D{MJvj^X#PK zj~z~bz-iN(t!H2Q%0*p&#JP9Zqh;Vn=gQFnH!Aar8UzEkk zkN)F%!^5%xW>#{H&Lwf^@Yj&_>^(iUGmgRP&~;&)i^U~dcr)x?BVx`u+M3p7^z?C7 zDn1RdDykT|aVp3MrGwYzCGxjE{C3mLYclI_OK6ofl6hYWGRr_1m{Q19k$T{!2Rx#{ zggKZ`^Qk*Jfbj`86#eHr+OXaQi^}8!zgTy!&b5gs9}tJ(&=m(|oq6BbMj2C{l0ILX zt6$G~=X*0iJYaa#BOY3GG;qAPk_f1Q%$E|q7d54WdXRw=4D85K`WOC~AE&oxf12Ou zL$m7*=M3&;gNa8^GY)@{|3SF0GSsX7$nO zE;nU{2o1}qWx#AEXWy)`Uz&k~dQfC@*4Q7IO*`c0*4(7F#hUv(cln1?N#Od(tOx#) zAA0z#rsD8jFs#0HO)X`i7t!gaTW`2bZa%3|YRxsZ&aP+5lL`Iff6_ zPg*%8b#*h#HY2sJ?xhmj6Ici!ad@pek3%20wx({&h0xt841e*4x7E^x$2{_(Q)@i) zjMIl-f8n!+4}R=ZQ{Q{on`zmoG*|M95}odl-+m^~tVB^#~fAPIfWef*2S}G zXq%;t(m9iCCF7HZ1t+ZKeZ?z&Yj!1jyg57h`;>{UA1v%h-O2@z=(CrNjq*w(F4$7b zB00_8(dP@Yf!4F`KRca)UY_sFpl9C)ee|5={qUai>vP}8 zpyfsq`AyUy_-GxcuCkpGT6w*oo9P*WDgh>rrFZ0gH~*v#vl?sHZ5|HF`ec0;WC%D_ z2iu6G6{L*qSeIo}bxUqR0d*bRWGA~n^0&WWSDBd{ZPj2FuqsO`90q2f))KCKsoBQR z$tNDHrGd#?`aJK+G1~df#x}pflVxEBGvUX;A+aIq9tT0aA%A=(pw^LPbx8aH_~(bH zqv#Y9Qu14MX+ITup%3Yc?)aO}G0InO3U~}_O4DL$3I)LBwI_Es6wROKqa&%L#vzL0 z$H($<62?5*#=r!wyz;={cL5xyENG|>Lo7z%ls1t$WAe4|u(x0tqnE`Xlg``Cr`?f} z>|B(T_gx*nGhhrAT!^fR$VfGU3Y?Iu4)B9PEgW@51j1595zo7NZ>W^i0suBlq>kVt z@F0>po#(ndXJS6?(Pw5e)3L)*M;;bql4HnHc4MYP?sMot!@(<-4a*PCJ@#?%4KNUX zWi}t3cFM8!&Qt-IZTNZYqs|QTZ_Rz$>uNMq@B~5DTI(Cege!Cf^Q)9`DgKAlE0S5x(%jh1r<)$cLRVxRGpH`q`iQ@!_?r-W#p^xE^TfpZ~xX0*v!p5^em$Nh&M`S5IDyYIB7>lxytC(^3p zOER5i+L*!v5Z-`eG8k^FK9x}C_pAi}&R`|GhADn)kCKDCQXb(GOBxI!_CdGMpJOb) zS%r?gVfM5cJ_19fJlY;(Lz&rKy(_vxeWF@4xo!9&~sz( z-!k92jk1KRQCE>Izy(z$d$7xRRHP*MC97Wcj6s3{aT527gS-0X8`7^tXA|u|`qWcX zM+{>43x3KNq})+Q-Y4xR@>-pr-YJoaiW*1mZ(V&`>A!s^8-LM|9ynsvA;Ze(kQ;7T zQ_*7UdiRN===@G_(j|+t#N@YL{JiivNBr*TTbExsTy*iJ!|mCmwtV^Wl3{eg2jqFv zhRum=&CS~DoD|{tjC9+Y%vKn1hu+S2U!UpZU2#74Te4r4bmdBKk<}RQ4LMpW5*MSK zWfR%rW^iS_`dmwDf}>ENsFd*{X zUmwTSHe^~|V3)w(L6si#dN%e8%-<_SJ}8zNVifeMhJ7m8x9nyCLgAE%)oCD(sNKH^MB<9*38|>^Fu#`O~w9 z8xmRej#FIvMV_=dzc%K@cgcV1Ecp$64Y;>%>6u-y(4ztuvr+{If*<<~kQYyQHtMGC zb7nK6KlwNGhIgLZ12Mn!Li;EN!Ml>jAh~azO#U6ce5ahflr8*?Wg_QvPwSsvo<{!I zXnHoFr!Bg&@lLL5U^szOUZ?vsPTQ9I?zxSs+GI;4K2+HTeGSfaxBVh^pC6|Ck;UXw z9jAM&6a>zYOg(=5p7$%vlARsw_w0SfzKLWZnI zl+A1$1BzB3G*;0tlus&V3{dTu^rz>Ipa!-gKj|nc0-Dpsp}8ZE5|YLB))r%qjt1$3 zNT7DpOud6Vd6eI@iJ%Z5M_To0vGYz~Dy7;4D8Wc29UW}sFkB3b?(D`#zK`{53qiC6 z775NEl%S90J;yARfN7hxxz1Dc^|+&s$du{UtQlKVk+$1zTR$9g-&Hv}XyI_KrXUCr{FDQW^0N}=Hrg{X zg(FPXw6S)xo!xShCRKPZjY`GTO*xNwMxZ$4*7m9+APgV;=qD=ww0}gCpZ;?{6DRe6 z3FG$2Sza)Y%wDh&rr;RAwEzUKp*J`rcy?OCFaG?KOX%z2lz%?{$2PNWS@>LIUiHV*LcGCZx#My5V-BOMR=tkvBaC!;pW zr5wJ2=lOFph(K=HQWpi@_zrIwCox($RAo6gl$XNMf)upj))_* z?0}^OUn#4!rB3xw#&{0TqJ@D7z4MN9KQ#QzPd<5g_dDJ>+;Yp_ql=o}TXJijDEuG( z$?JxH{N!g#hXK^!865Nq97%8hMtTYT!4ryfpTQm4*pxD!TdkZj#k|*n{#tQ!vTqI%?}UejP&5#MzxG3iWcw( z)pYgLZ-p~~sG3}C*1Xj|oQKsAGupf;_yfrJ)ar&mr zo%`rF8u%OgHmeTpmL5o5_>A)_I;%dm9p8fQwXgllSykNSxqKbaqLb;V=HrU?rOw*> zkiJ=RFe{Z_C^@@BhttL6r>|o+0B^hc+CTrJ;YmO7W5fH-ed}=6S!Y(2wPYZf(OrzYkZFxs$SCn_c%Y_H}P=7M`C2JDDWbAkIcHl{U^*!~ByzDp7II+#^__Xl_KV@9h zmp^t(U&(Gg&qFp(9S|-*IMwaHV$8aSImlx$34@Vf8QEm+1HVI{Ac(+tr-Lf&kz#j7 z>y2<7NL%>_lL1s?I?zBXM;Rywc@5BpL=fx%R8~rnLYNNAixDY(b?Jcas;BF3qG?Y# z&oI8a7=f|F>fIWJOGXGmt${0sY3EK^^^VG=5Lw7m4+n%mYO7)3giySmJNFkO*hLMl zV%R(fdqw5~GlgH#!U>UE8O_P`L#FxCcZ^XZqQC^-&WYscsvkZ%7o2U$r@S0YpUGU$ zF}C)K;Ca$d>($-4es@akTO&?K^jCcYMG}eZg~{F`Rtjv4uO&Im=^0YxUJS;-Y!e!TW~ILD>6LB<8vQ z^=YLH#T;(@yy(12Ll?@)} zC0bVwap2@6iMIG%Yk%`QziQfe|148jkquLpLxn?vQ>Q_+az|$lpgwb?N7MF4Q=c|`_=6v*_umix)hD9+>KNF;MUNYxnqE8+B0%wpn7ADQDQ{s z+F1z?Iz51{-6!8I89FGlMdJol`sLQuw}+p$3o?a@i649XqlZ6v z#Y+=SK73Xa!`CCHU(D=-*(Tg&Gog!6)~(IV21h^mqi^uZtv9V6mc*f+m3G8=+ML@T zZHPq619SPxl1wLW%NliSx9wh^8{9h+ba7^|4m@nturmCA)B_(nEIjz|VeZo9xgGA% zVa~peU(2*;PI!p*DCd;pX37>nhjYpS_K6m=5_wWS9T;}R*|mE2-12>zp=O8=+4GQP7NT%rr+HeR*xO3gzc^u#xR(@+quc}! z?OTAg?Y2PIzQfC3{+q+YAAUyFa!?$-zxvBR8(#WbFV1Y~vVz?UN8i=*l&m+;kCgAh zn2n^a-gB&}2=6CH=k|7BV$*w++!5+_XlAxC|_#S?J z=QP57;izm(>*J9J%2uZ=J;G6Bamb~M-{u3Xg18C(ir;H_K{GRsXg1_iwbxG-7%6GuQd%x-J=HvWGdtj2M z;UZi8tnnAz)_RXTm9dOo5N*_8hp}n+aeW`?ImJEtXb&I3DC%-=s6fO_QV0YDs#7@|sPPJLhjUo&1B+DocYxjrQi z=F>(w-6aUkXzFZdzwv?T86KVR9NzSi^Nh(Ma~!p~PWJyqLEe&!3}z+MFi(H#lZT)B z&ri(S&HW44a4G5P2xAQZ2ok&&$2!1&!SIB~J!bf&r$4m}X%(9C4~OBL9FQ*QPbtN8 zx)guvs-+qDEB&w9(}sSbI|a8e$1vefxV<2^ZlTNfo4$C#MaBD$j#+u=ibSMydsA?@ z;*gcYqNN9>PRgv?p90|Qit3RGiE;tAeyL;innaWn zS+3E0p4R%)w6kv_X(hGk8eD7Fv^X4@nm3C8oEj7a)~%Ekcq)Hzn)(?qWlO=OFTQU~ zq;F?riIIZGN`=12?nJ&RczoTwO&&2)!y(U-0}dL#@vSR|Z(RCM!~5RzzTup=y|s?{ zt4!bHpPLgEe*Is+efYrNe>{=9UROuK(p~Ljhv&&aU?ThY+k3xFN76HRz|sN()~0>1 znfG`JVmTh_(k(P|+Q!m@4k}t~$do>OFJ5Ae^R763i*nS{ekq&N4-Pu8PEJ6VS*dhe z>eN>0nBbgFuykNSWPkrGU!c<#2e$^lA}Y(XmiNbh^s&Rsf8zzibAR#Y_9`2$YyHF5 z{AHc`U@%S>k!zovTr@Si^h~Yjbo;2)tpCgCm$K-gkLyz3O#+UPG z;Az0hc8v~#>C>4Br{3@qANP$s90kG{NRLl@;Xsv^&4Nvr!IK}TPg~gyrUhR z6Woz?k@A|k8k$3REGHzG(0`BNpaF%VOOH;QaDfw}Dn~y-xSG%bjo;b1k1tvO< z&!q<&vKhAF?tb`A?l)#h<&NmX+EbB2%DD8VdC`ES{UmL8roO%lpzG1~!eicfFTo>x z?M{JPnMS2S&m@u_!1SZ)jy#NkHf8yUd^oz#_j2-6Vc{v|^a*a2$r@g3CnD@opp0rc z7b)am^Nt`y$)*FMGC-{9NtYm`!zzYE)0GrsGkN8z_m~g?5MBq|vgT9&nyI_vE~5aJ zkUlUuBgG6UE3Ys;BF{@zaL+RsguZfjH=!e*Tg zhBk%g6Y-ikx%g1kQdxT69s{I_BRb8Vyw z+;A|ariVNn8gOkS8x8CcMi{c*3)aF-B{{TnL^gSs4AXm!vnAQsU3Dv0DY-H z3O(S%q4ygSc}Fv(h1;8NSv^?Vu(yjP_Jrs5I6dFG?DC@jqBth{yCnzTbCeb>T9(aP zH&n!TN!B@5JH=R(DWwtE0*BK*M7qc6t3BKBdsWUomCxX#1}-pIJZ0Tz6yZJ#hgHGH ziYzP8P#MGUrnR1;wsRuW>2y6$X9MS);kMlJ_0QSp!8kE=k=kK?oc3CFkTSt!_#w_? zDJT3F-b=og}}iqcO8TC>t|;dN){lC#^h)X9{l0mZ>95(!ORHm`EfSLC^+3&&*1)X`ZYHOkUj*diIm>I0~xzK`9;dIVQ4~iV`ir%rA zj4^gwVy*AY_ie!|zJoLUU!PgMqYpoOVKD^@h zUo+hAloN;hoqWRVM)r84@9^JiW}A<+D|x=l`gk}h6+Rn!<+pC#P`m{fT}9iMwto{R zCNeTBX{S>9HYW}iD2iVv1<0Rv$bhxE&wcJM4y#r*O(t3D!>K#(dbj9q+qGVLkPXFg zG}D>z;DX3j-Ya<<<$F1ig@@R>WCkI9G4kxgviIX8!3t#x0 z;hE2T+Hl@^pBp}zrD~u0^yjnOZ(Yeay^6QVy6d6Oc<_UUMA4Fj8A7@TCzC^Jj@4;ut9z^|`qxZpIJO(Mf>W25u*kL?N^{*)2H?R@ff1h`?0{!M;) zAa5LGXxDo(Ir@b_Y9}`~Edhx9OrAiJFSY47-?yc4`oTz$6ri-LRw6 zVpM3fG|vIX88J*S94EuZg&3_MNml_Y+5pi~jXDB+b)bHC=e^S>sfdCwK@!9jas#zd z6NnLHL>Ayjqky?M*rJS_mpdD)v3k9m(E_w9_BahCl-h#adkf+wLjxcw79Zi-826pM4*{$q`{=*T|S=m^q;%S?|;n?yW4;NkN+a@w<0d)OGRja zMjQqa*0=qi_YBYYxhMAsaYjSd^*;1JoL+yJeQlye>)iB|WgUxRIQNV4T9zpAc;w8C zYIZ-S@ZNFm-_?l(9+r>>mqBIGu!KGaVZ=Eebjw)t%gBE%@J09dgGgXk|M%nYx>;@< zuo?7Nv#aeINT$77r&zn$TN#2Cui{-!uWL26Pl@j>n)Qr5A|mSfzfFIe4J|K!b@;vm{NwD3RD?lmRs~nqX&>RwZQC-f9^-UmqIb*ocN7eo0FR`3IaBJa@;^c^FNzn##s^3df)>&iUkpO?J&xl^A0-#?-^|LpZ| z9lm_=CFw_uK_Z+7WFRD(e@ixZI+ku@HuyLVVtWRMSA2JM$=!z3EB*CrUNP&{ zzxw&RKk(7vWtZhbjLnJCa$JLBMi~vrN!yO;)f;@p+l^yIf0DJ1aJF6yUxauzZi!Ty zW!aV6>|CzYMmIOug?7LE|Ni!H?m1^?)8+ot8`OC3UhpoK(7Qw=)r#UiZ2; z4X>DTV#Di1e^aK~&FB1D)QO^Pv_*4H`m^10e%PB;hS=P3Bf?Nwq z=YOxOfo&9i;uC+Q{xsqgoEtNnaP!T#WO>hu;m9Kon;B%eGf?cyC*m-pkb!QxS2|)| z4NRhgBew=fJ7SMHjxvDNcTw1i^5(m}A>+&%{e{N#eJ_QYO#KJnrQ4zh1q^*RBiE5) z(aN5^-aapWLU`8_0(s`o=dbWx%uE@un}tf9$uF8~_M~)M;BrN0>v>X(PBi+{|b`)!F(FL7*H)Gl{%4Di7N zJ_Cmq)u}v(KZc~<>9?2dGr$}DoXq*7pOZZ>7KN&BRbOZnsy5A{5AzJfF(OBwWvkixhvG8Xz$d*L+AjB|+F$cdo0P1%G zZ1miYm<|I>=i3p%WICigSc3ADErR4ZLIa+2;(0}3stxs5#)411eixD$>A;OBo+}4l zpNLS5B)U~d67lK^?+l}vq>lcyaRvuw%ONyDTx~K1}?N7 zc?p!9G@JCUzWUnX?7w!Xm0Gg7q(Tb~)K^c=OwLuOWsPc)~*= zL*WZ;JS!oG&?GSX%8|o^_`VfZcrr8;+57h8SClg@|MyCi;+HIg2rX;yGNFey(8dyn zC2@f2(uw5dP*Pr^XpFPOxR(JTuPs>h{0H?<(KEP;@C7e%7$X$8%h5kUNF2QGo5-W7 z|LR+m=A0`mlibW+HCx?KZNPDZy?s19x7|t8<*t z%0xvEthLBr{L1;m*Dkzhc;<7TKb-sikK6?n=Y95z!{2}WlTFvW8I1@%*E$A$qZHE@ zvVsmZr5D`V!E9EEb8mW-dRM-AM9*50gA*@F#anbo9*Ab{h<}rqP%B3!_RDdhA!%iQHh#n~{qL4agLZbgbb5e9SNcjm zrT8%F@Y`oOqp4@q-`e$#-l6w=XG6E94(0c)x>HBKgGn9uWmAp_R0qC*d;ZYKU+o*U zjo=7s!}1&sbp_2*F}Sr!&y^D&$Ct06(JGS`jltUIvCm<1peqtJI7(0-t{ZVc@Iv@Y1YS(Xa(0DAF&kJSs7v7mB?Si@5 zsJc8W5F+<&S7Yy~^MITOI)Zo?L^Dp4vY~(dYIJ6YzMR)&g%Fbj;v-0 zySf_b=|`R+h-V^AkSmXHxoFQgl?lcIJ3R-t{OyFdlLsMi01|7`urquVf%2>cU=rC% zd9X_Q!EJ(XOP!d^-!ir2#q}neSQgJDev9$B0D13l-8m+y7$e|PHy+| zj=sT;W&`jD99=nymR;p0&c;hpTdHVa}JzGJzY1 zlka!>@U=_7F=kq-cBr&{j7)dEzrGBZFVFj%Q#`T`;OBk}gG%&5p2Fj5i;lnL_^!TEMt&!snqgT`}U8oS-r40&>sh z;aB>+Qk;U%fBq}OYhL%}{{21vRn8jVQTO9P^6z)U%t_~jW~0@FPiI%zkyB+y*~qib6SW@ z{;{4aoPNNsIwcYFaeZ(-nD$QqHrPOpvTyn9$Z=>y@bX@OWzP-Yx$FxLoe~X(8lw6 zSM9dng|>N|W8?CnqPcT>F>>G2o?~7D45JPp4coB@XZ!4GqKlg9fT>tDZQnAEKrk{V z4Jq3h>kdO6W>%(!U3~;i{z5|95QZn%ttbeRcZ^nd#CQ22%h4PR1*C&lGNob!jvV$JsFq%S+T#}U8x)m`fuhGFnI3vC82S!wm0r8|9 zlmG<}+BZt?vfW=q>$bzc*4G5*HB|xUd7}~r1~aLna8gahQJ&<56LcI04vO{pea+y0 z-&+YNlD2Eg-S@!dYGldM7lI6X_|5duTh4jc@Q~9VFg)f_53h}CmGK_ zMLXyn`o*a&>d`M{MRi?dU}Kqq00Fj++|mY-Ika7o%3pfF7{iRQx&p)ckN9%3h}13>0?fy z$flNZ81EHGr&kJ}bF++Y>7xCkSF#}|cwV>WrX22nbLsG6#OXzI^P6aH=xaS#=*t-q z&>;79?REOiSu>-8{(NCeaojRj7f4uEmj6t@zd8=@{ZBhN=WX}#STmX|x%N)IqdsAW z=oNg!Sp^f`+Z*g1C1o$vBOud!H#*SjZ+RMp>h2KH7hAWoJ#9Pa7Y@>>b1Gt+euIy! z%+IXN=RW_X;WMB4Li)TVj(Z2Vz}k7)@8B{_i;u>=JmhV3deyVfq}<&hYIX<5h>LP| zld&MQ7Q-jU+Dr}qsNfGjYh&CT zMjsYD(ScIsi43UMsWVIVv)rdod8jc~_^37;R(>`epXW2h+04;C!Q065U}8hNei*}x zf==Bg{NW#ZssVrGEm z|M~=E9@lSQ$`PG(5JN#g0bU)alo+ITh!GnjRX)T@`K?NWz#Zn)t@ojs^% zrIRWO4zQFHR4sXG#MFHb845n_SM)Uf1$Ujj3s-3m6L*`9OKlZ^Jd5N{w%zzt`@NO$ z4PM|dj?8X-ke%ZjvniznG7JZY*3+Sretzcj=jVv8i-(6kFJy31xDL+1gI^_i;S|quSXvSHU?QZ*yX@4D(4oog z+t(*jeR+7-dq76Fyaloa3QouiF7?Y)FU`JBU; zo7l+I4>ASB^t%VCRMs4FU26~HfY$kuD;?Mxh?Fzaky6x=iU0*;fJ62gd9x2c)04y z>xRt>w+yd;)7!FCAXDFou!5yFF@&}T=s{`Zx%GuM4I=GX0P%bS&GeCx;N<8-6(~7s z+3rCtCzq~jKAD$wb{ye-_a)~omyFhC5yMo0mkge9So0NGO}lY&m2sZ7W8zA7wRsOF zxV$lI86B_niSs@`Y{Qs=Gc;YvCZU;Pb^9NYN>tg~hXMBpc#FgLOF_XVdE2 zhl3NLzkPKsxrw8+&?yb+*AFty%^KJ&CeB&DS-&4g>Ht>*XGX>>$ky!}0{83)IlSj= zvnb{8UvRQ(N1S}LPjJI4yq$slwlWS!a5L7e|9D$ub97#m-8tD<0v>;K*qk{F3P$f|C2&aE23I@x zY-gM!^ofkn%Qg>QcG;D~ufFJ|!)uPY@9@hnc+T*{k9*W^o!Pbg%m1|}aupn5Ljp5?EgP!e!H(b? zzKsSR=G!qYvln&RLWpB?l+<1^C1^zAKK8YV3M?rFxh}iT3n&0^%I<`CkRYmtJDNEe z0i^vRQl58*b!`H8faAPMqasF32v??dk*8x)d;PtU$YN^7vW-qV4K}Gr7)lAh5LCUP zLBUngq_n9I+OZf~J?-$!sVh76+QknLTTVydHeKVqO9H^ygHI#dj7CGaF?Cz5P(#Ba zK7%4JxU|b56J=0WO?6HPq)zWSyO=>9jM7IY8L6eeQKkk2bLO-XgX^w04J3^YHr!RU zBVhN!rxr^gOct<%onw@MNYPZpJD9G1fRiA|zbg?s%Lq8BpUWNghsS`NeB$wSP9kF> z@2sT!b-Ag@^!2x|_|9-;P7y#;IBUnG2O;pP8h8YkzoJ3#5^*W!7=V-&;PQ`Ysb$5vo4yjL@2#2dgB2w5 zKPA`jPxSr!J(T5v#BxD z>=YvU+>i|`435o!98)qTs*mO++xn2U88&!C2me{SS>MxU;sVLv#zenFaKY(MGVmO~ zYZou#V@g(EIFtt*uqW;S>y!X-n7Ug|r*i zuNhXZS~(n)^^wl|U7xe0t-t(1COgjOXKBc`?QvWK_dn-UlWl?P*b`13uDtT{;56qC z&q|DH9JiRU(3nFXp1>EOIR~L-JaV09>{hCeE)BnC&|(g>Quxq}8TnnE4SoOZg)bf6 z{Wq^`yD+WYw8waF+GZ(}S<*!D!&hkLH(nouHDyDl)sbiTf+M(ndpn+ZxRwuwr8_#T zAYD3vb4oq*jW*~PaHz8a4^_0wDUSmU`Yc-%?I+u%`zCeQ;4rx3DDB8~vXba7g#G_~ z-O2A|*_PP#8)SpM6Xo z(dHf;|NngVH0&RKMepciN0asL%IH@7dD_VYbTeefPlNe~fA~kI|Kh*=ujb+9zx)^f z!s#!UY4*>i#88G|LUVpPR?TY_Qu&?A5ZiPE)plhF9u208^mtliynn- z8yn~%W{u6((BJVL*_Xg}UXoJ65YM&bZxlXGQHNujAUK|lU#(wwPTlHz@Qr_j*QHDO zqUt-@Lm?9~k_edP{EI6K@f&+qz+t~+uay^dh+(W!Jp2mXViSHXUs&uS#yH|H?fFK& zSeGVB?1Fr}>;|nEfNnCJRV<9@Lzdc!(cq~Mevx)X>A^pC=~1@m z{;U}H{g9D+VmZ7W5Y>U3t#)ksLAVYdo4l$JmuEcDepVU(>;LAzefoF);XgTx-a{)y z?LERw%rlr#Ku;oaoD5~2!c0*tuO5REB>vo={hiZGErU6)7f(141(G8E4XiQ6;J?d? zg6Rnk&w_6C{YKCcq=KWqc3@#BhPfvA!x;prr>*bmVb}z{s`SG^rBG&@xMxW#W14}= zpmhLqrQ7%EVK7I5l$-0Jc=0FoX+$ezSK4?_XL#a3m z_Z0yyv{zwy+^T9M|mY@!K(XHnuO%EGwI2Y!$F)uK)l*07*na zRKSZy@RU)?a1m5GtJE?uUVC$t!T8G#wD*z@XNPW}iZ{DWfZWk%DG5CF^~nL@r~BJR zz2)=hFHHU4XMYcSc48HHs~(?q=BXuKOH{FX%E)GTpKjN$iQg=_1PsqdfGL7{BcC%_ zY3%kmyee`IfA~i~KmF(r{$Rep(iVU}*AhOt2!{Xe-~T^$IoyLC?fLujfBw(6)cpJ$ z@w7Cpt}Q;G2R|ga8QH_1eVC(v|HIS0&fi7jY&S{ZBb#*4Ln8rhQkiU%x510$Ug{}o zj&dHLORwzVVnLo%_EG|N5-_ZrGkH1K#;DT+vhEeazxn-doxa!WZr^l_Ryx8_?p6Rc zv3AUc*$^Ee`w2e#>-X44@YvQ{Z@+r_zy8rbJN?7I^FN;c#^3ml$|yf``dk0~e|P#1 z{^oyj`kmkX?bG$oJ53@`AJ9v_r6)g6!nX`BmE^7}BGWi&M`MZDbA9w6)@atPWyrBd1QMsMnT`hU=Wj1L0 z#=9L)Hd!G&PG8^q)yGr!A5C`@6R4Z1O1z2Z=dg!i<=#jrZ0G*3y(hQVYctR`_|C^lV4m* z&b=@q*+1&}jqkqGB$Uss&+FO4D{s6qw0!)lPfl-t`>oTxCLT^~dGYm^PnVu=TS}9n z8@Fx*+esByPPd}@<>$S4b&l+%FthW{&XR` zztqI$g;!obef0kOr&oLR`pfwQ{_V!KPfjKmR9x zKfZR7Lh^fDM)=%0*|i4F{5IWigd5#EP7)wDa^`R52*4%Jl}v@K%g5`jkCI1YF>)3?1`5zY%VDG6CpW|4a9_ z-xg@yOrRiHFh@_>f`0lkKGB=@)+c-GslXj=%aa3_<4CwoB$P=_R%luFud6zA-4e8xuUxHe*M);)7K=+eUr&)w?pa1fMeDdq3 zHyf+?=k=rc#N|J z=sEbVvnTyNJCn7IDaJR~$MCRz24Mk(rNGDSQz_pBx4v`ss}!CjHgN2F=l9rSPW2Szv@xT&?tS%Z4qa34387Y~% zgDFn?@W+Gga|0Fl_>K2cAK5$hwW`+Ky5t##^YCZ#m}bPgbtJ;BBCW!{8sHyI+U^>7#k| zPH<+4s$crU3wSCfT6n0Q|2$*_Pk5+fkO#+uMpTGQ>Gb&~c^r_weHf@-XKTU?6uWPn zuHd2IaroBX)t3$CwEddDIV=N?B_DO*sV$zJKTkJQ^3XmD`)S+6mb@w4D%t z)dLi-byU`S?_WFp^rt^LU47~8(?9>=4@X9?zw*w!$YOXA9v(cxx#15!2;jpBZJe^B zwa_BSrmG75vp-T$&mqDKx54z;fROC=L>G7I0h#*nJzLM-YmUAX9y+tvYenxg*wd$n z$z{&8Ewie4Eik>I+a72W@P5|d^=dDRp!eT%;MDvM|qGy?A=@-51XEbseJsP=*-)XBjm)-cDyM z(LO48ey;P)Uw-AK)9vVD6AyZLE%uz=eCLg^4->re4Mwu;&qs>^_ihujFY{^deCv%F zgg*Y{<7oZr^b%YJwdt6k=XS5SzWm(fw&`SJC8nO1ea_LIo)oBFeW$>r>*osA1X6;k zdu6lVdb?n~Ny)w2mrgJAI^r+y+=|EHmaKmH-p@O(uJfgn%M)Aj;`O;F8+4KtdzaiG z`^SAAI6rpuCA}o~?y2XxAcb$A32ZX4>Pcqn=6C$6MerKKl1o}qowG?&K_;)@0aLzZ z^}{huZC8r+f3xsi8>F~?zrN|9U~_zYIMFw472nzH@q2>HuG0WpK%~DrBq-$ zXh#4Iruujpf%Cn8#t59ca<19xz>7|B;4NVGeJ06K1(rH+roXluWF53^>czf5n-GR~ z`a)MGaCX1`#~)`C8?@#V_>yoz_wcs{Vv%Wx5#-Xx_&9!00)a1zR`?lbL=M-kU7L?U z=V^8CwSC7q&)?}}p9A+R{Z^kpc>H8vyhA>=>FC>JlFwt)W82;1#f=>bR?TvHM2aVz zjZK##F&rV<{rs~y#5JpTbM|@Pmp0V|+I;JdeXgskKeC-zBs*re7rKU@?nzErc`@mI zm>=V-y!p)J^IpE-rThiB9zx^;j!dty+i&p%zX(lzCh74f_`1O)J&TjoU%f+bZAVXb zl83g5h3ZpZ0}QMfbH8zm50YpQJkK$XcoY29`8w|ZNeac|39i!-^@hga9NVP8o-sDQ z?DJ4?q0jyGPkrGNT+YvyGV*bK>-X)fe&70klZ35^8=t#3Oq78mL_(JhmA1{K>G=Zug=v}N4dx$pO{4H9bxfD-FdKx1i-5O%;@Cn#X26aobdQZ8q7o59YgVlF|! zVX~C{zSkgu9{r4S8GKhL5QkfKvx?qd*U+*GE+te4-DW*YbU3y8M8T z551-6+h*^94=x(ip{oK@c;OZP;JJI_0OQ#{Sg?-hz>6$rV$yxE=#_pJMvddcIK-|^ z(AD1wXwT~7Egr6IC5P_AVKPU32Rl@QmvM)m%##5_Ab!|^Ivi`Y2XDbA;nM?WXnXp8 zjwR~**qz}aSh6SsvjIY2@m0&6@SmVB-ZZMrU}hkqrO!qyJ;|rcz=NK;nfm;Ob1G$9 zO4Xe%_9n4!z4l7Sk@YTlc2hkLoL?btJXwC_$XnWfv26A0)wd0SL&tl1rtV8Gy>R;Q z!;eot`qzJO`s2U(gO)O1I^Fo}%hMMK9|hAg^et4mLdJ9Bf>8Ak_WHdo~+F2 z=K@xK+aNeu;cyoW-fJS`Xg7h&Jfs$m1}DL(7oNbIuQQ>3wcyt4mcMGyefOQWPM4$Y zQNPKhnNGCzH$AZrk`MIeym@OC}Mwdr1Wa{_c0)Ila*v|c@LJ|PZ#5#_8z0y-!1$87rpoDH zK^tA1pf$avlU6PwbFMuo`0i`Om}I8EHKYqZ3R$zGNv!nSb1r_*{ow3zUwE-kuOI%I z9&Ps2cxdvpu;}sxm&p-^{Esr@OZ*+*qH^W%tzi2o+6sEdzt;ym;IR0vU)%Zup4~1m zvZ~$cHouq;_!^FYZtcJrsg6m&o++Fi8CUT``@vv+H^jvQ`npuWEwc^}wls7n1K$;Y z)!i*0%ZI@wI+2P_1)uCOww*u*&-Dq;=zKV%(Q#<-^c`GB87>c&C-faJm)79K17m^q zjP;0rwmk{dKRWoU`kC?ijQ@hi(VglTKllLlCxDY2peyXE?#}vSHo>VK-1q@LMqB;5 zHvNXrBvmuTBZc48%2^Cz&eNY)5lMTMp1H4mLk=4Q{{gMTF z9^a>KY(cL+4qXM`0pa76lCvxvy1^Yj;zj>YaME@EO%}83?la_Zw!!sX;Ih}qzyPby z10LCYqsQYw2j+4C9rjiU+VI!DIq=8^41=|^n#WP*lqO5g&T_0^DK#5f3|7Ol=&%F` z_7^wW2vjAO9R7W!-M%9RJ7&%@hwn8`+&kK3+R}bJpaWM6lx3$lbUgC%1KSs{kWI^!;@QI<%%Xb+ zn2Ysm;Qi!NTM7z|(P-oAdi_}ZJNXFGOomm`C30FSOG4fbSlzo*kQqEa^UL<}zW%K@>ua~P z+z)1oJb|k>vDJCFG@$$5bd6rg+R|G~!5&cD>}|nHH6EtNeEYPEF#I>J;UON-kF{Yo z$R?W9#D{LzKEJ@YtR1o^HhIbcE+UYV;^3^ zPak9k2KtO~2Gwv%+j|7=BDd;zt3jcy{KHBQr3LIML%J{}AyT1uQIHniTh;Ng1 z?LPYkbH;>ZKo^W<@DAf-^3A#DY$b4C_sjm#g*X1%)-V}d{daFNsOr?gp+o#6IA{}N zMCHf@o{WcYFwqqokPA6$KM9(c>+hk%LDu;cvIGxb7N5rO`WRnRJ;}4dx9H|3(lTqUbynt7aFQ)%`8{0rFM6R^Qic(W(m4*lntBP@E3_kW1K7Zx;L7elo7YslF z%@Gi4B`Qa(&noE#c98Jf;NUN2Qs(1tO$X5xhF@C<94rNH>JL>BYe2(ffecv3eef|+ z(5k-d>^wX(K{H_mvpTE7yA(c$Pj_iD#r+)z*{o4k2yFd;1&+3qwMx?u{O|(XmbNoP zRVTV*|6CV5Aw@8w$Xp!3i>$4C+QUy@W`_DXWTNkJ1hqvQxQC$C)&Jqx{gfG;S!c4v zch@M%$Rfq8y9sawk4M=6Rs9qB0+s+RltMr=-rz^y(LUd@|^AGUymX?z;dI zJx4!qIP^vv@?!|gJG@#xtPXK(J6lr^909g6j`a-j4N~z7eVd`3pfO(J-=RbFf}@~U z_=SH8L#y@j`wYIp+CZkCk-=I0G2mcMup0h?kLe>gYlOyBPAfd)nZEH3UpU95dH0Mi zzE&Y*d7`~Ku7SsSC`Y!%cY)&6>)sf<2}!u)$xH=m2fr_~Spz)1G~uY_IHGlm;gn9K zWizNhZ2+HTrTP}cnz*4EPPQ=AX`kq%1HmJIgBuxMDzos&yE>~}U;t^+)5 z5bktS8Jz{E4|%M^Tf9wdWlDeX%MVY#^_xEkuXCrL{p^RQ-}>!8U65E7ExevN->YeF zeRTTSPk)lWZT1F@1_``by)huIrrDkAcR6p|gy=C=PGc(}uHFT^V`B zbJaF`Y?3Pj5C6yc$$gQ;INbQ;{q*d7_6}F?r5*sYT}F`cFc}GYId-}y%ZeATmAS=R z52o42E>N|^XaDb~?awpFTRy%0WvflmHUVOAICc}(!;bi=d9ET6?!e!XTiFo3;fp?M zPo4>At~OnM>4m9oY%W*)+O5I$dcSw_dYQD*`7m(_Pj{zLG)|7sa&uMvLO zy`8AF5>}m$KK{H+Y!4DPQRx}m+17Bsmq^^{Eak7Re|&njz2dL@u|IXX&{1vArbl-R z#P8lN02dGytm4n@0&)|FciQWmx(r^ATE2bdFIXerBTGxC*qNib=JmPJ30@*d?t`f4uO5_#oV3?2&V-%l-Ei&{z}G~jCD%) z?VDHNAb8>j#_#r*KY|N7k%~w9V88T-FAb@&>5T=}kAS!SoGxq(vE!ieYWYIm?pZNL zkNT?vsNFb78^s=cK6c)?84V_q3fh$;J378GSYyl4DVFgd|5WSx786SuVPk3jF+SdE zpFUp5ZqHZ}E;Erhqj|=Q?(+xavE%B>lFtL$78vr`F~|3K6@S#_LzJ4%clCYL9UgX% zKZHM$=@%Iu{21O>$HZU@04oooo(YY<>u-Fzy87?0e$aI2#C(q-bD#XGg^$yRdbK;x za5S_mW3~b)WpfSFAZqDK=IO<&FLs?XS))4!LrUbczy%BcW+oOaaE~Hj5fD=(41?&w zxUBoV*Q3cS?broI&$i}zxq2S z5C%)~H4C2=fd~KsAau;+hT3(}Z-pUoFoFQ(kO4jT^~sC+`jX+|#ORxkU~Oq$xUS7? zIa=`>PeOHI!Jq6Eyd@L&;4@j>k@19q;U~~ZMgqfNj)T;$%FEUbzO+3INf5o68;%y> zAVlUEU`!O$%>W;5WQGHRy2u&0ns74u9p2VvYjtU^lEp4De$}9*Uk*(WgAZd{@gHo1 zGr}w@!6O1jj$j`=ak7ZueQfCks*&gYeYtJ3BBqk6oqf^Av8^=tT-s z7de^+>1Xm2ERD_Eqo8Xn2h(3O|3abD55D{DUQqDLY=Mx)gs0$3FsCe^1*7wG@L)5_ z1RPx_7dB~`{gY2Vn=@iR?}592??3#HPv8IJzgdu27BAfHwGHF@-}#L)fOqHZeFgxS z+3Shl0zhwo%$wBDPI&0i4(h8zmoE#-tsbmg>7i`|f`AP!&J?TLbQo^KaB?QhiXfZ( z{5+iQD+R5W;?5FTH%a(}_X1ZuX|Q>h3<#vYX` zHm4mK!9}Kc`tI7ij3k~-z+Bh*6U5USACpRQn}DUn_Mtzs%9Fnmqw(|ToJ2!*dZk1pdQB4b$A^V_X9C}x>^A&nWiVbUCeL`l|Ej;M zx@pB3U4m`A;$uug0OK3cfB@h5hw*t`n(S}*f~oMeDo!>W{WV1I==u1SmFena@FrF$ z-eJed)&6JWx5CO1xVCer$9A`A-i{ks@B4)}Srmu|+@IkZl3=CozJW#tcGuwV^ zyhgspq!$B-hF7m%os6%6iGg=1CCEvnP?&xc-w&aR^xXo}^-;JSgh29W2M?bkizlei z9*+7Qq!EsSil>I>*egGSIe*rs=l;;uw_#L&2{C@oZwzyP;D=3(Ejo5FcKQ zQ6VR=rfKlL9+>;Ciu-1M95_Q(?@>oKaZ>i*aniA2`kC45K-F%)=vxU~N{&AZ^N=gK zt2;8{Mpdlnm(gi&hN<2dbQSP@98frEM+X>};PQ|;9;h=Df$EPg_FDmK%Q`gQ)u#c= z*OlwYkkbqoec~Bi8=9kNP>rC;)}o^id=4FeulKsEXi|Wd!!hV*+6DWN!Qs?rPz)yn zzrsN&6M)aRrD60h-qQy>xYWKvat0foc#J199fz^wgZrClI0FViNK!HS>OrZ`Zrv>a zX_+f~kTlEJHHVCwe(PcG|dCAJy-3xh&wzufBfz;M%8Q zx4Ld3_MPwkpiJcD(^pc)>jX8$6v>gUCRD%6#%3AViTKBKDv3jf42;6Iy4ilcrr(*MW0ES46cXLyo|yCdb3Qd zH{m@WeK%~KNl!c!iRm{QXfItT@a}~vckeuEzwXWWRREe#IM-z5nS$JxfAGh8nC_L) zQzs`}zWl=J-FLrLP`%q>QoLDRc%z{BetUHB)Jb7i%Xq(FYe@9nt)DR=x>CTSdjp<; z$(9Al949Qy$jyR-b3l9W1gKWeRlKab`!WCo?E_UwgqM+Q1}leH;O%Ek+Y$c3+U}KAk#(*^nN3 zkH4Em7NqT1EUD!?9JSF;#HPox^??*=^1u8+U!Cf4&p*>7VAzl97Rva(`D{_Jbo4iDE?uU_n%#Ne`H@X8Erd$v4$oeOy59g9C56 zK<@AW)N0vI*ct<>hbD9w6V&njkcYqgF?xp&WY_)ivt0v6VsplZV6lO*1^22)K5&`9 z-nH&e=9+v%PWJx1B{qP%H%d*h83)85FW}$|b!-`?+oK3~V&EY_OWp)Bh;^HS8KjjB zavQw6c4Q2}o`DE<6&V&Y7esQzNZE;xK@Q))mS;CP2a_7X?mW~HB4l;Uy1|17Lv#&rbh*yy&>{E< z6kKCa`oN2k`I)nzu=J0-$)cab19YiNUV=bvSAVw7&{MDbw?5C{b!qqtmNxFgqkjhW z-0%8whu;)uG$;1Uz~(0egJHvk7#&e)M;M7n2!VsM$23k@{%Pq6769=Zg+!57VSzxBHDRruX%Z|AuN`_Vs3xo^AQ`PfsKZ{!;AI|MIv0_tP(a_S4hl9!5z^!_$j6_F*lK-=1N6 zNI6XQ2;a+sI<^u`OZTADKdVy)Xu_bcmf;TDw%3=x3e?mEYwBTgvLd_TKRgX+wKtj4 z$M}S7S*FeYP`J%1NNsjMGdYSA zy|ChD^6NB)_C`C#%)Z<&%TyU0tyXy;%|mMMzV-U)-L|k;0r8RrP5zO}X zR!`vn=;rm)qaIFkWY@))UOm0^gWu@kvUI7V_AV4K%W4~AY^T6mTL~04?}>Y_to|w- z@a%5EFMD|uogaVrei`3=n9iHi45orb0p674D;vK4ik<9aj!yGAf?j+b`RTc9Zf+Z9gsDQ1Cz0 ziV;F z$vAegjI=(;k$*lj+Ifg=pCic-gDo@tuweJuvj4_cw(x8(cp)>qp<}k7kW+svt-GiLs0;`@-c30-Cb3UzS@bCz~Xmib)$F&hIlBU)UAFb9~b(8C%clg@D7-G z;=8`KYIx)q=C!!NFpiFYuG5Lr>O~tXE`WRR7+IUe#S+7vHCCO(0+U+7<4@#Xs2^y1L-TA6u$+W69b0V|2x^B4t>!6 z7z@N1u6a0DefU5EEVPf_)u(Z1#*_(xE_PW0{_56l>xcedx=gO2;r-3n~^iC2WK(+TY2A6yhT zf`NwNKVYez>WGtt!;3Kpw-m}z1s}$H6vk#Cn8Cd7`*c2|UZ-aahaBb}nnFQW6J%;! zIpF$!7}8wNwQ9fpSsE4qt)8EY7Cc&G-9ZO$4t|(9%E<4&>9q^g>FWsQ*8z}uI(}w+ z>$o!Bko28Ckns!v^+(^}L&xdCF_Wi@G8pU)RbwmBAG)ir@fJV)H~j9qGJ`PI)yNT8 z*FL}AgGkp;Ps?5o{|avDsKMcw)Zw?+1Y4G#C$9@o*7oQY$J5{Xc{W+F=gFAW#SC<4 zsGSV5Am!BppWpiacgj#Vh!W0VxK3{Lx+{XdE(dG%9}kHR{cxKBMoYw2+`ChNoJr`}%7yjh=q|*{Abh7rUInH~Rn+J#1#-?LKB(v@mL%BR%`I zzSSeM#qr?n>KQ$Nqjn>l5FD8&gD9B^3Y(>ScuaRL6(~6S_KUKcvMjTgumIi(3$n0+ zQrk|vzkaqVw8cSi`^l%*tKS1%Ica^}D7$Nr{*CW_YqGT-g2Ny7Wy0$ru8%&cO-raw zP_Q-TN+&%?XgK=IX%yqD<42m)8`J~>m*(^a55YYM=R4ssPqN1^6F$eP-7SE)eD(62 z`6**-dGkwqGyCtM$#VUA?t#o?s8fsCiov&{(cb0L!%l9vdwm{EOWRM+z4B%!d31(w znPfigQ4gBI72gF9w|W4LqS$V6&rxN;zR{Kz%ic22^q!0j=;PbMiKIHsu&V1bCzxxs zBq1c<0;htUI+!5qtB$NvMmK7!2tnIQDnGOoW~Umps4;THw4GXblQg|j~4fV(6UzcX-xw;5T%+8PKSDAPR?1$Gl}HXx3U{FJtS&(d}G@qYXCQj^VC;*m<+#(6Qqid7=}J zj!nDPio*xjKA&UvY$4)XUufb4pCh4!2V+Ost!sR`Rk^3p3oUkijGz4X_{a22qJm!+ zkA(Kf0WI`!$NOjrPx@l);K%Vq5pb&qE_h_m2Yu~xg0ucNc-bwRT;E8~XqHv@;;~j9 z$baCTwIN#t-p6FcNH=j&eUPd8?1K*NSVAW^8#=_O-+jJ~jq_iMG0eC)a;;xDdT|ce z+ArL-7kaVd;#pi0KJMcc3@5R5_|kq4&*r`{W8+2Rqc&QAC4Q60;A6>>Jiwbkx-VeP z7&~pik)V_DPPWO)ne@(y9}E};Km;&*nEI{bnWk?0P>MiS3h$b=K$0W^k*9E zLIrFe!Y~+!`Vn#jrbnRU8eGRf8(d~!sXgXnE=JSNL#TsuOfirS9^K!d26Gt2W?qId zVLAKyqKSc{J5W;&cpMd@)Q|6DnAH%htAiIl_(VZnla)os23QMk0@FH(Lm)?nP(q`ECcNG! zR9EgQs!u`T>$A>%nv5>&w+%klcY>~P{PXX&O$X4zL14)Q`CVf;GMn^v_){ZtS$Uf9 zoEd42*XZE1`aAG^SAY5hmy`F}=d!|G*AI9T^i&sL7%E;;3M?C5MZav6i6dtM9-hh` z4d1H!wbKfYtrVO&0CZ3tiZr;@+Cbsnod&H>3Qim+wemDUtN$}xT=T(a1IO%pL`(W6 zlP%){ch20t#0O;#)Wxl@f=#bx84SGi=zN37+i$#ada1wmTUiCD`qr!N_Qw&XOJfJi zA6?=#8^WLAqwGjDXio>Sl+hQYUFnR~XM%sXmyg^j0J_yn67JE_`upI$U+jK4!B=?E znL`G6H8KwmK$8PIemez#T8`tKIjZMCvd1@K<;_0@m zZ1jHXyRVngz0#iSUXYRAeAwhk0DQF{ zjvRX$-q$}lJ-qe#=}K>(d-*%xKRw%vBp#HB?k@A#D39W-n2nymrj3^;_!WK8Q157r*fg7Uf7 zwiy{*d^z|~;K;TG{qtrY*1~v-j>9j^uQB;#s-4t85r${N7XaQd%qX7{OezQaJqi;-uRI9 zftv8S#xrshaFW~l2z~HT0~aqEDBv)Om0FB%fGyg)&5!Wkha6!)tDwPTbCN}H74rmU z+WQN2eSpo!V}UWr6*sKW-kE@GJalt@SW5eRIcWRP%89YUWBeVN8T`skaDWo7)t0mW@Ujha*^p+CUofwgZEKL2TJtAX4^exQ;>LVn9(< z;02FkX##S7A50$_gM$V*jDxR#coK%?z%^EmM>cO~oRo+V(XdbJ6Iue+Y4G(i0ZSE8 z&Jj)kaK_Jr-vq0T|0aEprf^Z_NzhuO^Q*JL2W`ih!XDn60D7G08nw;@Pxe7mU^KzS z2aRX!8~RKdHZa}(W)f6=bw-f%g7;@L!e}Kw zH2VuTZE89)8<}Ea*Y@5T+Q6${wC^Nj>47K1-9e^4$1dQ-^yyM?`p-U2gD9ARp1v9Q zWQT&ex^gxNtdeT0=i5KL)?haX8rrKTt9I!5=-JS<^e?|TgB=(Eod*y44fYsxFy<-b zGDY@bj>BqpZxF_XnbZx+*>G1Z+gvYjv4osJM)&k%A0ta32SM`&djiw+px{LC5k-S* zT3BXcGcv;qy#~XPGX^%cN*`r%9~2N@>`d5~3fi782$QwUtQOJgV%p0X(7p{N(um82vpZuNQnJo=J_!IwDZyo#abiId|9?L{D zpw8RM!cQ4zA1;asg`$6jUg&;xP>`{<>;49^bOC?14u=muS|H0;!VQh&clbb)YPx6{ zQayEKK40pAUzyv%hJ4dCHmGA6d1vl|X`r%=<@MJKRD&R3o<2iZAj@V4M?qgS(`4Hu z>}h=|IS7Pb>0uq2?oWDgiwEAo;b&yy$yK234Q?{CvdE1krw4Z)p57`rCcDpXepz5! z#x=Wqzt?wrQN-o8OFS+Lp$D(^z?=j4!Fsjq@Rc&TWOwt%m$Mg{kG~(#n>Ri^J-PjP zyHeU3_u^~4Iql^Fz_p#{U+j!j6TX7C7sKUT!RqCftuF`bNrBGoPdjfnU43d$zt@}B z;=AoCmfb&m|K~LI^dO(}`6s_RJ=gimq)I;o%(G|I@7jb}%QqNXWw2!59Syd= zaebZdyZUtC;4eIkwaWOh;NLAveb_P@kAkM5IV9i;PuKQ3HP|uBb$#R21d8FWoqB5n z8(dQ!ItIT9yrNZi8%(VKnQbiaPUZsZp|Lgr8hPn+R~2{r16pXE zLin+#Y%SiagOB{|1V7`ms$Ctp;}f667u!qzuoac}e*XUHN5A}_falAxgGusaUuaYg zTQ{lnu|g-ak2mZ$jfsbRW4@?y99i1n*&ZpjykYa`m{S(QWdg&l8L!zOKP?W}aZlCi ziW`EAf3p<=9ewnLp7AX+$l}*Gi2#WWG02?A(Dy@T{^Gq!7ky+4^i!-b^25JqL%WqG zz%w=u9xG#G(bvBDjJ~=9VfsIkj^e~_&ow;6t0`UMC()~bWwMMP{N47y z;}hO#=iVkRrlVSQo&W1U_|Tz=hq}fV;E!*Ti-*1&JHKqD>L)+{;Pl}ye@UNKspfc- zC@?EfSz`vXK_i1(1@K#n{@u>FbND&NOm?a^6BPG%Iz0>e5H}C~^cOs^cZRVgSl15dJuz zXg`#N6A)lbV2%EP8$UB}s!1NBOx>V36y`}wg;TFSW->EQ18u8>CLuFxw;yqETL%C? z_~0|=z_8F33R7f7^tFmu?_IZVY8`}GqS@+J2IG*EpjH_?!$E z+V7#I_9Nr!>&ISMLHqTVzCSBl_Ml8&f~gOBW`E`mNMPC4K*u;kIOvr`oOcSgK?N_d zi@%cbW#{B@yw&jNvk3k4gKvN9^v=9kz=Jy9=)mlq%09>uZ-!y|LVtf9x24b>w6b0H z#Fq8tH(ng4Rmgn4`_Aj9zxr4I!s$Qz&;QfYU;KCe;_0;)Un24=zy!`F&ozC|#+S70_unQ`@a@IBi54xEoy7pm-uc zRYvFX2{Vp$odD^JBH-d*j(xvw(aC9ybgU0zWdaxav_6ZC zt^b-8i2CKbria17gw;c=j)&X86>h%kQy{3F;*EuD2wd0IL6?jue5SuZgTEO;0ixjD z6eOQBZ8sqz=msk$312-&j(L;f zqip6@d+GTlWBQzi6%2a74=dZx!4LXEhl~L`KEy(z$DaBl?-GF%faA1SN^C{1+LPbv zjR%J>H$nDLCwll)$xHrevZVo{mkOL*Gr2bDHYU(ZG*IM?AHvtTSlqHYY8;Iho&$kf z{~0$Gc(ae?lLr~2IW&i7XS`Ey-uTzw85^Pjj>ou-7X2(7bOGF6_~=R%rVSZSp8+5G z>$6tVuf7$>EdI+M{^<1MfBmo9ew7Ug8VFJVX2~JkhhR<3l7_p0M2tX><6!777VL_o zE#+beMU?pk>rf({LPYT3n%@&>)&5`_VHi{<%NH(SZ`sTRMq!x1iC~XHaDIbNNJmyx zdrVUFhi-jHn;!!y9JM6?_te*q2asm}(zHzg^{dWyyF8%K;EqBNbV6}W|M2h|AMpe) z2~M^J+`1Zkz@#JwSpgp2f(b7{Jw8)5?fr!#I0tVyG;Q=@c@bSy?m~2=r!#1n1>uo^ z6xZV5^m#^1%5EmK8`>GJqW@L0RkkAt$F9kARL5Ti?z6n(1T*wsqkj~$T6WpFV1tw__KwUxQTi z>tDV82hW2L>~*(Ugjf$l(MN$TxUzE(lCPtuE|!&ao+X{dZ*-5-tG}n+f9IWdPv3px z)yXj8kB1=9IfFgZsR0?0#poQF^%>cv$Cl~YFyuT4<)|I}v{!TG+ipd`YIoz z|0_B3dp(pVbMksi-}fH0Y+1iI3;aCvH3N^f$#`t7d;Z#9K(F=b*sqb@$Z|RwIuE^B z{}6zY9z8tMrL#+DG?Z~3w*~V^PjAM5*&_bhKxg}e`?f2#~W)JrsOeRcbE=RTaiJbiiNGmiW8;yd3tJ-JZOm2Qus7K8}&AH}z)xTeEi<)*L z0*&a1XAe47ZG2F)hy{#`U|fu5Z!yys*&54Cgf~uU63lPa2Ci&v5waw>-{-1?=&Ad=!1@cfN17ETA>I;6Fj*V9@v)&WhEiMR8@NQ*uHB+Q!#c2NU4~ zrY#KYZ{WF>tq;Eaqm3?RTx2idqkJuU__$O(bvL%ad-j<;>$hQk`Z{6)b;#wwnXZja zbxk|RCH~PbKRkW#{(Buq_Bg-OHZM#f6waNIOlGnMvkY-&M2y4W4!JSNF!KI&2cU0e zN+4n%V#X1{h$2KnTg4Zwt#SIjup+E_%j_k5g|hW9gMuPpg2@ySY=f0T3C(6G%yEvV z>zIS4QNY|9F8hv?2QFZu<=1I404wW^&>7sW`R%)pKEa`A{hWav%)L(;m$qd(J_v?Z zfC3eQnZcvB24rm&e|;$Y(!}sm#*BZI-J~S1DU+*X%^0j1o`LC@3>=v`{VPWxJd=Ui zfuC17YimYb0K-A|AE!iaoF@1aqy%RIhk*v(^4|HXX!hHOt}LAf15VOF!#V8CZtw=Q z;t#!;S$;6+9onaTK`Ge@B;euN;M8xj|0biW@6EOkuairl1}6p+m!}_maox4i0|28{ z8%`GuCT%L)BZ=~3s__5-KmbWZK~%@^)4w1@;h+@w*iztWak@gbM|;`(3Gm<<03YyO ze^}tD9zB|XF}dnXow44tx|5NJMz|R?>50BQY(#E%dO?BZLUtz8ID=Jf@!K1&JUDi( zeXZ|(+ACTM_%QEr&J4Yll!uSuJu~v)&T?WI?(@7zg&gNZfdZy0*|F6Xf$Mp23YY>D z8!^{lYKu-8*m(5q9vXX|-d3IU$_{WjnUbm59$ zvXu1XdRahl>8oJIlKhQZWlF#JG$$BV)fHHpaI-;Kc;5wx^d!*1+sOxCaHnN_eWFAE z>_f)Hq(^%?qrTz~oXLd^AA<$X!t=oQI74@Ar1r8a>kmo}bRq&78Z4cpAdsY+@l6Y z8!vD4+G6^6`$pN-UfS{aUiMsM@JcXVDzJ4l9Up8QpzkK%c!f?uD0=LXHK0ol*p_n9 z@nl!8oWAVAv)gxX#FTU;Ilk~pS=vrw`07Enl`Lk!Dg%7?rqg}Swaw$D$!@>Ukx7rE z>%ESZ8^=@-eep^bCE^A6zMmf1_jE?uCEabb1ocJ}>L*waqz(`5lUlV-5JS zlTFJom|njV;!Hyj(5Bp;N8OmFqQdx1`}NT6QH8e2W-BIPjioLYfn#)AQ%3w znTTt$6fnQ}s4soK*KOuG=XTYUQ(3X+H{}n?B&xW z?G?_OnSgQ zW6Q{5+c&`=x4E|l0^h?q34+JyhV%`>-6y+!>Bbr)rmh~v*)=FyZqgsO$8DoY1%dN^(oMGif=y-i4v@aGv&@;iESeDwFkZ zpz+s)YaC28;v*K*BU(UDEN9bY0iIJC-s=^+H`>p7#d2qk3B%Qm#GHVociHxRqMi8Rvge})spZ##K^v1*(pU^h;FqjO9 z^N(w6#>8T1igzA(bIvQ?$-02^gCBhN^kEO5eD>*wr>g~yS6cplt*oMlvL2Pyz2B1g z`yYN*zqWjwo8@tODl2-`e$eosSFX)o*H)%XT4LkiW|`i@TMFD2`1EghukUkRHi>=C zLwWc*0$l%~%w7Ufs;K-)4i5q1@eaBn@{qz(JTLosq8Vo+d=>~M} z^^W|)tB-rLnjqk{CK%eE&%eAOs7zLl@$!NR@MMf%?d@Z-^|s*L<>a}>Al^aT=)qdc00%(O=-zlR{csRMO^#*v(v3) z@SyDO)8051k*614f8%sXmZ?D8*n&Z`r!r_ScAoCVCRO*Epy+$EaP`vv7wi8)6FV#w z-Z*#nLgUND-tPG{-NT1h-h8vb_jUpBhwa^MuX6mRmj-8T@3n!&l|CGPd&h}=h5&A7AlE+XTR-36vwn61pT2hw9PsgAwolft zm93GN{_{_^$l>$x9Kiu^WH-sTbRjct9V zZ5+7Y#0;ku^kFR)MJWb+3+W z_I|ucL}#1rT4XsJ1;UUz3T7x1fCPV?(hf{>J%wRp8}x0Us0lcf4TF5gVS|~!!0R7O z@Db@OO?0`g{|QpNFF@h&M^J*UAPjzep#bU$2J}TaD9Z#h@jzY1fFA-)Fu*^~W7XdV zW0onFPWY(f??L zA;a;3yT0*v1D?fkWF2kzM{yXfc83u$0!zj4XN>A8CQJu?W`q>@_>C8qK?R;;aLL5q zqX;&@IbeaSZ6Ky!GdDWG;MeJHc99{hL9R|s&=JLCLXO&_icx6m2i?UFv+vorHnLd$ zPoMoBzSS7bcte*>%En1`lb()q>@S?b8=F`b=3use*J;Z1Pq^{?asd~Z5jcUYx?qi? zsLsWLBXVJP6NHEV$TB#facrD6Vsu9qcM7JwdF%56lb>Dt;&iQtl%7rYUUm93-kNmT zue$^G4h~T~Jc&!|bfbe4+trz%qdoXB(!cvRo{XM@*=28S6STbh#_Olc@s-?mauCeu z!~c*TT^ktvaDAQlGHdLlb_zQqw~<}-#%ALgUHQ&;-|kqfS9(#yd%fV`;_3H)@5i-x zdivqN_{r(!7ayNK_~hE@hd=(q9;A9}0%Cy%K3e@C8-uC9YA2wpOWts(4xJ_|D@1

    5(MC1S)McU_0yE&@~m)Z()@#2+EYWSpJs8xk@=9#k5#-Y1CphSNzcg`%^!f!e& zkR7$9!_hFy5I)R{%BoAuAf)0y2N~L!0sH@IivWftmi& zEjI211O*IwrO3R}&kbPt$dXKKHChJt*hD&4KY^N76L1`TCaVoX7ao|}kv&@me**CO z09T;5`;z%dZO+E%=o?+Hjxv0$H(5N_1^n;?Tft*GhnEDqybc~?sDL~Zfbc{MiuH}x zc!VG0Bf7r)Pe#F-;79vl>H}=o21Y@mEi9meHGOn##^HX!1>FKl57wg7)&~6HLu9|% zkICUN{ut-sVbbldRZDh@3UUG)kI<*U+jXo%pNjr&jL^^e#{%uaR_LGh`Zj5?k`Af@ z{`fn}+5c?7{`D?$RfFg9%emaq92!=kCh=1pJTrO5uN^bQD`&XEuVSwJ0RzbS2?Ii4~H~gvpi5t^Rz8-EoP$2WQ^k;o0 zdzt(A*+;y=H;RAstv`KDhCC$jwM&)0^c!FJS^mz4ueSw^@AF*4Pv861=|?~QQKuoc z1uWZjstFvF`c5f1hY|29saXMKBuoYWIEYy)s>d~~g2n(L@Ji0qKnVs!o|Z|17=m|C z>JpELHSmRv5DcAHM%Dn+6^f)kPG{T84uVgp0j_La^*4xvV=ad;GYL#_CMAX(GtpyU zeeOBVdEuOE32pF<4t$u|O>Om$h84gn=)p9&xHokZu9>71r{HLW2G{OaYm{*4>>r!e zpN+Rd7;icojO$aI39=b>Jd*M^gCjt=jf}dE#zQU#E)W?*?ZOPy)lqMbIjcRMVn zW8@oOgRwMLKchP6RZlze+W=zqYx|6n;Lqv=z62W{#{*SchaQEK&0O6d!%sf?tMTaT zIA3>z0iFrWk#&aa;4-)`&a&|5du!CC4l-8^B!b$l$H^^+!Gpua0;{2^-;A0V&`$nr z#ia4+xdxAx=s)@R)3Rg*9r1-zBWLEIJ=|+j^PMno9?qr}5Pf>{*6E`jQnQcp;*gq+ zAm13B_4ct(v$4!i<6}0;NkBK4pkjIf_M}>#1DM*`SqgR8*jaN`tk4o zv))Sf%ITl}qknMvSHJg9dkCb5oyyd8}K{p?&KEB*)Y3_v=ubf`L^wK03Znh;r=K9e&6W*5p3r+!e@x_GX;O_V!DU^?>Z#p>sIJmRbVB$}U=QKOy}*bpJ$i4t^c*7^$n8@fM2{IQ};t={2Xwu^VM{~ zgx9^h_u7U7X0(l*)3b>~s)v@*liJQ$7maf*y|(|Cj@th}{;K+q8+#_O4$m1^YUklk zlX`qd&=KoQY+@{dV`Y47{h7pyH;i>wwu}YB@ELEynIE39D&AO0A_uY7yj&;zW(Wx{ z;{!i6+ZTd4?`Q~D@zlnXwuO*Q(1R72>BA%yPGd{iDxRQu<0ipweCa+q(W8%v#rzs} z<53yy`~9e$XJD8Et-f1k_x-j;{rD$;bb8XN=M`tQcYXLB?(~v1v61Ou_ZIH{N(MIj zG*V2&NSQbMg^-~U6HYnrt23b7C~eH460)GngD0FMLMFpj3q&H^UkVtV({KNVNIx(o zq!dINI3|E@@W4310U?fYR^6bFImh5BP$5)%b~vD!88hzS3Yy{VKHGla z0*m@zr?rfRFQG6t#(nt;XR|`erpEXw17R3oeb=e%vcAzEfE@uMI_2;36#SXM*M%%r z{|2c?on2}0fh#$v2kEIV0IHAO0ue9I;G6xSfieg{TFpD7PoNQUwG)mVG;ZHATpJ`X zxOq@%46&x6itfqsRLSo{E|Aw(|IdBjj{@!(wjkpxa%i)7gLk9l7>9dwV)Y5eKX^*`7jR)|jw4;$8tNvyq7)6 z@(FzIv_yOD{SRiJkxVWfl0`Xx{>thsdrO@dz5w*ImY^f>^xnsxo!q)7X9D}=HNg63Y^>i|*1&nA z6I#CW&Rd-aYq@oof#*y}^o5r~9=_9uLqFD*$iB|b>frs@$k#kwJA9I?$r-)RHKBg| zwBxkybuC-{)qB5aiSX*_jd%WdJbc*eaQ~oJg1w34aHczOu>If+w{%Dl%Bd>uXYmcP zoBcfNdh}y-JbNKqa>W=tB44~2eEZE_T%W;+jRt$6^EcV(SzGV9AKMb(2G{Fw`7yfa z4M>8>S@vviELm zfP1g)5TlF9)dYmU(AH@W4~mAb7U15pI#2*cUmo;UHE(OXc;1qH!FCy;d6~#79UYdE z{PY*^rBlzeRpO=7qw@v*W%w=8-p|ih;q*%TkMFk6`d-0{lNM|ZxX^=Y&yGyB#6@Our}lonFy9@?wj8$^;!<6NFB{t4_H3&b~)$M&yUi@*4$9 zIS(@Q3EBM{-;70L?_^lUc`~113krid6aMPmFA#iYf}qWo!pR8(aDCir47_$MTYZH$ zTj8-L5U;I0k@nhJq1TSyfg=EBWAv4NZc=E2*rgv2HV6yg6xX!@UkS{#N9$y6=bCL< z0+z<2It6IKcjP2utI!;dj5Iif%EykthGssu`YRqhYa7G4pKkHl4l;<+9hMW z92kCNd+Zi1H3{$a>%-%8L*P5XTlXg!fUa=CJiPSb4??!~CQ$Az?w&aq|1s)Qefw~f z>g!M01c4Z7ud(r2!3fqf#)SGZ*_MS>#4HnI^?i~WUA9Uw6SdlsDV@^B>IyoJGk$0M zJQF{eAI~Z|<`6>kWdl%SrSs(*Gvbez6ye`&HK`&T*$qB}gYMCRuF?Nlp$s0{C4Wqy z@EG3Xqq|3bY^bkeSM&#JV5vKQgLlARx(Zv9_mg;FY`^oEex5u1;=@l)|NLM6UgyuZ zD%MyR*!s~&fqoOxXCH^Z0T-hvCEx_RS;#6@*|Pa66O=YE*@qgQZP4~!@w3hN1YF_N zCb;YSFyKrH;>QTVeMAu;K#OmgHJK0KscPFsqJ-q=4_9ZYpHYhQl0=$TTJIb z>j$F*Llp9E`;i&$%#iE%iMBPEHsc^TmNVmv2IvaFW&lGw_;GFydRJ4!>Tfn6{LZdT zX6p>^COHG2!y{ab2S)}NeH5`PT}u%%WPt&t#1OR2^5C@f4)j$jZ6;e3ZAV}NrUKl7 zXSJtqG>kIV{}C|C`U?E?i%J3f1lILC6O69T8)il@G9=5xIlkDv=m@=VIy3O?erc<2 zAV;|j{qrzmzwzDm*-8*2;Q8>OS)`|$dsAQh5Ma%+M$Qnux@Sb=zz>7yqAZT(3roBv zSn7@rgcu{%20vXtc#m)A)3M=4{nHJPT`)*N@i?jIA}9AS&%Fs0!Oy_KGno;%ukNMi z(J>Au9=Ha7PPFEI=bUr!WLW?AOx9*EW!n(iSNTQ3fu(9ZdfdSOpeNCb?8*dofuyp)k)`g(@Y=Gfz{$Yi z;WIpRHtxNS4YQ~B^-g1;=T7w?Z)f+?S%K`$>up0w_Wa}vJxJy};!i%iQP#MCD!(J( z_0?VyQI>XsfUcq8m+xIWy;{)xd|Od&+$w|HzAGEVE{NmS)#ZeO- zg7)?QWHoibsosTiwLhN>*=aIYtVXM6+dx&4rQ`^ojwf_uWyoiZJo`JVef2rpAL~mI z%o_{FkJRuOcNU+~w&A&85ARJ3-+ueeSw*EY=$sCN1%^8GW40~Shw*KEpnGR4<#a~7 zmH+y4lSn5tIIV`yHb(RqvR!92&c)P-cBYMaJ)}`P3PDM60Hkhj`D~D*P4>$?}pE;9H ztrHTXW~@1HLD-orY%kCUC+q2T!9OEIQ>>haXl&m1L?{}~qy@oVp)3fMVYt(=SNC#C zPBXEOb50WYs@J|YI-Dg=Y+_l|HEGZZ4f7mE>w;O#OOSm z+F}3~6z?zBXW|UUaPpwqxdOqPH*b{4eeLu+zxCbIonZgdfA*u(5C7G_JY9X|jni-b z;CthgC;OBv`3-tPfACm=8yN<4=yXqj$Pes&K?)oj(86W)Xl>Sg*U>q|ox!A6ll_Tj zuH)alel|X{4S|c}!Qk^uK=t)pZ5`obu$TuEbIvAk4|=fdt+!t5HM%#4hh#Ua1mS$8 z2eBU3`9~paN}v(-Zh< zzvIxE->ePVj<>DBA63s3Aj`J$o8o~9yx`+rzl|9T#;9YQfF~c0?EQJ;lR%)rVz& z{nHQat-82(tWLRCH+}H$EY9fKjBT~YuVYNrPCY)ws)sWC3GV1h^^c;Ry6pVx$$sQ2 z{8Z9hU7@o9=10hV_!KYI*|XP2T}EcwqVxG+S`E~WjJy;B&-h!i%;B`n>BZB{FTZSc z=<_DQ9WD@GCc%;IA7%Vsenv57G?G`Reyih+hIqBOM_>G=kG4PxqWMp{a1^>V+2Agq zLw#k&*Xoj&F|AuzzVxLZc;o^(ZrQPVbZYpz@TxesP44&sFz)8dKFeSJ_@_T_yVLd4 zWk(>UC$lvs9-8peNs~QD6)V^?)jpbjSXwjK$-rH{yofly!|^B+pwxlw4fcIIkAH^&T9;mmOm5a2K>4aBUKwASh8k%O`K*NJ0v z{2AU;9J6e+hEsH-kF4-yXszkrzZl;4KCLJ z4m@4Q1AL>)T4PLfCGa5es?6ZQB7iLQV9pV5v0cYk48aOHw3H+vq z___Qc$mFYUgcJaZKx8B-z+@)-eLnr2C!E<*{o&s;DboG!$tu3nlK9p3mE!I2h-kwh z5J(yx@B=Qp1`plA-JqZdhAlthg8+nq(yzG}TzXyWd2`pBZ@zkZ>)r31K78-zr~mnX z{kx~@cmD16Jb!ljKmWl$IDLBU{nMZRGk^Z{Cw}YuJ-BplY?KOlT`jvIG^-ejtt^La zu;F8}y@5%(W8l#MTe?5CC_oDqVBW{<&M7r|T@_d1&k=U-V?&az@9nhg|40I{A<1;^(XyB#Vdn zx(k=uL)daO9|zBy9qV<)F=9=OZnlkPmfG{NvdqqG{^GOVur_1B_ zIMw0q^-g!F&bhL3mtK8ijv#v!4=xnAdyvZ>_e(FnF+8@%w~;uG(N&W?JRlDlK^*9} z`@u87jXz1Z$#nvhXdU@G<}3U45Yxjl?UZxtY|x^vAd6num+B=LU_Ln~=*0UbfcESr zgU!6Mk#uWju-QtO@RyIhY*^$BAu}^R+fD%}5-+YYv$KGGQ z<_HQ{ktOE3iGO_CCKlL`cDo-~khnT8SoGaqTYYT63ySY1oW}le%l}N)J)OqS&EOiB z*&`BG4@ckoZEvh&zi@wiSbqf^vx*D<>aznlde~J^ee7Qz*ww}3qv&OV;lrjP3`YT3tq&k(Y=G;Y@RJoXZR9sBPZi` zl~=#|TU+DTZdFW{wa{*oBBLPMO8RU(GhuUE<0+#h`S(dn}5S`yO=0H&w5(@>qyQ?%yO0IBdnyCNNI{d>xdv2$vP0C(9yr=5A&yz#D4e-q zWA^Fxdj^jbSa3%m7=$8041#1~jxq|M?J$%xQg30`MYybEVNB}8z8Q#?O=o?d0mDoW zFxfirY}sMX4y;vUL7ZT;W$CXn^dggD=22RBa zvwQlG4MaVmQwBjwE~rjw5#2|YawY`PgA0^_DA>Ec+ynOr;C-*^6bgw3iZb8B=TI;> z>jQm^a02)GH)+wHtSCD=;Gti2$#FAr;MTtDFq;9sHh6yYe+0)#aO%3Q4a0)}+SlgAE3HOPqSp(^@^_mshLCj(@?xHZ@m44@TF@IpHsSss&wU=Xn7q3qZ2 zqz*Fqaje?g^GqM}WD|&m?bJK=@9qH5AZIC!90O^2m~)YBayIIhEkWPO9%fH&0W0Tj zc8mnZ=dk~AEvkzqM za*C<)IK4U3FnrJDgq(L8moeVI6MWHMhsO^qF&6FN!a;`7IJ$8-)jwAxRnur(-I**_ z5XpI7o>1`iZW-3gITbzFPe#tObe0T89}?Qy)#??8e#mkB05ee1Pj-cw9O!=E{sqJ2 zshy0$t8ct~`oVAf;Pm@H{KuzfKDcoDAO6-)2E_edfbjM^-#h({fA_D9GkehSSp1W+ z{(#;MC%VE{)Z5^bo}|BKAauuo#3tRRKU&0w(L=hc3~kugcRIwuKkX*{+5sd@j(_@} z!6E=AN{;hlPYU>Ce=j}J{ze&Vv>ySkpb77umX-Ustp_i(9O`rra&Y2`@VDPRK4})dh4w^@TN51h!g5dJth!cH7c}% zmzQ|dS0Bf_WrdG?=nmR3V&aC{abw4ojVm|hXtSv^XO@1B6YFUwdQ1vJCk>7s-Cb62 zl-fp4YnVE9Hj}l!GDv>!rd2Ny>4v_nDs0A~?`31ji0(0*rCa4&Bfkl_$C7g4(q#X@ z>e5SpgV0(hp@S8NA^0v%ko=5(apIcDc>*(4wuG@cfk9r^q1B<&=-H=w#C;hSaU;!K zLDrcHeL-aCrX$Eb;Yx}GeHzWxksU-1lWVW8q&?+a9j!BvGhm^oI@45<=v8$lAj@3J zfB1x->P8(4c}G2JUT-_Nl-o4mI*8tLoWiPenn@yX*}rmSWZi4>Pd%MT{iy>@E5PR1 zrL(#d&dk`nZriqL5eD1q0%rML{D?aNwomKoVESD?6PNypr@+H!O;>=vwC#2ETQ-}? zXVkT;+(UNaSTWwFtxPn)FOTx9ysids$qxNF&H++d60PHRqqnSK8=36z%~d+}a;`FN zSI;cUk?^#4fO{vb0ORC!D>h$PwM~K9@6aiBoae+@wQm&`^X7fCWdd^mYh={^rM

    #BEaOu(ZWiesBGgD+t6Ic=hNQvY=(m{#@WNG7pP@T8fO=-55r zGrgfF8`o-ooybTBzZdiB^~DQc%!xUj}r&})OikoqD>XAVqQNX zL4ouFe!1^;`)=wd5*)uo{E34alw@f6Esxhgn07=OAfGLoJDG+Gm1l!PWk|frQ}kgY z@JpRXR=+|{b%n$T^BOkYKKbnPWzCA^r5hSchw2*%NqxThNb~_cMzE_}JDkQd8-dC$ zjY)Jnw$seQBnp7JS;2Gix>3X)1EW$AxHX)|8;>7E*dF+DWc)+hTtG!&d;x)bjQ}Ob zi6u83DhW(88JxfM$Td`gEkjCp2i_P)kt%#fax1I~^UF?}*EE^~DoCEsb3}Y>QHBcX zY%6y>ep+BHadP{CH7==dzr103Gw02B>*Lk)0Y@+@Mh2I@l zB3IzirCFm?@`8#+TsRK-#Xf{Nqu@i_^K|f}L+g3Bqc(5Liyr#fgtnfDnNGq+qGh%v zFE~jv(yVebztHxX=V$CuBnp9}qWvN!!YUv~Nwez`OcJ#~mnII!v0?b{J+gkdBLMkwF_|eBno~`_t%* zcu{BhjC>`3Y$X-JNWQp~*lq|DuCZ+1GR?`88H~vHlL|0#{MhtAW9HN}>PZ|sMhM0AtHimSAZSbVIz`pr%E0IfA2PU@R&|*x??;FF?r-6&;Dfr3M8#q6! z4&z9VaP!+*`dGJqGjDby2O7TKLOOzx5tmAh0=pVyUa&7X8QkC`wHh}kElWB3dFHHX zW&9*xBtcHPP9&nda@n#Rh1NTL8ZhRD-)#T)|I?*=)J|@T3++jAPZQZmET|1`q zvIM&Y$963Fz~asc{K%2Lu1_Eyjhy09#6fnXwxI#5eWMUKnZ&lD|EUlf2tW2} zyOR)Llg`oW(8i+^wd1b3MCZUy+Ek@n{V)EN!vuhMP90!hvO%Jdj38+d&A?rYzG!MU*1UY+gmSj5u+6)vBS_n`OUFw0EAf~YStcJRdOGXrBRiV_jWdI(>=;%P!O?fJ& zN=%KBZR((l2%SFRs16)W(YNhOT!ls9vR$_cJDz;?U)qZ@17~QbESqM@)Ihg%<9>B^ zQA9YmIRQgRZPx*+5NX?G^jxF9QDQd^iHnBk6>!rIs)A@4bm|#B(wU{}FjySh3TSW> zXIWf9vj_-nW?4IU=Y91=I~xT)8pEjZkPa5%lNRD31NC3}v3c)RoKzZCng9D?4(PzcJ2k{HC^wAl4?5U^N{4<_2 zOPToLvc}TLksAJ5R6+_d%AZf2K8BYmn{X zp>p}r0X7c&s~Q~8(3u8x_~Qg7=# z+XkoD5EyW>;9K(4MPqRga)vQZ%BV5*O>AyxbQ7BN_BFoa$MsiyXj;`-fM)^-`!1Qi$1kaJ4=g^bP#i01;qe$ zbfmR(R&Pl+m(?@L^Ez#aKcCC#4^)s1Tr$@tdXI*pd(|-tjrz{w(y3CY^XrB-8m+&% zuT!_39pySPPGa4JJj8vAGGQ>uiJVTLzY}btGxeKJq5S6cjK!!QJn8qw@st;Ja{Y7l zGdfnG0v_u*-Z;x#vu&^0p1iDMRN+9EG16S=Vmp?q1NcopRZqJb>SRG%179&%ZE3yc zcl8Hj<-VFI_FM&)`km z_(sT`bm2kqsIOxH$P~3_o?l#^efp^~(qIaXaA*(jWfDoJ(pNY$d1GMmySe!tP13i9 zNgxrYID;ZQ;L(xF-`(WaaoNq8Vvy5bXQwXT7`133Z9b{;Fpo!cS47epfXMI`1;9SS zOk#uLeZPuN>jea^D+t!B2&i>Ka4A7)5Yzfe+g^8>$EBOvo`%m^kR+`F1X9vh$Qb0< zCnOBQ(;s87C7%)p64eVXcV*%uk8S4VljIYj_oG>sMmy%($di$0c(qq~h8! zjR4sd*D44Z+0lysmax*MuvPrQ3)~h`g;Gby&5E|g|6xQODiwlD;547HCT)PVO8zATp@qhzHRHUI`)Q^4eb?9OXCPP6Byyk20;O!WI{pz{%XE^ zU4E6ODrk9CLCaa88M}r>{F3iHMq|9SEa#P{12`WFs|w%tG=N8Sfd24TLxtWZMu|-utw=+JZY2Y zNGnIxNv6)HbjWg|1_^=Ji1?^We{ObDmW?dZZTeNsdG6)V5S}i$tHuGmA@|cJPb^b; zvzq6~s{C~Fon(n~c}9My@~1J8|D0GlE}oZg&{x^0s}x=nj>?C8!>Cr6HPnzIu!pYH zGlfFFb``3R<+$-Uc`CT(Bm?!9ZOii+AbrWx_8}jKU-&M3l{WCb4!!jlynGfT%6*^F zp%U)uI7nyZQbR1fwG9T;`d(=i+DaDMQ(i1?64Ou$7buUj>O@i*3{aT(;;;W2U6CrqAPHgI~xc2W|UU2(z(P7;$f^K!Rw zx=+v8iP;pjoo9QA@+$jl*wER|WMCb~vH2FgE^z5sb}-=?<=Ml+99;_@=v%%8DWN^o z2tQ?9;2(iQEvO! z$5I$$Ct3jxacS_bqtjFhV&gokf1y6qLH5=12GwXO?YoN6LmT2?)rzHMBXV`%etYG3 zL^0}y)4yN_&UddBKc=gsO_f`$C1{$BHFQ} zZ?1*W!&J3R3A$?=)^%B495spp2+&;^b%-D%_)PMH<7DgXS4YQjICBv;naI!RK*pOH zkhl>pB1|gu;Kh2tU7b;3wr`aeP7!_jTO#Yk3XeL?3?^-N0lOC|^m#^^$gNQghU0`BE%Wp3*IPhPME=~oqCQW>NLS9M6` zWx8wii2?*R2Ov*@acVi%s)*9RmF-RAm@#9e7_2xl;xdxu$IwdpLIZoZZq4Dsv5yk9 z1!YAw?6OZiH6-Jpu1lC(2dhKVz@X9yQlUrV?9yoru&Wo!r3NRC2L>?CbCgqEW>ofe z;NTjq;c_N-Zcd>47~~jUPF_&?>G%q`93sA?f{HS-2kv?&jW5&Lao_6+02anBe*Ki5 z@{toFi#%!xuT<3LK2^C^@tX?42t9Gbp-Kj^B)bT2jmp*bkAz~gBNbx%c=GnWfzaxSvYvPRiS^n{+ijAtv(rY9+w-Y|h^jyh*G=l8B9 z3Os?-0Z-59qkW&ti3$vIl&=^DRZcVK1f;e4wbr0jaybtk*BG(-@^_T4u!W;EyZ zlESfm9cd6_aL55FE)_tica#yI*BOwe>cJe?%MWEsones{erM>&4|E|CWKm~r#R1pp zwK!2snnFwdea01xMhEJI$v1=Y2T@M%dyJf16=TgVFBdTY06+jqL_t*b=m~JDUWr_( zS8z~tg0*Kg?^+$pQ`~!*hiZPV?Ff%@k!UfzCQPP7SkzOl#4ym`#55BU+0S z0d+k*(&|T5rcDqZ%7T+#olKpis{eqA|Eum4o+=mB!K`C+%+dkk0hb#l#kqae4Va#U zMDvjsnMnUY*~+--#|c94&A6l?EroXCK{;_OJLyAT!r;(_SNT^bd&*9=!`cw~QXU<& zC_)CE43f{lN*Mghq)lJOmr2O87WK7xXYx;z#!$a=pEex76Yt18aM@nP8``4P#?X*< ztVXWACtM9)MNgyu1xf!vA40pAph)m#G+U0S@Q8mJPd#CAeEJgx7t~`60e!9=)0s3i zs%3u|WAzEt!3MSn42W0r!rSVRVZKy^UoD-1g`uyJ;CADhm1X|Z9P35DQ(3jKr~|9d zqCdlAj$oPeH{c^a?8}$oIOe)SE52L2>l6oqfH`En;@a_rbQC!+$Jf?LhuT3yZ zn-^L9^A+aKmz|=hJwK#*g?=qeJQoRyM zW~2ds+lHSakVo>oaK&kDAzfHRT2p++lI2g%l<~PR9$YOR(s)HVza>^3PaJjy2WFuQ zoKT&$%G^;{Tyqu_#{|4N2JhRS@R{mi*S<-{%@>~RpyIXfj1eIaHwv>Qj*`s7c*Tz; zcmW?^B~F$!YYhj~3R@kg{n;iXXDQRXCmmpZr7iK?&{;USLBD_+q^fYDwfN9^cKpeY z<6;yCzlBCaE1&pMk|f6SJ&KS%>>p^uH%8jrXd{CkbDxe)^{ zEZl;H1B*h|I7!0h@@^+^*fT8#S8ftLT5vnuly9`^N(=WYn8UrK&5CA z_udna(kqT_Xl{RX!YqF@M!CwLvLZClEI^4J!m-Kq>I_Dn8K1T~&jD*AcZrzt+rE{T z>g@Ws=^Q?f@kb`q?b?G8Z3eQcZ2GK4eecHZPF}|v+k!4`Rl%KWBv_nR6Xn%bfVNv)s}%P{Bm383tZ-Og*>vJ4?jz4F zog>b@7Cj`jscUIq7H8s`W-}K1aH3mlc@6nDPZqk_PECUXUh3PHGUq_0n>JGYD2+xS zC-EV;Zr|~rfXV-C-woKYsp!cz_g**#_}#i$t@n58(>#5*`yv?rqqnNF8EY>N;l>p! z%fslNNo;x@%i#lY3Y9AcWYECzCEuGTg>eg$bpt7;9qDJazz=Ik0` zQe{%v35QESV6?>NqJ5oJPey9mt@g8S41aFXGS2p1#M>EJ{Q-7)CX+AtIZ;HO7gl*F zN00I;-o=Ty6mE1hozrjQ$a+(!Bg~jEISOAP(+B`y8@XF9p*VQo&#rLEw9e2qxN!y< zfCF+_Rov-Z#URNQe7B@63_^@F&vo*4AB9b#4Ki90R0UsTXjrNN^l=T6rE&g5R%MEo zQKXKDb4)4xu0|6C0l#%C_qQA)`b=IWT&fcmxS5GW5z&qUAqUIYwkc85H)FJ&I2aC; zB3}H=l(eR^Nq2TsNu{z$vh8CV&F z%q|Y%m-9Rghd#E)S8!{7Y!yuTKse+lze`);%^z(fAjyvnOy)L`U+9vpf+S9DC&rcf z!s!nEsz7y$=tx>(3^ddp2%mgz0Lbi|YfZEvlSd4M+~ath4At>D{+b`^F=NV@iq88k zxwk>LAV$NgP;k|tlK(471#J;POEE9d|6G^e?5s3+erk>NQ{Eiek3bO$2BMtp}zuwKfB4NrIw zH_DR76B+p(Mce93qr$7%P&^Ie)U9!1faXIdrx(Ypn~75&dB4kf5ruRyZ&zfvysm5u zYu))?5?L{i+CJ>7pR+HeXCl@_VaJahTV~9fUY7Fazb%}`;2GO(@QZoJ?WR zjvj{}ySo@GdZ?S|w(xH@jRAwCoEDs_apO3{mx%EI=TaNp-G=d%XGUvCnw(X`DFk9%oPIN%ALB=05vRQcdx<=e56P#j(Ac(gr^k2`7G_Unt6s*Mr9*)&Rf z$`qk^aEBphqN!t^i6n2zl%LcQ%5t@J$R5pBU5(7bhYW>2w3+Z8|Bc{z9n(0Vz#tr+ z1Y$pacl`2Lo$#w8tK%z-jl-*4H1!w+MP5bU+Xi^l>is0bE47? zUudH`NIS9bZ5ugFgfVuH^EyK@_kD9mhs?CMm&fE^q**Ahiy=woqk+Nbj#l*1>kjo7@(2sTe)>k*`T)VeLJSyAGI{L9Os z4S3Il3Yu8dhhp1LDyA+M{69sV>X^(y^+cW&+K^vskg57TJe@XN^{hS)tupqUY9K;v zkmsadog6@O#wv}--i-`t1LO-X(!Qj zs1Ur91`?sa+_RCI><4_?bvID~6zyPXAEXSV0x1(j<{5+ILCa zwiHrvq0l$QV}9CuS^~;N@h46yeRNQu2fR@6RL7dAJ%fwTbI-wxQ~&J8XT+nK@~52dZ(9eQ}pdl42Iajaf+*QPkMFZ*a{E-XzuRHRg8 zX@BBCgJq6!Q%$8{n{FU-!)7lIi4MyamXv(y!g^-FE7zIUyRHmutW)arA@t$~RnKq!q_phDS1rz@Xj`PvW1B_>(47@)tkl8{rUU z>sCY3GIF6+oru-?@>}i4PuufT9M|7|_d0l?3$NGqP~PyNGNPQ*Lh4vg^u=6JzrmZh zlX~GTd0m_er}TDw$eXxTw^?k{R;}+jz~X!olZ6BZ2>F|yU^Lde_bueQ372`u?pjyA zH{#d|zsuhm5@k3J5_nZ#*`H31o4dsQw5gNmn=^IUc$Ud8&w4KI)-CRx0AB{Me>VbA5 zOLD@vnX~Y9X>;=ioF?A1#)%VKabyQDXdcn011W7>x{R~QGtD(4J4wxx;QVi7)BP3V z1(NYxjlyM;Lj`$E9I8KcUev4VP5Cf3jDBK-l|kx+=8Q{YD^o?rj9EN$l-=tFbz3L4rwu*8Y-Ht9xP)eHZ zG8XwMbY~p$fNkWQT|0uf=IwglakzqL-@b8Cr?Fm>2Pz+^Px%(U1f5V0($J1_t-kPC zFNzm=7sjSP@lhv>6@Djav?83`*H(wW9S?fPiDLpb@RF)ptac%9@{Ra+qNeRx!BJrA zNilHp?#q>|>l^9hU-?0qawXE-U&klE9kd5{DFMH^YoF`B)B? zAH`dpw0|y5)S0ToWrl%3WC_&PL%8Z7y3@9sGaALV2o92QLR2V07>=;S)7Un^B?Jf4 zic)c7_*?B52OK7nA0&)USyfKVDjVjH0mQ*`mm~_<%{n@|0VX?k>WI9AT zPjMW%@6xMFsh;sEEDDrHPz4;EgC}Vtc&%YltNsv&UekfivZ>>zkLu)9=UUh`?pfkO zSd5M~&aUmdxzPTEPd;V#GxCz#EEdY?7OjJYnFUBf!DPN^{SO9Z6Z)c(^OB=%(3Zw zXkvE+6s|@LwXoz~)jH6;V!s-%wn{GH8*|IoJVex+Dzlw8l)))ZmSlo9I8uF+ULF+gM`w+gWqK;AKG#M3;Zkp?dC-xTWvz%)@|PgK+AkO!mUV|3^kmxjUR zM#t^MzmHew=8SW2>SjT6<2<^o2`IQhOg`|0kpBJ+$)g=Vk-SznoiX%Ya)8(J;s*7U z4wz1hytkT{mKcp4OS(jN4`YI|@}C>ujM|prO=UW7rt^qCqsbFE{a`B5<;@t*O)$(_ zmO1mX1v=4~j_u>fu`Yuh+u;R{C)0>Qn=#|YaV*)&oGm+mgE>Ho#26yI+XmL7SNJ}9 z3eO-TynJOCC%X;Dc;>9x9E8v7je*(JrOoue1BcqwhBkSO-~FqWS2@Rt=pd@-vad!? zhe2nzI-oj2$_&98V3Dtl=*TbGTx}|t5n~9YBPZXwQX;Q0bqI~MnUJ=!L=;A)zw%() z@{WwbSNOspiH;q5g3IcoT-Rb-;2U#p?aM35vNSR3n>4UglBa!Z9nSfXCl!!Zz;#b- z2q)8qsQ~hA1qvCF=K!)RN{b_bRnWyzA4h~jl+vTI}xDdmJ1SCwE% zoM$IP9qmknnednfHOaG`gBxWac|B5lNmQxuI6lJ(;UJZ_zrH| z(>D5MH^f%t_hljSOsrTPunDPG1RZsn6^LYAm2b+iqZ=qh+ky|e2zy2^MRgEe(xy;gM>d?d}# z1zgUvI)ja#@nZBC<5u6v&-|Zu(g$s3HPE(w&OigLYd<2(JXc?jtnE|Z0v~>n4!glF z?SuY+zQtCYN83=(nVOSAyRJUg9*1)ZknpB0^&YlKl4NZ1CI2gno8hm;OIOkkr@t_X zaWX#!ePln%sr~F&!$7znImONeUK%i9sBDGL!AagGi7(=*L{r%>;t`0B(xBABWh=_F z3l@~^IR@ACBJDXsD}sST8>0*;3wcSE{elN^C+|c?_ze6!*CDbsLcJ(GXKC@Yscdv0 z1O_3PI2v=-iBkx$Iu)5wQAeqF1{Z1qgU|S%9mX($BtLCZf{SbsD7=Q(B~T69<7`2o z7!_*hJlSrXHykDFYq(@^8>q~u(vyj*q4ODEMd_GierIUl%DCS(0dt%Qow{WMmyT;9{)F6Xp3Zw8W-<2nY&2mt`e30{FZSTh9oF4r_#i?`eqZ!l2UFiUBiq!3jn11M$>jn~9zo&CEN{ zfyq2{6n`(pe=C2|XDf!nx0`v!X` z3NC1D2ZtW&KN+#mAr`rLJ0Z{L=vtouzOA+Br+nyS4wj4FazVM|Gati=Sy#@#;O#_} z*N{8e6L`dK1RI&?#P|w}%A|vKU9Q>AcOypP!bn4Mm{d^mWcmh1@Sg~^-BWBMaAO3j zBMz_9hP&2Bk7J`6%Ew*(;*F;Pg3=fH#-_`=g&ASL<8-sROFx5}s-v zq~At%<;U;B+Ne&JxL5J!Pd=xP@@;Vg?>KT{m$AWO>=@3O zMX#7|ZoaIWzdRK|r_3c((-iE}$y8roTkaVFGV-c!updXAygaU}!_41vL)5b6tK#f$ zAg65tZ@+V6j_3A{!O@*OVJvSUViVlPp>o!V$CS5TcrL!=#`3Yxex|ZyOtspYDfzuc?Hoks%433g1AUeh_r;Z=Z%ODuTIwN%~4ePXzVS}1F56)qN z*UQT-NJHTM2xz|rC(4;vRuGY`i{5a0`NW6+0sdZJ-uUj1(U-;)o@8P}@xHRym8DP| z3h=F+&^a{~LHW^%l5fR>X$gsD(Wo}jh@g0v4+mL^iEhtCmHS+DSy{tsiEadT`CIUzq33;K2`L;G_=uL#M|RK&DTd#Hk?bq2Jmv zcaJ&1jZS7MddAFI=mAo8)=kXkVotqTy<$b^p)b%LJ`;C!wNgBbxM&H!cOWzJg(rPD z!R2R5=Fo%C&ggrUz$&}iGU+G&a;gsBg(KAhrjAI+wpi*bLG`3+L)0bPF@f`(>l~i@~$+^WZX8W=d(>9 zK{&)s0yUgT9NP}e>W0`*+LKS^V|Bzf+H)hLflAw!$K_MMXJv$ElePrx;z!(SS6#WW z9Yl+9Y0v2kSp3v)(zY1&UASm*S;^*CCz9gF6)nf(pZ3pGtQ2&ZlTq9DoN(o_i+0q# z%7{ekhJQElf~9qvrs4EX%BH%_$mO#OUnm1ig1ecpi91(BtG!e;@+|yY=~4X%bwjFo zkD~l5H>Tk_@#zTi5eNz0Qt`C`9uOEE(!3eUSuq2avc9ci8^%OKY9k7i#v=+J#U;~; zAc-giEI?}Nxw3b2ufNB z{Xq?%qK-Jk7%t0)Sn>{l)vVEPvmx$y%`Si2p-uoUP_sZrfV={*h zeyvyYDvfU0nvSaz8NbzujECWe!J&zCsHqz@DlLsHo#Kh_F?=w(_-O14yP8<8>!q~QP~p3Pm(Kkuy2XY%Ap<@n={DL=X97Y?<>d-91qiqe!J;K#giji5yv z8xq1RI+)bah>N%27T7h)j>|KGlMBgkR9=-{=48tEb+f550f*<9s)_8}b+#>@t?Q@b zkp%W9Jehp)+X?&=$yrZ+R*otiYn$>mRcXVh7>15MV3qW@ zYui4nBPNXxIq-n!24BLk_nv!{2OfGjuquDe6mwfa+!IQ7byz2T}vnfpe@^#LaeDvKowqs%WGeK1mkWm6L4%_^QyzjEw}%HH>s`Rh@bUw&ea?* zty|9vD7NHv*nLEFO(8IPV?=cTxiUE58NWJ&8gI|)9l&^v#-aDkWna7GVvKBeng94R zMqAyWWk-?jvH?f9 z69-8>u+EoAp-0qzrktqn4d(QY8jFtPJY~*X-cHKQR#GvhPZ>{Iji+zy$Rx&9k+Dpm z*1=1zDD1h<9(gsmDKk1c6LyT}O?*s(P=~(acJla1Oqj;IW#UeBE-blB?3CC%|2Sw@HMz+u$Z zB!HIgxPi{GKl@ET&|l}(2^~#^AJk)U?$m=^ldtk-HQ}Y$mn%j-r))yD;7>bk6>X(O zo{a9y4_BJhc`ZFjM8xmv7yGl#tgum6`(Y5!lD>eV%7YVC18A&fAfwtL&rq(q8y)5Z zfqUAiJV%=z0hm?6$PzXUU_I~M6%~Uc)n21l0677R=mhW&?4}2-BduZe^5x+dai&dd ziuOi%@S3(pJ*(5I%*BT>3XiNfKIO5V5X0n)N%)o=*Xo3sV-4XKpOY@a<6HB5MxAca z=WKqraWtB3DlghtpHW^Nuj3ZRjx2}sMP_%fy+j&Bpq2PPf7MZhxe#=b>e-^TQSuy3 zXJAQD1cZT5Alor=wqayQ!fEhza%?BdBN}Xhm6_Ey5R}K@j||q-gxNZb8B6Bxv|~R>J83DA3ip zRd{r)yk7;x_G~w8a*xX)QWZSw`@6y}9H*RcY&qtrSNquiC`KLU&Y7LR*B<%Ga@(DE zmHQufBydQR$|wy?j8}X@$GnsTI_gjeugXwoNGRhh@m+=KxU8?U6+;6|Mq^!;%J_iB zerz|2zeRJEfILtgqh?aXbJVrIcp3ob;VFEkONK}O8<5E4*TkA%d z0Mlmp)l~{NnMG(+rs9m^htG~?`Bi1(aY`X3byU)c@H=Caj~ORJt~h`f5)qUS^9L_V z8`^85J;;z7uAYR~7-M}Kj(B$B!UP2acinY2mi_nJhv>+fa_8^w29Lfi$>krHxja6| zS+}V}g2mY3P3f;ZJ452&@i4|N8at67=WpXrgNK zn3!5#;0AYHLymYH!Et5Vab`WKVE_l| z+F##M_T78;q+Hx~=RM)oVQ4D9ZdF%3Uwg8W>*LJ7D zgi)K~#;ImMg>oVtbT&=DNYoI0-Ng%GbP^2M#3n!=oyzdE>3rtBAsp>k`atK#+%d!QyW}`8OHGUPMi{6--N@uiH(Be;UPC_b&&?r&*Y(d z#Dp?>0&nO8pW7Jw1Zdnlg)|cMWf!_+6O*sWQzvu&>gckT*FcX%-g|I@wT(v7x{#G| zy#3C+bN3yrUcG^6d|l-+$bbqhOBStw)|^6u!`zRfJ8^;=ibj-`ochtnn*=@IxqFc3 z`S0217RDiVrDG#6L76~)`DXOcdIAu=({aS7Oi8}@@+FIj^plc-F4ImKVAK8u_k5a0 zloT)MuWgA9w+>^s_?Ee-DWgnWQ}@NLP)9whuc7`F)s2j6`+YvN1?TdSbnz%H>8S6Z z9^#RdYOA&N_$}I#^jmFYbb<6mf5@XXC)dooOck)1jFJA;Az9X>j(qI|Q#|T`o033h z$Sf09bip7xryoaJp4!Sv<0yDmIWREP_-T!v73bnh2VeM=J=<+2r>1}=jRSdCZ}>cK zKiy@+czW>XP4E^ocRvAhLb#Ru9(; zrb6TR*0TiYOiNy(Mc`=7<{_etl+I|UM!qzN(uDC!K%TKa-O`rAR0W~Q9TYT)9A}zJ zGMfEDQ=V1nYSdNKl|h7{DGH&TC-TfU8K^oK_QM6>FbZwdEV+YR^0)1ZTb~vWKIe~p z=FQvb>`Lb)OO}=AUtE~_Q-~tYm^L*_sV=8BZ!3zyq#Y*|!fAV6YiQ4{6rBi*ipL$H z&ah=>@hgrTKM2hDb#8=7UeQ6w%MPfdp%YGYaqc_*;93FTmVFPXSh?s<(%^$@;@WFE zx;o%%*(L57eJ;bg6ddP8AgH5HC;w^`#cMkkx)CO6CrzDzskwb+rq14Il!L-!1lazO z-RzvlIx|{$9R-lXtNFAI3moVQmP4US`5J}6n0)6qniBr>4)s`K6$a!!QDMg$!z}_j zhsw`>dTqJoH@D-o^QvNC_f@MZ6P=m%cF(?6nINCQ=ozQkKmv`-^9`?KKr1u|zdRuQ zfJeE6DR=U%lLMXQz(qg&Pai5W9BUq%#3=xMM0Qs8k-C; zIPtgGkS8-S;#VdJtva?LZ^_W&%7~%#v{al{xsJSWInEO_k)$s>+?8h@dSrfi;>l;= z1y7EVXMDD{Egv+prz&{++?BV5N4nQBR9P42UUNLnJz%a#?secpol$k+M4Yvyyl6uG>1&QR zBUc`S=({U*Fv3!SVw*>LPpMR3f+N?j>xZYl`?#7Tm2rgppE0`d2R} zmvln;`7OUMH{Wy{698n1Nu|f)^{`p49b2=hpGXnMu62(BPriZ}o6^m_ZM=*^de&79 z<%kxgGX`~M?k9cPuP+#gt)iNI-$b;8)iGG)c_(=J9-eYVqT*Nnl5c&kDLyB!s@tTi z`I$N>4PT{RcmclQ9vuaiI4nR})0t}DPMC$=dtQ+r)rdY9xyDgRxbkyC5#(jI& zX~P+H61)SaBatqe^O!>q-`A=1_`!}YZ1E;GqtUjn1|RLoAHchvX!|lw^%zO+t$Q}y z(6zZ8N7#u0j>QHX=IOlEPKS35IpAZ72J3KaWRl|v9Ih_N-=jE=PF%w#II5)GFfmxY zc5Ru{JA-FO=GpP2)6gYO{4jaxn{cqVmNDp*Q3L7}#*FOA)59DJ;vRxd@HZ8Eq+G7R zdEZV>@do0sVwm)OXSaJ~z5M z01q>S$YHfj>I;f|+p4FdYGI_Xgf^L*6eqmeZuOb%MV~`V^_+6O^O&)gu23dZADU}# zw41@70JQqDWhYJAoyO+MAKFKUP<XQzug1uj8YMIK>&R%1K`X9?@Tt=Y-K5a8qJjg~(IT zLwFsMu=+(_&+0hW4MxUJ_`Gm1?�(cg1;^tCYZ_ZB2eLDndJLDpF*FHq@=`z~nc2 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%0A}T%2=l@e1&b99!4_ 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

    Z=9~Qa{rBE2ALz%{Fr>|CMVyu;9g!3bFg;Z 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

    |2Ap@DCp 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

    |p<{S25RQJH!x>>!GY|tuP*Kno=lPI$q0?D8 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 z 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 literal 0 HcmV?d00001 diff --git a/packages/Webkul/Shop/publishable/assets/images/2.png b/packages/Webkul/Shop/publishable/assets/images/2.png new file mode 100755 index 0000000000000000000000000000000000000000..1e296cc1f1e5c8c06e61c37f077b126300b4664f GIT binary patch literal 285043 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 z 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 W(1>y8G8lgV0000zIYM$-gEX|d-dJk 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

    UruBH}Vt?{tVAgZC zV`Ft_Nr6cr)@^5{=l(&< zcJMeDGwKib4hosR9*9;bQ8-()H4awE$#8c%%~+r2H)CT;z%nKsKSZ1Bc&!K?w+-kd zA`0N4Xfg;y%VdV)+N8o%0bMj02pp}%PHTd zk>EbR1DD~=CYhy7(Do(T?XfnEnD^3amF8Dr!6$%nfQ7a<1Fv|cmfT-DLO=#X>d8Xm^*VM zn%X*;RW1?RU?3VFH$W4<;b1D;> zR7XZGAq*R$1=C)cMLL_u;m3Bs3?~tohJF(V?L4=xY1SpjIVV#k!@^|xDZGS*pQ;(u z*W%EA%~?kd;KF!Jm;FsU^_a|~jYw;M7v@4cEiK1{Bhq~KjWj0h@)pKsInuNHI&+&4 zm8O#z<58UH7*^KkMHl^9p*6BmrvE5`kAxF}q|g?w*S$oo+A_tsZBv0NYJ*9>Sa-jkRx1I zGVgjULA3-!sbT$Gelp9Ea*rQ2sQ;zt?LeVHS!>+7nP9=IWH2xdqRR5IozRSjPhk4z z{jMvogQv8`x%20-JRy*2OKwgt$SCwBE}XqHuG0IMzR}4mw^uQi8Vvfu0oz&!=2@Gc zVjMObI~kk|3}1{v;wL}*^b>J(-{IIssKt5?AfJc#rO$!=FTQh>$j?xU7+0XzN|Ubb zAHUi)DQqNgzw=N$`ZZ~UFQ&CWyd;UVI+4-5`M6S+e5_Q>3zJ*W4_;O%R93>T^COew z{zsnqSpJu(pvUyB$Qd6>72T=ucWjzJ1u{U^8b~#vt-y_ z&8Ma*?{nRlOyV@l%d)Cv2m_TmHvABI32#YcpVm*}mT$pc4i+pz)gDV^o1qE9Z_WYE zJCj;2nVk`4PX9Tx6{%daU_Ed6}r;9 z<}^D8gCuV&%uYCDHVPEYSjhyaSF|WxHLo_Zj z+}7e*oz7gVGaqX&Oj!$nFuFON^;Vdr+bEoY%MX#=Ip~%;FN>CSr(*W>5%#7HM(f-J z{I5Qizw5&^bTSTq>3_u1>Hav+j>#CDjMYR08VBdaB#)4ySuH3rDnput_{t^bsl;~k zQ!E*Z?kaA4U#=u?GEE^IS8d%1!^Qar?_48JNllG7jLcB>$i++ejo^gDb_D4|=Ah!F z16UmlEyLdNRE0<;E5n*(tBq@)O>EA04ao3};weuD0WWj~S5j}Lm&r6Ti?e@b*~6Q# z>%0XW>IkE-7H(&y(xS@ew0*>L1(fZzk4mbtPFu;4^k;2qc+!hA7?rC`4@|D#cr!3#7{8l6R*e41=13DB(CHkMDWSQdA z;17+R2tUSD3$b6T*TV2%eD$+`7k9ns?O23ZgM99M^se0;U%&6Zc;EZpfzWP=Z-4Wf zF~RzC+w!$+Z<>$wJ#BIC2j3O@PhX0ck6(&6uG|ox`OH^hXqZ3&8@F-@z}C3)rW<0} z#?5wMwBK`A{N9`If(YoN$-#K~sVC!m54B_E7$%C>SPTrEr?0V2(UOlu;p%P=HFGDQxLMlF;vRB=d9eu6oHUR18zd@II^O zpJd`yK6LUCw!#}Js=T2XWNNu5VbUYbtYKT1C%V)_n5x>TV7^u*P*e-AlwLIvTT;2I ziG@Z8Yy)*y9_zs4v)5oIiSOjPUM4e_&WSmF0ngPcZF+f6S{fpSr*dwdY9j7+U=)W6 z`D`ONPen1y=9zgJt0^RTCKEBcI2KxQ+a?%UUHd<_QC}w)3Gg!3U0*&X)Q8;X* z8l!a>^VN`c6U>q{zve)Jhy_gnBk_2;#}fBtivbJ>>diGe(upKzn9ev8eA+^>uzlHV z!GW!Z7gIKOBq~HCs~0lTn}I(G*_mjf1zgz<-azmQxXKn4(iq&?nTs!7J5^w{*wfT! z=gI&L!0sh}0FzgcrXZ2Y>M{hLGix5Ufdew46o5}Emq|OTv|a_F>yWPhIYXUB!?w*@ z0XpzBB_u&9+qy`v6+CC6%%JTIXD5qBLt3#m7A|zh`Bz>-0C&WuTW^TQJAa}u+sD2} z{D6sg`Xabw*7yFmzc~(`I28vDA0Ze3R<^9GuFQhLz0Hsb$gDj(GKHE*0~UK*tRq%= zE{^DU-YH}ih|L|{tTAl{SRaEgI%9z}YUFKQ-E4#>3?4$Y38p#0X(i6eTJgkmMy?4? z2BuS0n!+i=*+Nf`&L-4hC-clDhf!w8bM`6t>tK&;PiH56)<8eHOhLbcZ)v#}+9~}{ zR-Vn9hrU(maKL#Wwa0?#ykuXi+~|qzIjR}SiTs|cYI(wDKm#o<^fLFQjqrICPH1G2 zZBlf(dtU8dBd(-JwzEm=rtE|Xyg1%mO0dsUF%(wXmdrHi(i#}g&|4lSmvX>oC>XRs zrPPR9IJM_&umPv4JoXA3`F;022oQ~N-IXijYY+T&Y+JWJM$Qkiw%ic^X8XqY=4ZbY z#|Nh3SAP3P;?Mr{VBGuOPsf#;?uZvp45Q#pkp9|O-q#n8jXoVC!vpcoJKr9k{*#Y6 z=;Fw8SH*`u_Dk{n{=HH6Ktp_Gbzj_k?Ga5I9>!g%JTig2_67&;;dWqZ0^lmJe1e zUmX*Jhq2h4jh0oc&3CSj)t6m^gWL?0?Xmc)Z`_~#wsuQjY+AD+cJA5%C_R{mTVnT9 zkHGVZwHrg-yve*#Sge1r4F$?2G$n4pi~0hKN&TS!1IWUoMRKc;jA zh_Fu-ADIk&mRIG&5u!P~@X+$wzOsz$TFdgr%fyZ`=(m!ca_wDTRh~dI?!EL|Rt3G} zatP1!$`_QaIX?55)`#vt1Wstoq?tPZm2Cgt|KyXeT1e%p&eqH=&!?!;h6F?ff`rm6 z&y!9yF>s}Pux@TtCX2_o4(?at*pB3P;Q^~jl5z3?!7zUt>S3s&}H>bqZ zn%S*LQIpet7`MVe6OSj&%M{(8MglZw%sMoz}$6vdL+FrLJrVNKl~4 zbZw<3am9`^CZix}8L%@|DwF}bfXn!+0^D?kB<$Y8_(=|)#8n|uXT`4ZI$O#abz3I^ zvX9242R|3x%R8d!#vhG2gwoRfC*%ClL-CmhpJ!`Gcl`Dz{~Nq$IR5DO{%bsPe3!NA*BirxtRtQDY_NqA)kjc@H75r$ zc~mU(KCuaW4t(lpMJQ{&%o#3iOd6MNNVkB1uR#H8AR^Zidv~=OT|9ju71O2K_V|bU zcgGOh2+kcl7>_*iH!(1FE_STj6jxq$b$sB%KZgP{6f36@xSO}dOD{bdNB5tN|MleK z(0fbV`{sLN8MJWaw)L@b*Lsw`x%kWtbMZH0oPgV+D>myH>Wv(esx$wI*Wg`YWOqv+WeZyq5F^V;CPg z8-s(V>0c~KI#3an%s?R%W0w%P6R~{dWiE-v=)j4%G&q1_&A0?7^;jrYuiePu6H}Od zFGe%;ujzi`(g5nH!!jSZ`MW5w!~@xZtKIbMABk?iwRr%uJ?o3D!dKK;kwo6w3w zBe7xi+Nkeg77BeLQK1Rw4TUE?`75-P69?#}@F>P7G~{UTS2}`txq;aH--1Fu?I= zKm$>sd0F3)QnJ|@x1_gjXyv!q# zWsn6^5}c)`px~}NEr`)Hrx|&U$UNE673^7l3II}x=6*DQCzH6Nsq7SvoW4aW^n$kQk)ATI{j>lZ& zCJ|cCkF!)gi&08!3}pcp4Az;8!VqGS6d(#`84{WU*zsr^BpDsCQn4`)FgCJ=v(W!M zP7;`+CWxmAmBL!%U%q@FGm3@yxljIS)NI}ubFX|a?*Gc)#M$wtc>lZZh%bEY@8e%y z9gS7pFk$MHra(#d0q7|G#&?(Kh12d97LNvVLw_60Tr0uMINM2f-4^fv<^O~H^e=s; zP>>lKnP?I%{zU(=Sh;pXbaZy0s3@4kd71U8G*oy4ZKfvban_k<2nq;S4g!$i>_gI% z-c+!>giGZq>5A{tvrHvta1~h6{6#4aU}F$ZyLbySUAtBL*Se8jinP3T%n% z;4(?!FaSq8F$NtEmj=e8ySFu(R`$fx4?lqv8IN1;zB8VD;IX*k=ACii&`7lR^v13m zSH*w*jbDqufB4Z@ziKu0OhixD77i}IEFOL4FXKObc9E9XkBw% zoF``NuYLGUQA^N^e|3$G#|Qu2M_9_3h|TLSk5`WLv*c43Z@lf@(biTQ-+B0(apc&s zXlcXDinYK%B5erE9;DpL?ylImwkMU!6N3|sF=mqZN;I`}Vi{>1}bk|Cu;;bWaT9`P+xEe9JxWj<>$; zZJcC-?TSvQk!R8-rbjWw_AHlB>_?sY?4ukc(xm*3OIl0iP8uwfna}-K1WPrYR7;{C za;d*3-BW?Q#b2w?Pe3nJ=}gB-Ks{j{kc^HTUpZ*VX*%;*XHqb*NX3B51Nzkl@!d;B$Mxp~ z%<+^zs@n2)f8_ZJSRvw1CTk=7;#ELJ29(r3*BYl>^DYJ%<}bAaWm@G9Y+Rk3rNVoJ2l%{rz*+s;(8PMMMjuu^EOivSc890dNt zi~X_V%FCh=VL5qeIDYqcKOX<*Z~PYZ%*RuE568M4o8p$YTtU8wFaOaW#{Q!xV$I4` zF*!Ms$LaN9Vx3sLlqSAc&rHXu3x}hL_oL5WuY?@>gkV+x;%14mv$8D*wQ%;HHSL&+aNc5cT4q0-4fKRlB9T@qTkVigWa z+vAme56132FA?FaH3lvYaLD<;#49H+#-{b_V*7@5v0>f1IC=6Q!8jtWy6N_4>BGG1 zH8jS$I7%>Np(#`vRw*hrf`uq?b;u9$p=J?0zeaRK@xo1(qzcs zN%hZKq-6zUmX)VuYvn3gjO8qEVOV7Qv(DtM{|YiI%PPvJ{7AU@$7Q>684y@Zlme9M zeD5O%sbfjHg{|c?`F?KwAYIBjUu1FSqAz@IUfSVf@#bD*Ih}3ymFe=%#3ZuW*6Nr{ z#*pvJGatz}{ZS@mK7dXvfopj(N-F;ybc|B?k7X$m@+Jo*wYcWDvbQ^W(C}m+p2%V0 zYA8Yt?@9-fCd0Ehi{qJ1Qah{#`3bZwB6(rVMJtxDH5<70sH^onCOkDB&0x9D%nZQi zI**%uWmvpn5LmAu!lZaEOLAu6OjpfNEm|F=4HJ$YaeCG2kYd@QLCq~^ST>gOC8+!p z9*gCfT1N&q7R!}9c?06CS|G*0&8Nwq6^gWjB+gi@Q4^d*Y9FOA z<*Bpjyl8+uTtT5ZlgX%?Idg61Pe!kXz?>IcEsuqP7h)dMSZ(*l*zyY>$D?sQ+XYyw zdHMTMKQk1aS8a|*9{6Vb<$d3V2`-OL6#zGQ3YqwHK+qm9|EGe%r!c6ph!Yu;{pH|j z0@el{QPBFOas`Ig1)an4)CxW)nQ1oQ#cQX!Mr|M3X3KWXb_sf-`cxYHUTWjRL15q5 zU!a8B{1dPO3;jWzI@x3zF(jZS$WQXg0QjO{wJht^gsZ@{UrcXvg-OeXj6mhV>{*ud zMg0aY7f9QrcvojM%%V(9i;7Mri_$gi2P5dFS`>hj^zJE3v%Ep~8Kai1vg=sM^-So- z=q_o#13yg&OFc-x@WsdDnq3=W#ropJ^XFguV)UOs729@fkJHCb#UN|J%a*T-L7qMM zw|^7gdG;lgr#5DU*ANk^EjD!Z#m7GSp7@`C{C{Enct?EV4?cpa_0zHM&@*v<;8c9; zp}&g_m^T;LL-*jnd@Z(NzO9{I7BBV>$D#gLY4bo_b@fd+3r&OLrnvRid$C?!iU%J4 z=h(gb$++W=J7d+dUYvnOF=vmF-T?FTH4ChU&Ktx5r@mHfiRAL(jX$8T@Dy&+T+Vna z&R8g-^HbobIQNZ@T*N%PBeq<9SIom#E^y4);K^6x0_&kV)HM^dqq%)G4rLuEY^~5) z7hwy#Sr(We$ijh`Vb;2N?OMuSjKBQ+C!mGixb4k91Fmrn8oK~V&M}jHCHC(AehQl9 zE7voI8)9_mTx{sOFYbBcTVmtJ&2jB@S4Shq=FMPc&Za=73Gs$y<_UOz_%e zOQ9WTEKjh3P^ClvvLMrCdg;t}d}j0QofJ4KxTOZiYBq&*uifRewBSQL)VogP%u?Z{ zD}NmW&$`nakrXl-H(bLBD4%K}*m0s_NCl0=H&f$P`{1KoAl`K3fH<8ca^s(f0C5Tu zqwwgAk|%-iSY{w|kb61H6j3Ge1qk4oaJkh*#shfSc!iW@XK-o=+$|HDJVk*d7S^tyB=X7@e@eYF6=-^T)**7ypVxcL?fB=a%WgXtFCt5$WCYX<6xG0H^7lfQ)FsK)Vo$qe; zR%p9c>y{y-XJvo@aAZTQBWK4JLpzOm=}allvP70BOl5dlC+koq8+(Y_)ZQF_@u%O7 z??3fQeCUHWnKRDseKr32AHNan*IY&jza?fyGjY=`cf^Aa?T$}>{^Nl>iyfC=6>B$M z6MdVmi?O+e_~09NMaPPW8#Z1Mzw?RrYh#QiW@Fdyyd};J4cSp~{PfA(1~fE&KAw8+ zL|nf9t+DR1j`+Z@{ku4Ra$g)eHxVm0Tpkx$OT2a0HfC^>(YJ03QGOnZKl}5~#|jQF z@9J6x?;#jFClwj_XBr2h^{ZE~7R;>JnPcLCe~CjsRaR6o**?W~qy_jw&LjzcSe73g zyEtXdOhwPiD`MBpZvk~P%oZDCMc*wkx9x@)#`|^wd@k$gWi4Ia1HWQz*E2xt>8Sd; zRh-;&8SD=wosQ9YCH8(o!_N6qq?D$mz)dR` z?JUACDVJtTd3LfiRkP%?(92sc>-v9Rj+30B^CHJ!W|MCzSS`zn_{%Y6TjYa`C&sSATcIr;tQ?4) z*OglNbP>ugWmKD2zRN#(44>tR5L7eq3_QSAG9OQ~EKwsi%T@ifjLbUYth~=eq$?GAyqCdYLM(ERvRmFjOH-X!1*AsoK+kGk(yieu|;hD}w zam!^mGGnx3xM$GuD9dy`)V+yrL1{+G(Dde&XVHQC^pu6!=|q%kP&q>YPLhcm2ZbgK zg>4=_EU%_(gehkxldo495XPJgjGBWt9?s7X%cq^PaYX> zttV@DH^4on_@hJ?&!CAdh zIRRICGRjOmU>cd6f=NN9lA#i|APqn)rgu$S3xtSG59S;T2u!L?0Bo*(L_1xd)a;te z1k~&COe#j!CO#bCkS*(N^u5`6=s2+*P!wg*PTDFxR$81qh;C^)UN!Bh`#F>qY(Q#%z?tCLcW_%?6*I#@trs(Ufn|8&f>(?P+XHK(g|GEQ-{z}xso><Cy!n>5AhTxUt6%taECj&85`q0PgTg5fS=F~0 zdI7H45uBnPix0j3S5U}CLexoOBh^f>O}ni3^HQRkLxEd*-oCTzQm>6q@2>A@ONBc4C1;nx7Vjpw5N&Mk4P_zrPq z3VLD84ecb?l$;C^{PK#6PM0}Tt_0<_37LML7fJoDw^TPmyA8)Zoz8TpaNN?(o<|66 zSTb-*3PfYgJy!F;wMgGI5(3X_9tVvP&Ym2FL9N5xzln|NhIJ!uUMyionmqVaO!x1P z$(ptpu5F34n942@gLdPpP6ntLP5=Nv07*naRB+1dg>y5DW+|yAX80_``5HljM2Ct$ z3NVGw1RK+3NNqjro8yc`QEEBP5*D>gptOy1UTYJ~vV%2saZ~os@*bS%&M(~ju5_hlEls&TZr}#{PtW687{7F>&?`cfR`6WT;}#DGr^^5e;$#le zU)CcXIVfGTrhn`=YOlviKoZ_rFYD^Or%UJ)A){<0;sReh-9xjx0qUuZI?H=NAszpC zUIH61cBBt!fOK|EYC)XwxdQX6Yn%HHUW}XW-ocAtHuP$oKKn}C`|c8GeE(A~#yJ!q z&jQ8h8+-O1k4IkE9pC!iUW5u}S)5mDYn$=(9gp+7pM%b3SwHNJm!5qJTwRP``sx1= z-+S!a@zjeC#oY*vmTulRPY|ydT7>bpw=rvNyghE;ygZuMXmjEc$d<-fxqd}_=8OM5 zZo2m7=)`k%mWF7GZX@*J8{hcucmP>IroaB#hvUNeV+gS>9DsT-pLWJu?z%N@yZ)wl z`S9sDdg4?JjSt6pg!nk25~oHvS%>x8S%g&Y#+&1ox3Ly__z`BN^OVsZjWZ?CK-cOm z)UkpCtoI^#Uqx7s1wmbLVvA%SRk&IBIMOKiEBJ98e# zAJ$;IR>s@j_S13f-2T|V?}b>#={|Ke1Zc<(l`quC6}#RL?d{Bx&%8>2gpt_u)(lOTQ|VV39ESY(g7&XtM+>C1GEO?h3p z95+6F{VKwO=`6OU3#!6XpHNR=9Fk83nD9?qL(UH#tMp5sC#;W*lN&ml>DJ(0~ z+g|c|CBNahWhCFTOrGbKF6$IG&%Av2P_2%knu5P25RG){)8i;qVTE!Q>$LUY~}ZyVP=mYP%O*pV171H z$C;dY@jfI0EJDx9*Zq|QTpsYmOib+s_1m1I08Q2}26oUu-q`<9V&t(&9GoD(LN7*oA8aZlTGU{NO1INzB?#KQyCfHzp(;IGx_1mtX?6&AyetFCcPsWkGyW{x-=P_L^ zVoK{|8$-maIQ~qand=E`{i+O=ITCl-aeSv;*@F_DmqL@^?MRWurAyI;a?}n3b!wHf zOWNe8r(U$8STy4~siTz+Kdv`tkOc6XVH2e%;8{w6CA}58w^;3@o!vY0a}Y`cMw#-sIC>fS(sW8r z{^Tba`ARzUQ3_gUiVAWKmG_pBYfhA>so9!U5~LIR*e8%j(ujvpw=kQm!36t_FFhKY zw)K_G_soWj{~Pm{V#~%YF?RG|OfF2s+BI#=);Mhj&&_CRk9WQGZJ0gR$73%%jDySt z*41(9qTNlH!h?OGdUa0B4dS6(7hn0Orx5@LiTcwW&%C-P+D;tC>y-6Wqv=3*y;vZ+ zpr4tum&Y3~-xBQ`R${eS7KdMWmSeRp#>Oqz#d9w|4-THj^xl&K3cUp(vKdF3TVl<+ zjWL8k1Y>dkL*I%go_i*)+Hoc8pF8kG-4GW>*Ts=DtK-u8&CEzI#-$U72%Wep?tIq= zV|rju^zVBn`$EBI`36~^#(C_*sr@l>VSqm3kb9UjixshY(+z}v+yI|Jd4#q)n%Luu zxoBPm9kVb!4AvdHVBfI`K1VN|Ll_g&xN$Dl_H@UccioGU#|)Y+HR=V6Gm|KGgYY?y zz{9^|8W`7OYCd>;Z|r2B@8!F0jAI9$r{9L*0kbi{dA{F!_R;v;`@b6h^OL_H-5dL2 z_7t;wXhA2G*DNFuia*s+L-+ryOA>)Z3vn__l|E(uRRLGcm&;Q$NIow2O#ul#Ia>WM zHCu}U2(CuoqadQy%fqW>r~rCt=@QO-k>xqYNd?VXe%76tsyWT&y<^HkUVmP_EB+Uz zqd{3lH60y5qBP%D-kGX;6(LzIrJy0-CBI{AL1cA~ACM&Pt)^6tR8!kR$5noJsCn@k zC)P@GKRnU~z)<6%h-&71k?D1|Q4@4Mro_Z7Ovic@PPK$klHbc5)A0djuid{1)md|? zF+G8~0*Fijfx;$nJId`4=|KweO2?LZomuE658um6PfiqYI>OW8mq+8g(s*&Pi4cuNw%J- zOt`;K!6+Ps2p}(oE3@+yAk=7xzSKGq7|tT?&qmiB0HPHp%pA!~;E)aZxbHVGy_6UX z0KgIqM|WL}X&m;(&YWiOx5d8w&&I?ly!K$8r}~e@x{aIS);Hc1kHK6!CN{+Wy=UU- z$6tufz7?_l@?ETXZi>E}*2Ft^OcQ={Bn}@x8jn4{C&rm2_7d3zNt|XZ2fTtxR3;kv z^m?6KlO79g(2jB3?uVJZec^Av6d$Phx3TrQ>!C@OPLH1^>dRElJ|+AaX6Vws%E~Nt z+H0-N%z$bC1VIg^aP+WH6@+?}L!Dz3kP2^|!L+J0=21=vT3~eZzCyu5jg{=IHUs}t zhDW=(jwroV_vYFHDWSOOgICg#4dtOIFwOP{o$sj;ZVfRt-Gbtx6$Aw@XOr}2GAi?{ zc$R&)vMrsUyu_UE>`vE|gh8<`(-YQu!oIOc7IV`R(SW1Mp*<&K&r7G{9dF&4`RCb# z*nj2_TZNiq^JN?3(7u!P1}<*| zhN|$%8IcNgKFw~~YV)9Fp}bnE0M^FmYRvEBkmzRY^$RY}ISg~ur@dEk#qtnXaTDwO~&m1>(Z zt&*iYFaPIwD37&YN=2C{za@_mFfZC#3IHa{r!T2QfD>L}_BSUGv^(n}UAA64R389G zz3X%7Jipqw}ZKA@0UoIGdZR5SNM;KBgpuyJRdl^l7zw+sf1y+*n^SNsP z;>z-1Y0-ngXhl=bQ&Q}l?9d{lvb+k?QZQ0}mHAn!90nx&GliGuD8sk=NUO}RE zr(mkiLRG#RIY#c;mtT&3dtQzoefPcbWAA)#^selUrKv7FImc7*sB{@0wg#`+X`Fzh z!x_xBI!V>j2d%W(0a2W5iUp-f;Q|CRY$K4dgN779GDS}$am~uB0i{X>%I|t-y2h*k zt)pDMQ?u`&Bg>N3RT7JbHbLSEQqY8D!u4YZsMO}heJvV>cGPi9Wl)DP_u0x`9Get^ z(u7wxvl|8{vr@)DWt`FF%uac38RT^a+vqO*F4}{H{+mDltGMH?+wfxTh<$s{#>oqq zE}8vbz4q>yBfQ)&X3JG8SERyl@WipW>dKoiK@-=Q?PCA-Cq5Vh#}CH0AATf0uxcG4 z2hYd0^=n}2+oG`VPPuIkM{MgUNxpRjx<5C`;rv@N#Ut>M=V8D18 zZ*f?1Mm-k?PM(OD4jhQCwjKEXTW`BNPU8S{_Uy5k#EWzkM;V3q zGtYcCwh|Pe9mlU>)-2CoJi+=TbPR1Yw-CqzdYwcVHB$b>@E+QQkV4t-KghZ*agUp! z^>Mb)XnB}Hk0pI#D)GRanKpY$AAO8adewUX&oL% z$W9Cr5^n?tJUIwsk0Dv(y0wZRbzHj8k7w`m&{=a_bJZ=-csUkM=Sf3#&ah4F{MmDH z2%NOF)W<2zzARQCUWStFTW7K_wi4~Cw}ka z(YlUxO~Ox(F$0ws%lceKDEtI~QV8<#0~hG$J-^&!SUYn8JlsmXGkInzU_618c$fcj z9Gb_x{y}PdIBDQvl}RR{T8Ki|KGok`RsN?Q_RG|_2PHI47RS9$P#<;t>o znx7V6xxNz`#@-ZyvBp8lQ;ieOoaQ*n$;vzr((M=q`PO9E4x!jdY9y}5=%C|qK`uyV zyhb`x=EG~sE@l9-QYLkf#wIEdYG9lq)v0|gi}c9=QaC`8AWQJ88banLFTW``>zFCo zZzA0`DJ*S>!o3|PW!n;`+$d;;ryjvsC$r<7tV?%y)2Ml-X_e>I*`tNJ9*Wpa9N9(_ z%P=Gk1(`7*^)s4>5vD-1Qw1I5x~6LS6zmD1Wg`#-8USSQ3UFyoq3f*OU=J!2uHgt5 z%Lks_RH( zq7*;?Bzs-lHOGM`Uyh&o=xCQ6E@c=T`%ln4Qmq9)|bD0Up)HI_u`J*ZX%G(1$??6omCS zkcb_XHHDhgN{7O1DUDA%Ng+_Ys(D48d@hk9T$^E(ZQwc;IMc$gi}@SILs<$->073d zUg4ziG#mwT+WV-ZwPLA|o+f!;6f0?y{L+j9VRd_40{3$lI^yf!elR}wna{>OKlV28 z7xcwUoE<&@j92CNIo8`IXGf!l8Quu%Z)Z88?WP-=W9ZWPxblh{;vIKgAHV;Hzlmec z8&Gg&cuoYLzU~~?OEY8COM4KkvpB-M@5g>JF28Ii0$-qW19iYJ*=Bx5|d-# zM!y4u8GSL%I`{(hw!$ykS(C1RyFqVmUM8b;NmJOZ?bVap?$VTP6s4tS_)`Ifj?)6jqlh%>Gjd*`y0- zpo~MUKBfOXX~uCp!#TLEMoFSSU)=k2rt@C@R`tNw1TQnsxV8}0^vpz@#>r?$&uZY5 z?&@P`^b(e{xt!Hb&rHXc)F;q=T>O9MmXUXp? zwOM1{(yrIiT0oXv%6E+U&N_-jvoQHJRu|+;$q0-jlNI{Ca4X;{U-PMBGr!ZC1R@JG zHRF+Y4CkCMWktNR4~nJIT)spG@l&A6B4HEu96y$Ap7Qv$|Me=$h41Ccw`S?gZ@Ct zqi|Aq~VeVwoyr3V+3DQ-<6kdfyK>~dx9Vjq0lN!9k zGCZ2ib(ZGOSvYPnHih60Tbb)kF!OH zv10U`B^W?2GsiFd)o0`By@%qb-uv@x`{++xEMxt+hwT;a?VThB>mf|17YKm=^FMKQ zES)C*hKA0# zf)i|h=KUXt14mzor=BD{A~+d@h9`*$>^RKP4xZaPRwDQ};f#aw7Sqr;$Ar~SAQWGY z0Rkor0?)!y1LZ<{?)kLOmmq_y*cLGV8}y$q z{FTe0rs7otp30UYws;YPc3^ZMRuK4I1zN%C(!xAu*%r#tN5VM9uIHX3-KnQ$;=7MN z9{=&*|9o`d3^aP0e9)MEm}bmm`a;DYbd>AdR4f*9Cd!?>M_8p{{R&JfYj8P?S3ht` zvkE5YwMfFuXQDF4Rvek5T3_MKlBawuV{6lV`85TQO5TT1@@v8aPjsTiyOM_&)Mr{D zc5HaB|AD($^o2>_eaHB*9P2K^EOSsTnRsFU6jN~dtfn(Zf}1zOQ7-GU1Y0ERmMz`* zzf6u^OUbixU*D`F0-b3@nADQZOLY1L20<%?)We|l$0>H%>R|#d^V0waabp7rruEZm zX}R`kM}ZhjY%K_389SOCK(j132bfG2`I&fhpftn4b*O`eNg)xGw3emt zfOOFzOTVO2V_tiePeZV|aNWCh8JqhZq}G@%$xjPQp-#UEk3j)y)M(U7oN*47ncM(E zY~R7tagteJ9qY{f4?GzA4(yGU+c{2&ndSa{PsMUho2W-qA2@fKc5_HHd))NM#em8B z%Q%8Sllda%HXKMea_ig(u}E2S>c0rHLjylQIE40ngw#th&bEvO6fjyqSujV!o@u(& zYquSxW<}R3+TDOjlBEF{hBJenx}S9BrBy}R%dx}%T4t>VJ%Y%g?*IPtaqr!Cp(I@b-qtutWSZT7|005_H~#D^e@kEh z%#a9(vx7KtA>a+DF*7yH_?(QLTX&(fj$cM@!% zZ|%-#$Ltzx zD;cU!9x2Vx8QeES*D?;oX8X#T6)R)^u~*~Zk-Z!a!Ko*pK~xxMqN&m2=iqNMA^s%8saJvS-9v^}FnxXI1xlg^REB>@ysmT9f9uN?Q^z0}IH* z5*efwk*N*wOs`HgV3|}3HqEGXrVWBbDZ4aX1d}|?#MW14t=#ZjAzfr3$RMAl;?z{= zAWgyvzKvId$xSbwLH9^}a)~#Z=#B^kec(Qdc=v9}o zegq@Th&I+y=%yf;`h`=CQdnx(SPu7(c@D-sj9dPBwt!5{&BWe={V}9T3dXR2z?g;k zXfo+&C!83}zY&i=33_DU3=vPb*GY@Lms4=Z+38Urtb0=3AZ+gsr%Lb!vvvcmIqkD%)A+Rdk{V+F0jXsb-x;z z{h>ogV|mY3LJ*##-Ce0TynN&sbTF0sd54al0Hza(1I>m8`k$CP9H099D+sVre2iL9 zWEQbJp|mz5Oc?Xc2n#)A6);QSWS+W4SfBIgEi@#Yi2CBd!9DRDGtLS2CHB^~#_iYL z75_YbF^--(5$8A~vzxfC8~QGz|CV9FT0kJJWltp=`@wf}TVHgp-WYWqP4UnZk3dV~ z_$9PphF7s+X@R2%6JcPh7f;lt+R+TqZ(x3v#_0=Fcm!i|WqXKYu?D(#-MP7A6=vbh z%xv+d1^&h*9d%fbqmCz+MIE;55P9773RzRP1JX(Z~iAkYLVt>8#_%61avjrDnzo0JROqw0_dg!v!^g!eqNkyh@Y z&BOraem^k^egKqISt{x29L;|MTB6=ikHGVhdjcuTnWJl=i7OhXJSGvzKnCTxouUCI zIft-LQ=-TR4!r=~4{4J{zWGIUu1_(5OT)_3ga;5)=uoGQG45rA@397grcPq2s$AYN z?dM0+nLi9{HvvrckIjXW!F3fx&I8T3r! zRVjn~mZu4N2EoM`f#_8-XeoaNxhE;*@CV*X@O5y=K-Wp6d*iaG#}sNro-*@ca6%w8 zv>61_ry7=pf@eA$jS*&SXgpp#a4eoBF6bo&?hGbZ*A18O0yMR&8VxXa8HsB%&Wf51 zRsh(I%pNrX8@0riPqVHyhrn!uSzYAFCeI+ee*4CF{?$V{v(hZt2s0d<9AZEqELdNh zow!tCq?FshUeA`5;8E+s3_=zr1S6W~jKbVt&Jebq1(_D~B@NWoV{YTA_%z=lgQ5Yi z=X&U75g}XGFdxf+^B89>KKuM%U^;Hb$z^ry+_E)pyZyGf{OT(?4opFBFb7R!&=hn* z_cPu~|10HgSxGwWZ&Ct~zM zU2NUB6Vv7jECc&v{cWq_G&4p$mTNKBj$*E!J$WAU>?DE(0lGNC@&s{unQgs_NxmNQ z>BPi^Gy@A$hwIbeKx$~9@1=c}Ko!q%`eJ0_9P~?nFla}|r!cinW?NkwbEfY0lRSVP zxMf;x2GY=ifG1kgHuz@c8wWJjdKVb)lLOI;+1Q}xk3EL+1JW)Ijk1opCsuRrWDi2K zuAb9pL(4zzg4)`fSQHoW<^Lph|S~VQ!(%k|xFlTD6i7O!Mc_y!Q=2&9NLi2og zJ6rD2%mI-lD>QNp78QWFU=XUCFH}Y=q;u=` zk#PC>8q8#{L@OxOP@k%a3|At{%lC;KfTOZ>Hn3O_nPWadA`P9a^N%%HmX2)SrXdd{)S( zjnDl%V0PY_C24fs7k-;qXbQoHfjrkNL9ABfYzsxqNlbiKaHi9cpaD5byam$r|K}%J<~Hxi#$w_fDuT*pn#BIVOhp;$qU(9UY3pUAF?e=mW}O&u>b=@ z7--hO42>@HQ5kLYUsl5crNPMbb@;f^-bkC!%WOVgtp9la(?#i%$ zk=lgOmU+Au8lOS~S96{;FWF_WV-KcMXB|9iLTvZY_ORWd_rwlc6EF#Hlj!@>-MDvS zG`{d-yK$a#J*#0FN~mdp0C8Pdc|wegfeCUOlyDcE5(}G_Dar^0yMZ9$pG?v{mPK%c zSb&4#rr*UK56~{cro&QVFAGv=tNrtpCS0<%LqDjKCV6=SEKvC2U8dZK#_r$dW(Q;1 ziBBDEV$=R~y!72K#_J>3NlHEzufP9i@%`~v@cAL6DBO_icbw~o@I9{}7#$*Q;Tu=3 zqHWT5`hEQ5xp?Kq%WTP7ift?jY|KeUSi<@tW3-(=`|sH==1)BLm1AI38Ewe;3|v}9 zlXNLo#vyEt;&v;PjJh77M}5YvX&K}}Umnc78mG^_NM6;Kh=_h81y^%250PJWlH}y= z_|cm%-M8XTo!~@}5fTn8!|-c}cAh5+wiU+TOfs!o(#tD6Kc*Zf#vF zW>ieQL=v~Ly`vK|^e(w=7pJemxF3xc80QX0m{r02gX8PAF`H`Z*dzdG17B+7^oIFqik2PkQ~SA za;KAA&CHj$yM}nMR%{{PTz9>AnPF#LRG+oj1946|407^>ZL^N-hjmepw8OqL`m{{>r1K{| z%;p`DYn1D0JpFk2`VnWAse$Jyz?f&QfpIVu@_lA z?|vvVkZtA^G9VEqkCX8>?Yme-RKU!5byhPPCf$D%*2%y#Qa$)27Na{bXq08SB!5iUkWhdk^yObXp;x9I5e`o!#uGH znoA4!(MmU?8($|OS8@B=>lkCE()^s;(&&K7geM>wvAnmSMs3hd0|Em3I}uJ?8`6WJ zv9UNg$XaY|gDIJ#y99o*1BxU5U;@me0;8z|8?o=MV@;{5-6qj|JFpaf3>IsXq)uj{ z_N=zKhUI0R;3U`bE_JNTPDCHEC+DAhEPnmvmpQEasrbRa^Lh4#cEl#J30ov47H2hm znsKZa+9Do8ZT5wK>53>1^YmWAOtY(uOnNQNE!H%sV3xHsXzN?fr_dE=!E`<_F7EkV zEH5txK^=)lKF6P?Q&+QXI5(PMW!iq#vTE4qLSY^Ng5M+P0 z@>#C?-Fwmn`supcP&nXLvLO1S(3+`3DXVfO(g+*Zn(!*u%2;)sKmr|dzNABhuvyCQ z*&1*ACB(kGRgm5<5(9lZ)Wau$OK0Tx0y;T9)oH$hM}o`%+FobXT(Ek|A(mvlg~9kd z6D4r6F&S_{cn2aw5#Ua~?YdB$6o$_P6|lQdOIiCRA(F+Eh2lcp!nSMxr1dzNN*yjl zA*dPHP383*sbmL5o*Yw-6=DHWD;R9xW5}&BtZ{lvJpx&xMy~;ME6hoAnj6k7D-SA% zJj<4u2>QMS;i&@F#ZfOYb+VW|;8f${6{v!XYpLBbt`!J@{PuMwU z9?hl(nh>Qu5kjO)!H2ds2;OK!qCWfR(@6M4JVIDRJQMP-vmIo3d@TA2&!=Q8LJXT* z2=sY48%IfXrdihmc=czs0H0hq&hkDo+m8D?WstHOiQgW56S)C-;*rS}>=l4UrepSq zx|E6LzDDQM&Hyv#I|(+77qu1?tBKjUVFEl_3H)e53xy!{AB(F5di?eu{9*jyXTL96 z2JrVSvwx2xo@9=WIR!h~rnw>n@C%xpFz`zxcOFWU(4!!^4;r>tmK+u1?Oi z>_#hDCJOb$!5$KzKNszsDSGwJRq%vpO?=HVbu(6(u5Xv zTRVG>*B404J`wAQ@9fV+IH)67=)oPdbkgFbWtNiQ@!pLqjK_VtUICX_Us@h+4L!(UAQ^=7taZcuw6`Z0upn*4C(fQHfk`8N zT@t+`6xfD-PX>dwOzKQw3T)L*8^uMeK7*Vd)!11VUwQ477&v-3PMjTxzT<53Awql= zis}%HIOcY4dDeuC9r?Wi;O<`ycEtAaGuY591rnKJrl93}&WPp-)sly*h zgA}5~0957%dQTaZH4&}UT;9btnPdKev(kGTun(^P)Lt2vG)Unkdq6pV{KiL=Dv{bx z{N|rGXmJO^@6g;EX6N0OQA{!WgSAs2lbJ9yeTrzQ<OdJkjEzdA(NvieqW>|UWvsbqN&2p~=`%X=1+yB8 zz6JZL$t?*c^~f+~&e`8YzS4JE%SEPqFev&fA*ioi!Xgg{Ntbg_mIA{-$S6#CPyazG=`_xTL%MU*MFw=2-{Cuh)Sc+ zFmc>iXb7`JNAdyUZEjSvnP>vf@Ol6!GO9J@!sBzbKoe*9D@+J925rOaJ4z}Kmx0klkr759B@;`>=d%dKY&2hgDA@E!fZpZ;0AcjaRI$Y*~b4wJ2@ z|HyFwPDCzeLb@+DU;oZRvhvjYoljR&!pRYc2P{L8Eq_^B%tt2h;GT)ME#(#f*Nz#d zG*O$5(yc4{iyXgJ3is0bO6v;Gfoup`GM#c=AJ-N^P1mnn&&6Gh$~ZhS9H0M*FUHmB zQIecbAgG)`K--O31g0KLj$2#RT%V1H=2^w0w?%-A+nkmO`1&)(`743+H}bF+-osAd9n5IpO_xh8Q?q0)TBAftI=YlHoj%)gd1 zP2How%R`(u@y9H!-KWe3$qrhRR-{kPIRzK(v~w>pPtzf|k~AslRG}Z@sY086+-7{X z4$gV^M;fWnl>2Gt3FP4=UCTNdw=h`6?5pp$8*}j3$bDe90*q^cu@ST|br`6@kcnJe zX+Y@N!>zz(6xLlEC&WA;-QIY-b?p|>uygTqKld}ygui=5t(^I>FXhj+S?P3GCZWER z^I)f#7qv+-)=}$&RCsemAg-}K3k-@v#T+JVxS3!o&j=ssMhe9;XK7{D2Xms*J?1@? zi4WnUwg(fl6!nSeg53_d;?)H0pG-DgVs^~-_Uo12m!;|rpD5!K$5JPva58=uB`-(k zoXCIDq|A5WAZ@k}DtemP3qRzJ_1g%1!*NK2#-nj_MZ7G>w(h>iMpJW1cJ_U55{o$z(KM|LWIc_p7hOC!T*cp8l@yjL-hq-^`Oi ze)muQFn+uD<@nK`_;EC-s|3@G5MZ%KV9qYlbW0>hKr&94IR>Oh`Y+lDL)j)%>>!vU zwL%yW8pbACx{RT@v7LQxQ)G}qvpjejm~X^1=K^}lgU2(?@c95+Kk6YGdpqonoFYsf zb7L(M_$EX_fyEi2c@Uiei|xSP_GB7f;x_?>yuo++Ls>eL#j=2lNa08Z>#AUm3bHac z)FD6f3|1TQ9K}r-)8-QU?jX3WEeGP+voFNEmtKkg=70ECaf;)q9((FceDc}zY;_oj z2IkP@+PVgulW)Dm6Xqy8&O6AJeao)fccoQu0AlKb*FP`*8SrL6j}d_Ho zI)niqVnyzU0~xmz>p>)$NUlTb){Ix*+7v6-Zp6Ktx1+tI10sp}`{ zZDitU!{65uL&FcFzoQdIw?&eGIU<}nYjI!RZ?2JgE8U5%>TUvJCgaZN-PAJGY)7ulyfi%`%BldI=AtvLjNM*Ns<;JUFAY*k__hos)X8m(R{FkJ(o za@!c~uMpJc`MaA4f+jj>!eqM(?A2g%>UkIbWh;Y1kBb^VYy)l)tR~VEz{2`bxa1aN zHx^+9p~S30J6e?JfmkF?WY#n^&w^PlGVik%=$j^R@uQE#4sYMVyiEV}`}SbkRlr$9 z(_RAZuE9nuELx>D*ebQjd7+Mbk+gqXXyOCMPQ)+#;=e?=Sc#wiul{i~ASi6pCqjFe zL;7o~@NC+>6AFS+J?+FR0Y{n<=2=3{6F z6&1$nT}oLU^%dMk^X7ZDLdAtLWT}K_p{2IwGB0$=GEn@ySm{&gwLG8*0SY2M>#9s|>EpC0Zn4VJ*5&nIoR!abU(ZXk=EMh;F@B>|!@3sxw{e z#6rR*c;|7=ZAuYt1xdkC2y@-&I*&QZ>^OYSX`vB6l^;9cRf(BQ%8*)wZML1V56Jpyi3w9U^wbLXdl@a9+fI1A znpA);6f+SyDb>KQfl%9~10;0TS6O+nUu=DH24cnHCg1B*WYg(dtBv3N`k%-D^}8>} zm+)i!wf_lLL9H0EG<5M~IYLvTLw z1rhL*{ZMq@}X$cJghRl1ylv!h*0cFD1Od^`J z6gp%!zKirltD&#dLsz*{q<+U>7Aeb!L%T5hDi(hFLdh_*x;z9Cgv9tWOZBEqpiz+II~og$h#_s+JK2wsc2` zAC8wfcTbr0wGnw*hz2(ti-YB5vVtn+-bhJ>hr};5Q|nhiT*PbS#c5EPC=Y*I! z7}+{-8@_cT#)t04>7&PD3KR3<)C|mY9^rt%Cjz>zBBb2I9N3D#(EX3!U`xlDQztPY z?!>K|LtHzQ+kslpDtC4fF3`#qX3fE>kk&w?bKQP2j0K`j7hwps2q76522uC4Blj;> zrE8^(MMj(3FX+3`(OqaeuAgNXTRRM`jes!csI#41t-x@DZ7f@8qcWp&r_bVRAI3NP zcAPx<2r#8Cm~{im6&}z_Yi5ZySI8;L)eq8q&qyV0`EV^|+mD9xIN7!~_ft^r@ATc>oD* zAh@t^)jh&qOR{&0GjI+#ac!J1ovDK5j*B>0kGZYCc2 zuAp^m=w7^V`Xux39_y{lFWsgVk9En@jFu5*00Y`Tf&nlzvVWcf-8Ji*|9F1pVH|t( z9MQ(l#J?f`^4T+|rG0b zU|iOqHCZ2jJmcC*W|-@&bVnLnz*@#(J@(fzxt6$^v_jl2Oq~06pPLG+{-{`$wxKh? zj9)5{PdOex1E_9R=pR)e^%?_rKW&}glEyxlUR*-T)rLCkeJ3j$xh*>yportN7K67cK@cbyz3 z%xpkP#SPgp$IJsf?BW7VsGrZYy-xomqD3pl!A(S66BRbO37oWc)kvb1*C`O1a7z2Yp9B+`z^0)us%kj~n`|$&x{~PhS&wVcLJ$w)k zE?tQ){oe1y`?q$Q39O`Qaa--0{Wc{!HzQioC64hL{CC(a`$!;Bg`!f!FY$F zpW~5QNfvJcYtQE#qn#?EUHb>mkxd1&EK=>zy=yG;^*Hm`^8_iiBk^L+g{YYHyk0_# z=4X`S4qB&sKdaQhL~G`OnLvBNgo%bz-^g)dz(rGzk{Mo{oCKGqFK2fT0gawg2lK_{ zs$Df>u2CJMN#^5L8^~7H?Xh4InSn#cVrF_gacC1k;N5qxlRSJo&K_fb+{wPEL37za zI(J)%%@tf>PIKjmbzBiKSQjN%Cu39FN@DEYa*wBzunQ|K2=j0zy0#p(4>~4 z7ftgZ(aI9oH!oj|Q=DFM_OZd}#qXt=_LqPA_v0>G5t^HKV+>Qh!lb!w%ejxG&#nc< zQ`fSBp1FFrz#)%Kv)^^}p{@?IA3Zm9o~CgHKE=OU_UwAVK?4>Ba}~?D%+e+4lzO0q z6D&jE6>XG&7xM7nU)1;a!uc2DjrU%QH{Sa5=G5*g z5*LM?K|dxKA7wr>vK3hMF@IHP!V`-VF-tND@v9~S^JX)-$l<{waT`tbU;oOl#@SQn z;`sST*{g|#fpVg2`s(5Z=<%N(sm6ns#k6qvbpO%`C8*R_u?AC@ajVVbBmYO&F;u+K5o_ zo$}?_n0+FRR^gnaltPgJQ9!Q0REMd{-c()^O97x(kpUCll2F=j%BF@Xi_}BhwJbV0+`1$|#zr=L26+ik@UyR>>`8VQ!e(NG9SS)eG(vf6V z?mRJ&L?4DQRWnyJ77oHgMxyUT7-;fngxD$JPEHPSEZS5I;6FM{f_2lR%@awuNF<|z z(7^)-qLW2>{n}eGH_tIq!1OGp&(`(>5C=AKH-bY*6k8-Rn42BO^v51S2`o%8wJm0L zJ+q)dfPqC7Ccfp}r8MX2+mW&4#(%V#8nl`%v_JiOq7Oje$2pS#XcbWq;g35COPYu< z80J1RLVr`*-q;$;fDkvCZ=m%&9J@^$1QW#qg!Kjduj}!VkDLN#c)pPALEL0mDFjlV zi!)Kz7C`sJ7Un&3hRW0xO`YS!FQBnctd)$_9?e0Uedk$MozH6u)U2-=D62%e%BV{2 z$~<>qW&k@*96OE=w4M=f#QllM7(Lh>XE-v-Q-3;|IVtAq6|yI7M=wbQI{EAF?2dbw z@(&;YboiaXmphz(F*Wl(f*-3J<|1=&X{EI!J0|NEL8S=X;v+K%?pQ__1R9vv3EGl) z7NS{M*On;^v zj>X{V=Q#6|JjD~2!55RVx3FIm!4CMl&P}W?t=J>e&L-Qis?bdJjXPG?_9l3pu;G7G zYTDo~LIO$8&<3Z_yqnS_zeZN1+M0Ftigv~^TpBw&2#}clw^+NnjC?UP=mL?%XsjM8 z;0U^ytNxCb7$K^C8cotbJGZ4AhG8mzk6=Yuh4E*UH{&$h);5AvH$KfS1f^-1>A(Gr z-;DqK*ndpm9+m@5>-06_On{dY?o^lkjS6}QGK{w>ag(`W4nFVQJc@D!h(P<{ss_Z7be1iIl$FFJ8XqACEsZQ;0tt9e92t>EYLJ7 zI4KrW8%sb!9GN!;fHZH%dG{}qpWAnSa!L4*!{xUkwNNcDKno-a6M!5^wDNjsNHt&o zk<45(sTyqdalcQHGWZw(|CfJ_X{{!H_CNYh;@IiKv5sk_ zaiA|2Cg$Se?Q1czIvt<;)Tc=gcPlP_aG4GIgYiS3`|pXT17m?%Y7&(2h*K>P;PtH~a(NPo2qQXvAfLLJq zgOLm#BoL&hlZeKgec6Ka`9nw{<`O=Ll|ccV{b@;NT=a13;op|Ask477Z zW6#a5u(%L3tjizjNFNG>*p?+);+{Awsu|3a)(yU7gr5Qmi!2Wn7rxmi`i`I`*5p%E zkk4>Mi5F#znoG2#X(J^Z9n^d1$#Zey=+SuR=7m_PLNmc!cj%D=85GkCGrY&vi#giW z44B)L81o_#sBZ6RCtFPuCU&>pw8KDm-C_c)a}n{syb^13jDB~#{z6UZ=lN(9ob4!ZU;DfQ2t%;IpposT=RcsZ&+)u@}BS zUVrWP(+W`sV{DKxP%d8-c1$b#jLU1z0jrU<20kMkRTH3Ajd0;9AWbCJXlGlAf1QU< zP#1@t4_}PwvHLJ9tU_$xs4=h##_D#DOrDVx*C0h0F=k!Yz57Si#GThXw46S>Ki8uR zo2F-o;B998VV%Gt&;--%N0NRGb` zx3ty(C+idRkffxa?iQ#-(5kg1j$0;w!12TrR}?~&5BkeG-k%LhdXI@u#$p5Cey7l3 zYjZ7@m-iEEN*k5p*|BoZ@|HQ1BsQ^oCDhLTH=z)XcecE=2TkEb>>=? zw}4L~9c5g}>8|7Zhx{Vjhmx?)llgOlcoslHD+w47%Rb5U^bg?nw=O!G=uCx$`Q&~> zh=dx6&g?4f+W0KAg@`bV=7xp7(T2=XV&ckUGVBN%?k+wBWm=_DOBuHA zKxD-EVlaN9IOSP%G*l+m&(@WwS;oM(O1~2^_-@3n{d9c7Ngt^UGadV>Ve<^wsF}|N z-oQe4k}R*3&rnMnjulg-b)?CV5BAmXZhth8MmeUO8ET#SunN*yml%zKgM|kX^i&bX zvP$G@Gs4H*waf9FzxHeK`rXm^p-+D?o_z64Y;v;1Hhv>kEBm~TlY{fw_`O#-6OhIC z!XX%dZpAfZ9BKT zoY@S((X7RHx5o(o6&T9>k^5w5=^%qiUz*h1W@5sJPEvgx8aNWuGZS(B9(g|5no(Wd zhU~*4@_$6Mg!mgfmH>5ADI zlDQ)or9^Jc;E8xFf~aM?hK!c=00TFk+onQ@K4Wpn85hsYgjEmo5$}v9Rd5rx{E>k) zgFq4paT7}&eW5KFTRUk7Q6Zul-}aeDj>Ib${*oXbQmc`O`^D2s9O*{(Crsy65dR(g zXw&SE?IOzBeT!;fi{L;?LX2StQ{wu%$V~s~8(@GbU>$)G*yj>72LYu&nlWW2DS%Q> z0+uK9rIanw3vBwC?)uS;>CGf?6f=qZDvUIr$qJI{l>7Woh*F<4WR%G6$FNeI zJ4CM%k))naZ&VJa?-Korf{gFEq=}14lT;r;ApI zRG#>N^FHt4)_A~H5F=Nici^OZj-5vdr;IcA#oA8?A`1IZ$nw}OpX^}ePUMr)Jjylk=QeGh(&!*Tgkb-|b+^Z9xM!rJoQo9p3_L#jIcM^)7B!FjwN?Y0uFY;Na8a?zS(L@QF_Dr2f<4cYf17y)|b+|6?%EeoK->e0E)HJe zh@Y}&{LA-pYyZCVlneR0-zHzIt32)V;0N{P9A+J*0#K0`>xgSffAa~Io|H;+edax` zTVE=CjEe=Gb$%#Ra<8@l2XblE%B_(%-}%k!ESkK;f9SwI6Qyw%ITa?bU}&z5dWpn7 z0BlNzWrbye3P{p~N#%CJXB>bFOHCl<6`t2bRIM7ueeeOs>a(R=_Q}t-F9*-b;Y3zi1RzpjKRv#sal` zR`c8ip)+8Jeo6TB(d=w-HY0U=&ZUUKuboX|qKVNAM6D3Q9gu$;Ki~BW@5L>&%NEZ6 zJ3$tfk3IiP?BIW3g^@Oj$(<&c14*{8zb(G&#ZSb`fBNP4%Xi+vm-(G>X5duZx_u`) z(eT<~BI9%T=W5$f4EWB`B8^DCnG;hywd2f{+cM1FlZP48wVmB{{8UphN+jjX9NA*H z<{qc3*Qb!68##4EAL>qwO+G-&NJDSU0iAXdqxxlDk`wmu?Yxk@U&76LF%9yyT&V}c|J zBOH-5gI{Q%uP-Hg4+$69laZxO#CelMfEQGvPuzJ-ZHe#Bw+C&zrC{(NhbPZI#J`2V z2>+1BNqyt;I(^vUWR&OFv)B}Cb8Gm?&;Z1dRIVUQ0Ld04Fh*Z1kkwv>-l1--y^Yha59sJf0W9-3A0>D<2N!8+~v~NsPo?U5Od}WBv zL4^u~-mZv|ZD_LYQXhRHo>o z75R(~t@7Z0Reah1?uxN;Ui8kwY9=mpVJjC`<1)OwL>JL1Rb1<_90VsPBng8+1pquK zP%&VUUcr0~eY$4&xihYVNkPQQbL%g|-C z0JUHP7V;U#VY~cGhHJZADP}v(k@QmYDQ#KK{yP?m*?XRo2@6`<1fgu%GA1mb+Ylj` zJ>@g$GMbpMP(ZMMPC%Jt>nr!H$}<+Pef>?Cz;@if{vOG(C*#uOL>w7-JkFjTj4I4J z_us!5vuF}eee(JEwcq*Gc;#I-r{m9il#?UAdGYo5^4EVaP98c6Q9m5#IB?g)d9U5Q z6o-yJ9>C&FL zoQ0(ca|1i`27Wp-1-XVQFH_{H%_gDrL7s7Kh~w9*aV_`n~yAGsTcn`}^TGsLo(6#%vzdr@}?${lt_?x)sS1~%T=G+JuulT1` zr7#`t3#0N&J3QbY&-wv0FLg*Hc%pY%d@E)<1ZFP5QDg z+CqI)n(i>XRq2}-lFKAsecRY5mF2Q*S&ODItCf>=6jvn~)cIVC_KlnZFTd_G7K%iDqwOeFI$Udc@M2c=(d9m&*% zmxBiYYHQi3q7M(tusn0p#xX$gT}goYvp#`Pklm2@oUAO$Gn9w+@Mo+gr5qmjGHv!bO>-v7PMIytMyYUf5}9%UakRP8K&BYucD)JO+rfj!bgVdcqE4z zWR&W&d)(IIFW>rR4C3TpAd2qJ*mQjS{6OZjtY$&I^_Q>2Gavb6eC>)`IlDi}ph_ zBV*oJ!Y4YtNYw5k{?h~T#HmyGS!Xa&O(g+3NQ7eMyJgNKdgk!dw4#q$oEBds;+Ztv zIRQ_q*r&QnzRng*;?rb9TH`1vvo9$`)Ucs{oG9hn5AJcG?`@6_`%bo=uxC$mGv>6! zBl>T|o^vaHivJ8Y+jE?1>6)^Hi;=H2`p)S?u8!?_@cYW#kx$; z#~8xclaHQ=XC6OA+qfMVW16cOi(axk!xK2U-Dhs{Ay$TI%2jF>p|EhVFDnz z&a2sck6`lln|~hX&OJ*G<%2Lo&b*wR0AbK7c*evCrm&M}uPztC)jYD2VugDJv4sWF zLBgyWz-z5eF1y|%2$uMKtFVa3_&i5*6*qzFH%-0vfpHlyB#hi<<0(!WuT1ib@s{`->0SttqFh8y-a2~t6+eYpYE6@Rh7dQI|+%Y(7 zl(n$HJ^RAPz$ zbEDF_y-<@ZjEn!$K*piVEonXQl|jg`9iKR=TP+0z2kO1N?nwNj9Ba)W4dHKjuS-LU zmMEZnS)Y_&+PF`Xe3W*nj`w_U|8x27^>4i>M_KF1{}iWHzS^qo^O-u5k@LO4x{TL0 zxM^w1Iwn8+SL)NPK$jAq{ow6vn}1*i@F>sjKfs$HrQy6z<)tc_Me*wuKZTWBnSMr@ zsZu9b0JzL25kD6_OGFJ6VyQ-E>uwx&6SPEJLM$?>p4pBWK%BJPs7fC+-`HD7UYWEU z97Kn@Gs2T0Z=1w(CD)lj7eK0a>t4hYowgUrm(gshxHcWRC;!di-GDTEs zkhGWeST|#IQoL?)7j`0npJ`u$DM3l|gMIdz3{;Z?cvAM1GG6*3Bjzb8bMfp&D+_UX zej+BT2;Kmm=Z+j_8%TH5k!1bSSAK`=Dl_rLmtKsiU!RQcdG_ge?+y`;JxAiXbB~kE z;0{E-H=cX)yJ2EGoX7VL$;Q8#NZoxvp9~1DX+k)&a_k2^Ped^6zN5{fhk8ki#@r!!c2Byf+#{x8~x77tX|A{laG<^dzNctj?x5vmiRkCUL{*hCTlTq{~mdV*=oV!GdL*MFYwbp?`&q8L1s|k)G8JqYF!*#ZcItZL7JE*&i@{ft0zX)o z=lx0TmoZRFewSAJT(S&{ecP)rXxq*T^4(8>n|`~tN}Cn@%TXrH_8DK5cgD>($72sO zBO6yTa@+EB)Drf}x%OpQ7^V%tXjs_-Mjq{C>a@3<|7AFSDh+^?EHb4O%PVatYzPRY zOz@0>+92;t6kn4Gd5SotbCS5keHISoy#|i(48Y>MT2E`Xr$(r0hBC0A`x%82=sK+)TZY@u(-{y540*e6Y~(h7Iyr3uA)>~}sZr~nSc13XJO02P2r z!_;pk6wPV`;^n4(pAmA_uYlzf1`cc|v!-uc(a)(*z$z*e>sFLHwlL^N>m&Hb)8Lf~ zYfY}wB=YRV@BY@8;+gN^U|=3x;S`0hvOn!RKK}W5_OY|^+FM_V+oKQS83;fFeP2Qv zf8oiO;;qZIapmrX)DR_9E*=SxL|NaWbL`~1y`h)LRL$WYtEDebTtGg}_6oEregKe% z=k0sGG#fHl#hF^NjVM)a#SDMsx~*YDdO#4V#)Ue+I!iW|MNF;uQ}J~gkl-BIFBut- zVG$$f7;DXz1&`i3(Ak6et~sXh)oft4ou1u5vpbmcxC|jb+=s@w)=I*J5%6adjcYKD z^!Aeia1yPR{csQ=`@aM8F()mPm-8nvGsBEpg0C8c7OivEQIDUut&x3hk_yYC&8Ugi z;$vN43r9UUX`^lNVZm^upOolAIFa3R_Fmv~MO3dsMw1oBT92t4*X-EwO1hK&BKNcUxl$IXg zBR*CbWhF>PKz@sMvUX|6GKt@`%4+3R=&IC{>T=$TYpvW9Qa4Fa z81gp%3f&bCxXCZ2sMqgKYhKS!rF_EJvWY!HA}2q213k(o7{q=X+}p3KQqCI1Q^#gG z*M&iHzU*7BU*_2PFG_}O`R9KbCN%>4^ux)JT<<<_$|kcvSh=*o!FtaHu4ysB!FBUy zmd?;g%4ZCbwey_iOdGeG!4^q_xKXq$i)cD%V6{;VwE|2Bn%^WYc!5||Je_wfU!o6< zv{iE6EmD>Yfl~S@t;PSgtBI6`nO55^VApo<80@i=;wz(J8G~l#tlvFelu71Beb%E^ zR%!=n7^7N>L_@&kLZPyhEa|&UQ=7cZ!Yw$S$w@T{Ly2mRk^4%ENks5f)OPfUDQ1niM~{M1u1gT}hD%8B>YhhRbq9%T-dZWEz-&ts2}noUlSVifRl zemvr=l4YYHk?<&gnrt+^Nti$pUWD9l5yiWQmcS_?61!~<-)+Q<+E~{^5W@mlb?yU# zDws2VNoGWCz05Tg04Nu-_2N;bUWh4Loyi>RvwJ*O389~4d&$+iHwZB5=lNZ>fsE#! z(6c8_#*MqT;tp+`K6-+Dxyu;{bQtEj$Egj~O7G&B43cnu`=QovWOg;?!kuaeiT*|g z14)fXA*k*H-J*TZ0#qwpm>a`HJkPnB#{kn7X3D8}>-G2I$QM5kL4`np;|h)`JTk|! z%VZ+_bA7nq)Wqa6O!IYmO`%kc$Bb3x>hwpn^PppWY|SJ@uTll(dljbPD$J{UnE1BA zohBH0V{LOBgdl$qWN@MnllZ#6dihp-*Xfh-2)?eN+19v@nQseUx<~)*>fa7 zsEPYm-)H~nB$1*IV|sZbZowQU*pf00gEY`-i!DTIRVL4uXy#PYM}Pg761eM??D*(e`~HOo?j;t*c{Ggg)+85%04-E zIXX7xqdH%)ti<>>2DJO=Qvr%(<+$dnBK@k4b$FfkpV3 z391dB<}4B8lSG0y0H1UHU1;77F-eNNRjfbKDbM%qC;Jf!B!2gGqM}z2APE?P*%}o; zNczKRtR*l1(Qn1)|K2}9Q%Be`fDZa*j|H}YWl5NF-u%cI92b8%MBXKH(o-pD`Qd5l z1O=qK1#9_?!~-c#x+?pDTqiPkqDKbOP)mut^_wuQnoCt;Ai6=WaN%<4!lgL*@t5Ks{M1jy!+-O?$AzIG z@{r=ooLr3KowL!2-@6A>=`ec_5?kDO-g_z^qIw%YPC_&paOoKlNE6q}k3iI)n@aT=xw?2r8k-LfaK9g1@Cfk0w*UKTOeHVgO&%G4k`6Eq#!$4$GA0M1BA}(f4bI-v zOqsNp>kM)K<&2l_POo^I$SO#r@6cI!f#szg3bzV*u8IBMN=4kKOv0|fUwSD$^13hI zwEnn8WTxfCmt38$qe7{&Vy}9OSJs=wv(<8Oe?{8|g>~DZtGwhv)Z+!d7b|JuP1c?z zoM2x5*CWqjQL5r5bkD{FLORSr;4KzCbOI7fr(qE8g<)AFA<&mpsuI9-A|pf7pht)J zPRYbEO9_meB-)^J;2E#77cu1r>!KZrdjn81(o(K2qNe1*n$!Qe3Ib;Y6Lqen)UIjJ zwyaHwo}uuZeomRQ{nB)7nL6s^GUW;~I6*S?)DUQ!-vp}x8EIzVz5q6XmE^ z#Nxh$(BT=)NHP$XZUJ+eFBpr`YaL}}Q52WQCLXQ_naNb4KHN(!7h- z_SVoy+MC;0OhkARSvYv0pKF|_N0&9_2p7%G`fiFG#@LfVm9cO;N1;jF8CF`Zm>MPe z+k2$mJSz_x&;-nxOQO%504$ zbc6T|CNZ;5slgi1;X%}iTYPt31>%E;vhZ48D;KMVGJt+k0k9qR&!MHX|qHY-I*Dij8BolLJ#ogpbZ6MRlA@Bgr zgMcU3;FjA$5V%$`feY0N9tf+-D;b9X=e7Swif`{@O1*k)*KaKTJRGSyqNPb7k$KN9z5mZodI#YiZCIg!5aSPr*dIKfdz7mbo>eHH^V{X-mb!6fnb-77K<1*RsLuc-^ozH^A2wH*i}3iGDnTv{R0nsPGF zqwK9U>ifML9Ar(P)))uAFN13Xg9j;F6BFbKzB)P$BWG;@zeC_k69UdEb3TV#XLix; zD0Scf>kv4!xjhJ4V$%Cx`Q=}ZpC@SU7-zw5$}|yZGEk4cOaH9TF_ifR-j0PU+u(ir zFCCN+NLX-BF1P=3rY$es&inM$@8Y;?k?Qm1XYYUb;<`|kCW_cTBeRB#Kn*CpUo?e% z=Yi|O)qYtvAFI^Ih04c5(e?{u3(#2Zt0kA`vsZjBl+PL!*|i+nrp+cv=X>@&`{`%O za}(=9VkX5vGA2rs$rd4Pc~~k)RI%$837wM&WJD}<2jYOmYyqy+hQTzr*P7rR>>G7gVT4{Od!Kn??F=NRmV*h%Du_^cmr7o zbIYmOY?E~TnMWVzG>YB$)i1M!2~9z z)Hk$(wjhIau=X#bda)3wMcB{$^R9%+N#Nz^9JDYHPj>d$PO)3|&fKUDXCa zaJmARIZS)Ai<}&RM&~g{J)K?YgPdVAbqA5VZS+OIAS;%|2!vsn<{mZm*ckqqDTuu( z#X9iGx$m=u%rqtucQNSK)9+K$NOUco9T}g@=dfws@k|SWk1wPxP6ssrAUuX9bvKL)S0@UBp z%PAT&5IoGoXf)jC5a?X0)LxoT8vXTrX>a(aiLmP{!EnJ4PKH_=X#sx^P|U zKiei*#8e6BF4WB@t9{dv#A+_VPjmS(N8Ce$7Y<;EA=%n2lDmEhMPdnesG(uhsfKtE04$2yy% z|LMoU({22ln33ssGFRLi*Ew}&93N#9IM&758UX*y-X)Gb1lJv>d+Jv)C7%FKTk)+9 zVd`x|uv~}n{;Oa5#rS*w=s%3JFMW#KvTWnR#BVA*sfNmpy>>i~+wW2?*;y(WeD#uv zAuNaoB40UlJ_)`I-UN>`2#dmr9|aWLEf3^>s{oer6)UrdQMonrpQp02(y{^@pX8Lh zr17P%`IUb@TN;pV82E$!#%BMm-&RVA!bGj2&~!%u(q#!~I?dX$$#uLh zfwVO^m}O*CbdFkWRD$lgg+$0ly&#s8@pkJ=e%vJsw1 z0^xt^O4Fwe(sCIPolT}gAGqS??lf6=S_E88vyKbYb0^Ib0?$hX5>NuDmHxmcxz2yu zGSV)!Pga1SNppfoN5or6)`-ctwU&KjEUImo&e|Fp z9pUT>C_R{y`q($PMwI3#rc4*177R~V2sAh~EayI>(OA?nqG_W38en*b(S%J2*2vZb z1EAC}7dXq&;0pV!(A5CbYeQS=BzwvV!4nV0r_(Gp2(vhd8A>g68Uo_Ehz9h$S7vNp0*ycs9;_t;K%lsSGM9r zzX=x5=)wIrzxh@?@yuhHAl&q6WzmZR5HL0KY?X%iZnh(tN~Thi+Q2N+r+2WEiwHi9 zvkE~cfaM;(-)aIvcBh77?Dj4Es7pyy-x-;}4327T@-j~pp5+>Zigx`t=*x%I^$NReD(L;lLXU(vV z>v59lo-%+(c(q{(c!2i!V2U}FfYQs;{hcrnBD?9IT*Ep zSuJcyStT<1fBl#LBEG<0-cSDUUuWO(0Dj!b)P#j_iL}i@BpixL=St1l0X~IBq7vm5 z{_&~unNo~fxJX;ewE2G@mf(udixYV>?^t)XoNdcA#i>f%Og_!pOtkS?%BIU`|Ea7Z zd$(VQRc9TR<yMTyqD#;p!LE%*{&T6*i9krOAHW&rJZW!wFV=|vy=>E zC{`#jPhTU0PoE|BbI-inCEq8{KxCd*I+clF{*BOFt zd$eO4GALz$)EjxmF#jyBrfc^S+Y7+d{v--6@?^de3hJ@`ZJ38yeuS}voUSAztfcI- z+Jpojs1{*LmEp&;Cr@$e0f`0}tq5PsV)xMDt=&0N zW|`vdaMs?ymXI3!a2uF0w=oZqI5Q&-Hwm(8ZX_L73;XNbUO@lV93=^f6g=%=&@OHv z;aia|{ags6y?1_0wdUOVy{?)AZPA!k(6W}-Ca?~)@QySO>{`(bj~?KBLZsoTIf6$x zq*%XmhQ$*&qHwc8Sp^BxhHb$ZMrZJK(smybu_?q_iKbW~fMH}BCW${!OwE&Jz^Zn% z&Srv8#7$49Sb{)qY?wKPtS`**BE)EUco-jMXZlMQU~Zk9Cprj&)FcX)C5{*sTMsNv zbZ&wGM{Dx!O;Q1F6Cb2Dx;%G}Aeeh`eDFM}{JLXg^vygelGYRV>4{m5tfgueRwEIPwS8S&14o>A z%&__@6@IE2&kjE5@jF)tnj*@WBnp#UUjkrS3^W6e5Tx_#zxlhI6mu}1K6WUsa>SZz zVw=BLNm=;fu>s&+6BkCu(*$UOjk)>d_`Z+56rcX|cgGo`d==D)!l6y@1fS;;nQ-2? z@Mg47$1;EG%>N#JcWaVDsg{NYt{JeWQ0#zROG=MBCUa+gt7^zy>huBgV#;T2a9w=c z!y2#$p046TkooLv!$4UVS{Y={CcsEiM%7u~MJarID<4^p3WZGwB#i{S&BEBpM1|I$ z2P+7F*K7)?z?^L(4Gq2V43XtMU7Q^`a*=!#__3+3mehKV!Zdh$0JWO6ZLpDR&TD3T z(K4WEH6yLDdTgMTFN0fo5IV3hSpZasAJ#V`R%mn_%dERh)L`T}KMIJ}Yr03j8w_|0 z*TPNyJ{TT}zjE$eoMI330t`^WbpaoI2ST5|{|m$Tu3-kswr3H74kA1+fNNFMHwIHw z_&1hg75q5EiAIMBF1q$$BpIl_V)vjnqTL$*@o#_SS7PY)o%oTz|FhA0s4q4qXLD|; zp1IN*2nAAU@PadJW=jgraUV}7Cu1P$5N5;yA>FO<$ZgV75Ws9IwnS$ zFIQz+BPk+%ks*rPjycPyNbn;La#m)!>LRxi%>$bA)PzJpO@6fyyHvHQq}cCi)Y<@) zFa2Rg#mS&j>v8~eD!WfH2W@|C-g@*IIs`YdyF~+7=YVA>6*G)lSlL+3dZto+lP*lE z+b2X2U~MZ9@LJB5v=5CCRQqMBE}3}-T=-ok$@nUMN%^n|*ad)d<03Ep%P+ZbgjO#8 zyy3ER}5*cRNn!7PSRw1d*6ES)UE$AM5?jYU}dV>&l zFh}h{Tt!sR-?N(%H|NK`<&A15%~|TZ35M9~+0Ecg7&h zvYtb&H_x0dPeUlnmDqAXGE8~}zomO7zxjfbYS5JJGNCRmx*6hgFVr` zw{H!_0Or;w2}F|TUY(puO=OR?du?JK;z{&1j7dNG6p_9kBRA_W{KC(3up*tpd=8h7 zO;Ro{0Jj~O!Q?Faf#*p0O|l7-YpbQ@Mt0g1Uo&Y4kEZY`R|F3fU{g_Kbka5Z<|NQ0 zf08QT!M$W;Mn9v$3*Tyv?b_a>e#)xF?qM|%e){oKd(-3yZkvrq!dK|H(bt}W!s#*` z5$a^i_r z7P9GqTM8pGPE5bxyJSlNeH#mv^I1)Roz}M&b|sk+Cbc)(avxjf^6XkOt=%&C zYyRUUe2j|-LyKtcJ4EK%NB2>-0|N$*;J6UK_1YWpW1o1Q6qg5yaP}miRZbphk2aX} zx>0@NDC^j)K4wc2xT9Dd=FnIhVZs~0$Vl2ppdIsMgPLGZX028Wo|MoT_3hejCSKyt zzVXet&$gqV{F$GQBOiGlJiu>_H9`E{CuKa6PbN=LXvpu(r<$1BsM?@?Dx`h?DZV7l zlzDNswiunAL+Z3j3-ZBx4pFVtz8JuoxSZGM1I1YE%q91%G#@T=%N-iXme4k- zO7wPdRI^AW&gSI;KVW7^gh~Jq7eOn+xF~E{=_Gv{T$cxDfQA_E{ro2*!xRIPlh0{( zP@8lhYLIr!Jwk4^5GZ~YNZPLLT4osmv0YG(mX8Eu&{v+hm8i>dg=9I&S zPI3CgJh;?~R@M-gr|xrdM=$+1;*W7@7Gv?KRoQtNV+NVfUTVi6r7$++!Lg(X1fnQ> z6_l1(C><+)lHow6LJJA@p~qInbCUor9BXwqJw+ z%tGJ~k$}NS$PF^8)M18N!8dnfWSrx`Ix$C)`VIo37V5SLO{YB&iA+oZPI!>B0ScS6 zZ;CL_3~a>*)re-%+1s3R=2(}(Bk}hrM~@kbKQcw2hqFNcQ(|OJ)QprO-6+2StUUy| zmE)E+B={^NBpV+906+jqL_t(hw~tI>2A`Z?CwmUjvW(;A-S^Pc@sVO3JKE1l7i75p z;Qr0rCh#=OvkoF@BJKMRhT_(Zd*nPl9}Ad>i`lAl!8u7Bqb%qM(cMlndp(5B*B+WA z2XRK#3Udkrs|FU>U*p=lZ!zxItyykWQKm%hzPy`1?$o!&K@MM2a z3ZZw|ie%v28d~%n_K9kmULlyJzq3C+|LpUzORn7NYEH8-yE`~iLqvNAX3fpoW&EUz znenEt2hDR4Gcrl%wT9$&A_n4`k@1Ps!dUA=k`BgZnG~d53uw{amrf|iB@lQ>2la1e90NtEXn^k)~wS!G1N@S_in2oPFPY8p19ulHE2 zoj4y$5*37J_wepv>R%zXArv4UV_$Mj&2rp)_m6-zW=#Uc5CiC&0Wxa9z?6C=^l2%g zfh4Z<%9slUap@LsNw;h!V+Ih;wQk9n-8N^&9wXK3G1IfEQY)>;-`>+iT0=~zTf3wv zBo<+Yvn}<-Pof!1JB+41Kv0m|$-c~??|=If1Yxn!d=3-pVNA9iSRvfHv^={RAHmPv zPCC4~CDshMFf?ZhK*u6X_u?qbv<+r%W~z1I*-HQ5+uUZZD7L2?f{$&uF76<7{?b4H z?*L{%nZM$5pZQFD`fvVNG#?s>6|`OHrmV&}t-Lbw)-TLm2F}6YG7&m$$a<1@aNEx= zrwo|NT5R0E!n{hA;*EGx@W-y@`k-Uh<5h0*Uh4K~6(9MMWs|1zY_TBh*9{!y1JU{}i#t#6#D>S;{96m!i2EjEMl7rPRXr4q48ZW@2o+|A|1QDc9k;zmuRq8TG zN3GKCn6uKMs7WHI@vMuB$3WCPh?XkU#w?>0vd+n({;cUo;8L0jxi4rJkTjP`25#T% zlt9_s-;iqGoeU*Q_rTdkCX8lc^rslApV6FfQtJ}PwwVlGfC*W?*D1mBp3<;=;?H`M z`Q&%oMj8T%?I**IZ8VfU8cg%CNI^L#pfGEhEA=>|_$TU!RQ~4G>v87LaXw?_B+_-A zD9MK;8Slk(H;d%ici%jD@&sq)AWEgY<)L_oIzs9rO?QJRW45Ojteow&b zM)@?|Gg0EO=2(5;>qz|y1MBo_QT%Z&04oDzmNpubI1Ql1d4%1qvFmYf>_Hr4d&0H5 zH{*kQcgWv+j59wu?*xD2m3J@3Gx#z+jlykNGJXBtMSKz^nR(i&C9tE)MCyVN!dZm? z5uTVqD!@G=nwLn#aBpN3O?^Hd8ngn@TVb6n(APAFQm^>5ir^@INw7`t=wZ-qvw9Yv zn8!WcG_n@lmbmM)UBiqE95I)%B)09O=yWZ9L7T>bU9y=Na%FA&&Kcl=X)wiwUaFPmtY;Pu zl6NU>d8K)kE0(aVwaE|4fzd@gO}g(LZk6XsO|C%O`LN#oj>{yKH5B~h71@T*W+y(Z zB>Sn`QWn5}7$(|;d#{w7B(R<_rzEZkM5bgmni}>?6cZ`I8!{d7KovFz%tr`k0}_`S z85j4p70{PT)l@Zkq)C)PI%xakfvHVMS2D0hdhY%ux%ne(}9OA+=p^64Ev% ze`w+X3+W-gME67LH)ZdZL0SATs|Y}7j`YbB4n!0Qfl#vVEeK2=i6o;eo9*cq<1y%~ zpUu_|VH;ELDon{eVoJCQ2A+P=*WQRpmIQJThG9<6m|5A3!JZx#G1{lX2pX&v4C621 zF@k0~F*Vi0REdm5a~wnqJpds$6`5{;UUH{S!z}azNm!f7g4Drzf11nmcbV=?jVn!j zFg}rA9C1tr8+Fj`+%i#wm}F}^Top9ReFLFjvx(r!4eQ-H`w1JNq+1Q?byB<*REZNq3fTDqfZ>g#EH2M ziPCcgT_R#32+DbjBmsa~x`l+Kxt=sk$~)%z;c(O}5&^u0CUo~syiEf2ZuXOU#M3xA zV#P`K^SLh79MnM4)Zr+UxM4ev0b30A8`qmmSiEr;r=NJ@TB^CYw!o&l_&3I}6!HxKU83dnOFv}$bO?~?AiC42d z*4xhUZfv<4Bcd9Uzb0SjE14y*1#NN}xaM8g;<%Q%W(21kN?!)jWaL3 zL=-L2@GJPzdF5floX01Sk zH{l5m^HEZ7y@FUX>J}2RI7BP_`N}8qX?cex)SL$}!CJ~)6d>v>xyD(VTxa#?^D1ej z3@ti%yW)#}icj{B?v_hlwtM?!w5ZyM_c>}1A^~%hn6p-R-os0|Lt)_~BQ+a|ez_eY z%sj}sZXtOGn2eirbt(Xa40X-fi!M0$YjTucTmc6as+fHFQ9Jg(l4vO zP=dcp=e8K92;#m}58u{qvORQz0F%Sv!+R7yz$>$!oGS{Ckl=nzoj1q`&HT z>c#Vn53K=>v$yjw{q*P{{7*!bzIW>;eoan%M?+9RaF(5D=V}w?V2UsoqgsJh1vOF; zP|b@WGDiA>G_N&44PHX9gw(oBww(=#vGX8-@N7*HrUMPKi8-CcUpWDT5it*SvVmL% zh$+pW6N!d_JTj+8*%zq5b?qTXbD=%<8a|dd3C(HMv$&y1B>KaUMonRI(IydeQ_ydn-hW zM;18GvxWo^uyE$I4kmwy6lH^a+CxC-#@sv?UChhm+y=}Rt$u4XZd|<@M;|}Ib4usJ z)TUY7z^NW)Sxrz>p2dl&I%YXh1cteeM!7vQ45M3%aePk?F~xNQ6HVjO5KCXy;W`wj z9JeoV+I8aCT-~gKOocX%0AjS|K^Sf`dpaknZy9F232Y6_>g;HbksCMTtAFuY{L$B5 zC5jepg#PO;Xd-b#GiJL4kCs??9ncBNFn_K1&8QAtnj) zwt(_>es+B+3`rJPgRB>m8Yob+9LjuKk3t89011Dr`aN)l>#Q)$xAn1%5HdeMi>8ck zABK|spj(<)zy0-L|Lg$2_R)XBynN)pztT2nk8M<#sU@Y6(m8Q^YFXbaOcDHcZF#tW zfjjMJi3-1cY#Y*y?}<#a2uN+@i+$qI0bCP3@qfSiDtoGD(NY^@27kNN^7qjzGPE21yUl- z697qoxG@+2gXy`?KBjy6zW4Y0*LwgMcI*-1ulv3C9raaZWo2b%Wo2dcuovcBob7a~ zlTxy=gtehw_K{QwRLgwYbl%{mR6jaCN>KOt^7;S$H_At@TrThV=wD!3h$#R@@XldN zUkWdyzu7J-{rUyu0*rgeKb*qRbZ(R|%d`E2G0!bLQi%8R4%az&&Z$?t4qZ3O0>;RJ zSCW}7smNQ^NehH+qwypg=Dg8B0Czxf{LS|75O zR089n>Fjgu{e)6VN8~}wl@O?ao1wc*WSH$G1?#M%mca_GT6gZtXC0AYaDy3FLYLTN zsy%+-juremp)M0|YHd+_WQP!BZE9BG_$1fFw8sG1DZU?PayC`JfcMu)1Pz^yB} z%L6(vIdnm-z0}G12n$x*l%N;Tx*VMZ!DOP)RXbDbk+5{=@#9Fj514dJ(W`J1lV#>a zEtvYa=cl3Ds6-iH{&9mcbvRgHf!G3_#tG|~Q&B`*s4k+^c+4Z6i!|g^k&n=#Ux7sS zp@ac%6I{FP`vnE2u(Y7&38aha6xB46O-6Js7~KOXvk$&a+>l=J6%o zJBNdj!2}GoC8N-}r=O8tAHUZTMAhWD&D_gExrjM)87U(JIE0glI)K5yCC*;zH%t0C z^4^KLbQs1w!J4v3oE2`xF=z)&#AbARvuijWD3FH{l;a3d=dm1h@;HYcyY*11p#^y! zx_}6^9E2$}QV*l8E5xS|Lauq!<=#0qwMpk#oFW*<2Vap?x5HXWq^7R5&Q}&ph{VdDr{iReJDJTz3CK%Ci5o!@%0d zP%toOx8QVAn6KQLxx^Yv94%P(af9VIC)uIpW!6|aG7yeAw682z0EcStp&6Kho|w{J z?JH#I6CVl>|0*ZKGf9+~0p`DU)5h27qYKQD4WfL!ck{$! zZ2`8*fGZQOnbJQ{oMbp!d#a$2*;rm}3oTKA!-xC)dic{gZJY_CFNuGCJR`koPw>cf zo`w*;D+6jAytjhDce=;NNzyoPzH7>wFKJP>7|zpf1goe2*}qlBOdv}!U6k#>V>uNr zAI960=jJO9t4DpQUdqd$HPWcur4H}}fs&azrIPGOyb291VH&*(oodGI>71#NeXtZA z+%b+)G=T7KFIP}<$DsE=^Ts!nfBx_zD5WeRg9aQ)KKR0=at@lf4^wPER*=)|mw6g1 zf}t?2#}a);6Z^3-O#E1n&O6@>I6xK*Mrjk9;48S|9bpADcqY~=Dq=o#jnYovHj333 ze((3o#f#_5$A13f@QHmaJz;5>yp(h*0ud@yQ~oKAG*gNj2L@W@Y|$)H;r<3fr?w>p za!5a+Y4Va>_~+w=Z`C}~uNzOYo*bYgt;yrL^TzAb(SA(r`|h;z^*vJRO?Gudcj7YlS=j!dze+#(vCt zNB~u8XA%?u5+s0}J75ZqEESS6OC3pEUlv4LXfW!#6lzxoe+n`+Ej4`eR!EB0CX50X zErypAV!mr-q)+FWEL(3h9eNhw5YD0M+1BemLLkD1)pJr4lZX>^&yCzK6L)=N=3ps5 zodb=@22H*^+hR0hz-s~8uuyY_aNLhC8Zh=Lw+%Dtu}Yn%CJA-6Z!Z&cZ2Qwc zUXI>>Z&_rn>$yjNKp^S+SiC=gpwooA!f1?;am1j#xx`vS>OO;qo(?thILqi%pgDOK zMt*})h^E)MWk&cR5=~i~yrbV84^Ton!5QscoY^D9>fNT6fGzOnvtd3rYHq}$otc#Or@jtH*m2*EsQA9dc# z!tR(}5nRy-Y4aSwZadXZCj*COxi+Z0RBOPD&=GVfO((zwFY2M#iKbphX9`$gL$W%@ z;`-Gsykv#dU>q_U3C;W}O-ifKS4OVN^V|Jpdiqp( znbF(b?|eg9#PiW{jb^hB>b(uqZ$ap86L7m+K1cMPt7RGIqzf0%#yfawk$pf}$nJdO z9PK3xU1;|!)K3Or*)sny3@F;JPKUxDUgpROj9Mk= zsZO=Pe}Ka{#|8s%X_N}7`+o|r_?H>$KxjKSZ=VA&wUA5@H}(v3_%HQOGAbNq`PiW{ zj`Q0*-sSsQ3w!*?;qtX7p9(EroX2qqQ|tj8dG-@{{nFeLk-%nRm9q~l()V`J7mu@k z7XQ2Q+=Z#kNp{0mgd^An?wDk~BfdQ(6?rb#(s&g*;sCV5ya!m%{I#$BN9KSR%YXNY zzft=4>??~*T~H+Hoytlp#|k4YHfwIy_Pdm$as{umEK2f09;bcn&%(u>1nvjW^l92f zs{8Po(P|I_00b5o zhnxg}oZ~PR<0S9;8KpT#f|fJI;6ly0=p)i?*2O&EK;K>h6||PqC!fU`K{E}3rGdxwVvg?Yl!k3v z!ij{}5I`_&-c>L;=P`w#)KiZt@eGCluAI= zdd}Wqb1Rll4ZvAOlL93cYG(E`bMllYph`<@B_gm&H`VQI&h`q)c_7y&Z+Ap zqRL@^(M&A^((LZ2NZ}V4!L>~xV^gVdBo>cG;Lo4T5R-TdYcWA5^^^wTA1Ves({ojg z-~DV|7Ua2Yudp-bZ$>DTAtFMXGC%ri7oOs8y!S2T;DO!L_i5;eIlf+<_)rEh7r0@A zBli|Oab2@1Jv3=MbOpBUr+TehUTfMOO5h?b09-22Dw@{LKIh2Qd2)OW3DZfR;M@%( zR_V)bQI_RD;2_KG$a@g$j%6A0?um(W31INHV@Jvxj~<3MZ7`M5hhjNUc3~N~!3gtq zykzg(J6g_SEqIQ(N#E6Pz~w6AC~R-Og@`_#8|7Kn=}s*=H6SCSeLSR>oTdkH4!%?r z{pG&>1`ZrL0_zNVs5|}0`y)gh``W_~x>7>C(4rcUiiAg*LOTYSxYJ7W~?- z6-%}WXMW(s=}XlAwTCq09s8K{5)Pj{g-cj@#+QK^q_qghz#9<<;0{{sBc`Mj>LVvp z`bcl~1K)`$n2Ofg^9xWFGqsK?NDbBojXG{5f8dD#C0}#5@l~vYEnu_%w;M%go1uX7 zWi?d=#JNFg4B?OwFU1Z_1~QP$1IY37g5##5#?DXS z-~eqMLK$!XzM|s5L6e1!Bnq`YKnRS|Rt|cUg5I8AJDix5*m(*7DnfS3{g`~sZG|N* zy_l|B7#S}!5)mhMT$fvDN!TK~$_7q6T0~s-V272yqUJ&iV1fMXqSBBA%#IOsvKy@F z9A{2&1#izzmiZ7S6Zgf)L}d`EUS6>(q$Z; z2;W9E3<$pp{av1eaRGZbOdI2xHL?rx3>pI_*Ml!N^}7?0 z8wxX9KjO4`1R|| zhvR$$UCpC>Z6W|z1}YJeBvCeTQ#j zG)`VBDwTe9fbl)c%oGDOY`<__q8nWcS2pgpb)l~lf_6se5 z>n&j1f>$`e(2+_fpOy$^;HO=rI+uaDfw!Lg%anhUdFq?=(d>gsqqzsBX7^qcXZ-@c z_}Eji?)=pKcf=ZDWS?<9eJD?N?HMXB&_|xQz{pZMqJ(+!J<90xI1WP_(Bb1}rm;xi zxJkY|22T5gKc>!&SNf8db={&hvuF9dz9#>0B&CH=XTe>2ca_JUe75}Nul`E;g-?H` z^um)CE??p`1&D9kKT=Y7K%*$yFokfBXLdp^Ng0?Z+*g}P=}SUDpUQKe$?qFHM8(!p z%#XwG3NQ8IneW;cn(rqSY32DU$T{SRp4*otOki?bHV=7;JRtYU=ar>TJac36yvHj# zYe{n%JWyKu4kn}(0D(x>U`10ss|jG#dJ`t>i_Tw$hjQMoMq(3EaC0Q$$k2{#nlKj5 zt+vFP`a^UPk}#^wftf{8K$ZxnEaQN2HT4jEKh zIbcz%%jlT9(T2%G5~>l0M1Uh3h?+VGdk4r+voH!q%qe)4TCa*g(vYwC5#M3nAm36= zL-AEOSSEFGe@x9-nih2IX-5%hZ^dj$r>z20{GcgQwxYn1-M~7Whv3mJ(r2|@dHLKW z6pj|=36~kU;kbjqT_BprL9|UxqhDi@{DY4@Q%3e4EfWjhg(>3Tf*I3@AZoQC2pEF2 z+=1|4MNmn^wuhdT?mp9xCcD6hbB@vG^*Nk*7~$0=KDNd-^PlYJM+cSoY+IRtJH7j0nu;^hh3g)`;b4QfrH*J~ zJ_64k;$3D5Zx+@5*N=s9znbeqK%u!>#|nW;SULm0(yfAJ4e#D=7P{-nn>`3AyH$r0 z8qqM1YCtp@?PLd$)`Y^g0wdJl#qi=!1wjF+*Xr~F&taldEQ{GQs^d=^^FI5_xo4j% z_rCqE(t$F<4%iGohzkqDZ)0wGY5H23xQr&sE4`yEoClt3FP>n8MhHemw|XPI{f%!e-+TJWGI8Nj9O+glAH6yB&T7)oe;ZQ> zT3Fhd&ut}ugv_gr^44`!0>>(;@`5<$0Hb(Rlh0Bx;CJ4C-F`ttD@O*oPem1kI;T0k zlO0T;Z#^=5yI2Z=09CEsV0qa#ag4hL_m;tN!pZ^r(#%9TbK(RF?mA17*lh*e>ZPAP ztzyf7pv^%+`Zshzo>~T^8;nz&Gd_ps7%@w(W59(v+R*v}ozRyYnL5f)$zEwFoy~|s z(u+P6J{xAe?oRp%NFg2b=hS^3^Q!B7rIk6BA?cXYj}=0P!EZnNV!4lSc761*DS`;x zWcp+P`kFaASuV~pZ$m4~*K~Y(!@eEm&ON>5GJ^EP6+#!HW4bQ7l53^^bbj8lFXkKI z9K3jy{%S9mM}U`C4$|1yrGLg-jHb8CC`*(cd-j>~Tc7z~%Fq4cr%FFthRx#?}>vJP~%xDz*l~2UzC$*3b$WcfK+dp zyu}CDdB9`Z%)eqi8OU@jQ)e9OB7@W6NbM(ri3V|fQ(GJJeOk^wlh)ZIa z#=wh<`Ac3{;WwiNI$`@-6?#^r+RDkFtf?lQ8;udI-a@RCrWqT3n|l#{z!?Ti3K6HE z6KJ5+C8aR+(!YVD9MjrE3vh zdx!z6XYWBg;D(vl-*@m(S(%wC-+A~@U2JV^-b~Ko z**4H5r>RCYYs5M{Q5uNFs52!O0p zq|IE5D#f_;%2%Z+28OgL^v*jO%~2P16{GINiNloKb8~HJ&C#Ci>sr(>EfhQHwGC&t z!SVfcpgvY(oh@gcn<(=*jOop9Ac-1H3p|pCrd%QLZv)}XPn29U6fSSb)b1K@F#X^~r5!eMZZb2z;{ zckyhT(uQ$*!&qOQIe(%2*c(kJO(!&ruf_zaTA{d)$>2z~PL^HX@s z63m1`jc#T+3i4C~hNki=%~qjUYgq?1qzg^$S>({wSr3o;kxXuf1BA8Mb*DI#-nTxj}~;cFH$fr7R<*)IOfjmJsD4>|ko zhlkdT25=N=r*a40nLfdQuSC2jdiSUM4?Ans6=| zjB}`|Brs~WUD6C>ofJJ*kvauEAVTk~<~*hja@8eTVViEAX9jFnAm<>BHg|g#Z53v* zWqH(N8MBJo;wsM-T!Z~Y`(R|Uw{O0T-EwPr7}HIEUrYJeTka|o=k}K219z9pGgk58kF0#PX}QGB!x091qrSy2f^sT{IRkxi32p2q6WVFs&=IOIRi- znWBhsLAW-`fZpt9HiI6H{`zJAmHqqQM3V|?9a+lIu^zzKH&IX=z3v?zCUo3p`2kCo zVv3{D?%sc(3;}oCWGS?V_@zBW$vXY`V+1TXUnUt5pPQN^NCW#%Qcq3rG9t@X$rbN1 zNw32a1%&P1nup=r6q@PRRKg~cB*Gu~Q9%iVCQTmth&)ux9aZ}G>K?f8AQVa+vJ#`2 zj5=sP$3Pb@PL#Q60zI%3&L-{B=ID<)Z`+9)_>xF%Rg16C@<70whj_HTt&55H_){6B zXN?2e&OIt4O*_{rj4lyz)aM4?3eIi>rxC}xjZ#1x>RH|afykd0u;z5bP{#<)@up)3 z%Kb-fDG#4~flc90##8(9G`q*JW6z&^{ju^ei>hbwA~$N$NDoRg!7dh2QZ5k;>@{Uo5}=E5BGi@tM!!2(*{INb&Nf?kUE9F z$`jKAfJC7=NewUpgY>>4A&C?jLJI=WN^r{j24*8VcbrSe-+4usUNq+?sU_w{*5J`u zTo;!udSKcMBv^rHT)GjE$Snes+Uo#e-kN_j5jncu;GWD*VU~GQ>gotMghE=q37Z;? zrmh59pe`{HQx`{=(MqgmgHe!e8qrZrv>JZbc`lAB`EnmzaVs!Nq^UE{9nw3$N5V8@ zt7Y z3V3`8x6~j(c~8Qt*HT3NvmQQ_R;;kZZQ9TT^>O44&yFknET-5+nA;)NBLWFd1#DHt zD58_SDzO{zF6n*Wj|9`q-27-isEaes!KN&kY}3|)UN9bDkYej^BA(*>Tt5vVG}g_Om25EL$lpU%gOTT!%+c?UqGMbw(9}$+?8U_nkwE z_b5o0xyT4BCaoR!__18)rfeKX>b6H(gy!s|KMcskWmrskxC~(dbIT<{#2HVQM`Z>N z<=gLgYq|CQJ4G0ioUFBkNq_wtUoT(&_IHRQJBPrW#Uu!Ghv{psc3!vkGuuEq=C3w2 z(0Hh9yn5LFVQ}8^yz(M1!0M}q^z4we-mBl)>ydlBmP5*;XVh}-!vNCOf;D3OJeHN^ zSPMFsKkX#&_mla84dC&H9XrYt zbDX*#4YCaD1oO)??1#CaHzMufy}(4F3WRD80)W6tr-WL@4hm1@e1IOnS4Q7vAqKW z@7Nb3vV-|bHxdx=+P)5`#HwK)ZCAbYsuweKO&@L2T)^hByje#}vruu9#=LMkP2iR7 z5pZ@ASqFzD>z`v;d6C*#FJ+c8gPVerTIU=Z({WB7T?a>IV!C=*X1f7<#h?sHl4uHm zIy|;?4xVN6RC@{qg;>b3xn7dG2wf_b6M!ZFd|A4i?B~0d4fjbJxo~dv_;#&B7cy zId}zKabn6S4!ov0!ILHqm)m4|hw`nF+Nm_44ABB1jc|)^i7uzXqjj$spq?;&6|e|T z(wIJT!(`Hj=6&G?;qq8t$x4TElO0doYN`)m*|LpCsUDD&r-PZeHtwZEJnBXvI1WZ^3j$!&4feCXy$EgS)KPD$xAyb|Xbz%YMjIK^G;EqP&@^~W%gsaY5)Qmh zz=uJ;1Mr_yk3b>WG5~LJ`uCrEru@B6{ZjdxpZ;IV*nvG|^4!JnS6{Tb?1Sc)jUDoO3JE`SxZDvNvxgBJhZ4Zyw#z_x<}7V|PQp3=S{Gy4tqY7NAW z?GxfUDI>oyfM6j7CK9~FY&oQ(TVi%}w-L;=m>06Nff8M4?5he6zJNmw6wO6= zfd#xkJeWAR79q}Ck{!>4Tfv$NF=`;n23j7sxNj$dp#r-MNGAlDkhU~OUEX&mjwQ?E z1xa5`Fe7epLWN(^oGin7kaU^yg~xd;53%OQhiXFZ+X&CB_br!)?#^NZ=ny2sv7I`5 zW!NYSEV^_LP+@RX?)=aMi`kt=+JM2%G7mL2$j%)wvqL)%VR}6T6M0?v#)+rPmxyC} z&;C(%Iv7ik^6vIwl!fi`C?VGFKg`C>>XG%e;6>b$q*2F;zl;n`B$5~f88D&`bJ_VB=9oxrr(ee-Rl%hq1M8{_!7_X_k=;5t(UpyARxmb?XjZXp>w)xW1_(qbV{>$vz3)>&&4^(rKGI zl93NkqBy2J1-)}fwy|YPcSf!XBjS$bsbpzc-~snhS`qRxG~tjZwc_a0#x`7i#2(hO zwAHo~P8e?5k$l973@(C%@-^M-;8T@i;ikKT3q97Wz!Wx+1#S%6n0ZIummC9I%B{>) z-WL-(&t0lwj8~QMb>MUfl=U$m(@D=N+A$}lLAcF*h2sq(Tb-pppE!5EJb-d_{MOqr zAG17!5$JvU_mq?PCjeEnJ42m3QT7q%tGmH!m$>@tg3b_qoS^ zXiB^?hizx@iI*ng#bAnCUQ=K^A_0On!yIBKW`rd)Bo#*rTo=9S#?Ih}b4Gq#TU|j) zLf#Kop!77gMOr4;vPXgUmZ((-A@e{2oelL!WVnt>0WBlY)6KJTB9nR}Fe$pmFjLFEr9J$c;O+_@U0uQP|Pu3B9)O*v>M`mQxQs z`Xr`A%rxznje$^Jk0a2}{n(F}Km7hT%O5}e{c?HFLV4ieZoF)Xs?*FHV*Z;6tn64vzQqUPUvJ=7z9c4cYr^ku(;8KFr*t!9;`Ggq; zUfWM*;royv&t;&}!GcN+rqr8Q4-OHkP5M}c5%hJkwG+Ze(~*K90U*L;!K}o~KUsui z1U!x$JVz#G&PbsuB4r#-*r$_%w{F_%Fp*KFn46zwjpH?fCd}b+yq6ss49K8@X!-$S zi?%Zgvkdc*DXvNv2n%a5O;B{>?33L`(np-I|c#jH)OkD>z%aT5HHn(#t)PwtcArNATixGSj#k5b<#%OJklM#@ALdi(CTlNgRNG#|oepm+D1_3D8_3hzl*zb_ce*I26G5q! zs$KK(gFD1Qc{*H1z#jeWCIWmSb4KopQULQ^)j)D8}*Pte4*fk^aL4gDev zl`pYA@l4?*PYEtVpS8WTx~$TF=I|eI*Cm&(tm-t!N52i>ut|)?s}F-qx>OJ*8BKoa z(WlDg$=UMZ9r^7druF+ViLR|(F4HJk&Y8CYr_qFX zA@GS;aqsa8e@%Y1&hiB6-bgI!E!XLT%o)Nz<5f(Wh#d0-x6+aMR_|M7g8h9JFF}D# z3!v@cN3_&mc$#SODnnojR@=(jN$zFTC_(b4AP}(%NB1K$rY3ns=;*2C97>#p%ugQt z%E3$KiDJ6~Avwp{M1(*Db0CI|O(0Hzr8|m5KALnl8N;g`*oMuKaI{;Q2IkyKC?t1S zKv4>-ybIA8vQI|j2FEsPS3bVlA=gMo^4^nT36Vjp-QXaz0Vafl~O zf28dpkC-00Yv+=Q-h7@#rCqwHw0yDsY1WM_Q z?$~ITIj|EKC(AE<;v?mqdj`svzWGSGu-R9>fAabA-RDk}zxLselw;$VHSf8-JVUx~ zzHk!8ahMTi+JFc_FxZ=zy4|X11e5FlODGgNre7lrpgV-P z!-&E`4`+a({d5M9>6NmB#o5jUX})niou*3ARHhJM8g6yA7SWg5-y3QJn1SqnGLJW@7ply(rFTL^Q@&i<^lOEnd$0b{mhG@=t(8z1YWfOMYH zb#&5$xPTAhh}9hdI&*cheC$I%T8@3-y`?<%a9Lw+(E7{}ZD*E9E^dtN4kOZCMp3{V z=EARiPa4S@W8vYRvRitwo@pZpLcH0Teb2t)(j8spEk|Z7L$Ph@U%CSVjmP}Su)1lF zNp>Z9{K;#?nPpcK<|&^(bp?}QZ+SDp3l8qz8)b2T&e+GYh7H!QUbu1|xEZbk-v;@s z+_Yl5??Iz=lx6Vq^n2kJhw>2ZZfpo$cLS;OzB05$(qw9YHr>K(YyboMYZpw;=t6Cs zI7%VN+EwTnZDLxX{}P{gZK^C2^L7gyI^E)&yYKNIoY>D5y>+C*YZSl19I+G{D~Nqw zWdg<6e&r}cx)txSa&Xf?6$%UK!F^Y?rm0lQcT6vRYksxu#i@OyZ&*{SYdPJK2QU4= zM_Y34T1*{vW)YChu!@FM9AXKMwDaAUPNgq=9GV%$;joV~G&x(K?W%(AKt&7CJeHub zt*-J@ue-DS%jaGomh1x44Smt9EQ?;7x&|X@Z-C~ICDLp>^CJ~_*!O88FQgZd2>qyC zNN1rSz%UhGJo6q`WMne)(=xLQ)AE^X*UM)={ps>o{)fL>Zhy~zRknzMyFx$H1J{9; ziiiyr3j)AwgFnkLTZ#@H3x}%@h{rRTd;O7W= zr^)CIv=iw~Yi|OE@Lw+NJC*?kq9jx+2KT@>Z_u_it>D;ageU_i0p%Vw;6<1f^pylM zC3%;bT8IG0yaU#&snQ8zvZ3>u#%G#g(}TsR;KO9%?UX{u!<2a@01zrdMCPD|BoZV> zvrua`)V6`LMY5l&X)B0;i7$ue3Q$L9uAz*x2YHA94+T|>(xhug)7*g3wV<|JjM{sZ zd^9AjLGcmDRHbSW_Co5OxT7KvxDrN!y28j2JW!T%MB`~AyxS1-f`+~GFZGLd$CX5CTk=<# zHsd&ioNE<(X@hyz9J=l{Zv|H++gG{yuL8W9zY(yBRSQ07J4f6u1+isiAbZ$w+29L? zL427wx9i|>9wgo*5J4~PGRFKHdRu75jw20Z2NndUf#T0zpCq_-W7{yydkX$lqT967 zvHSaArZ{gH0KzCkt~(q-n7BOY67fI{RX2nO=ngcS002M$NkldYVb6i&;82&@7h zd@w?i1|0FCaq)4#$|}T!Q)@s>=~PPVhr7)T-3UGX96C~f z$@En)wJwRnib5<&))o2?VbY2Uu1dGPQ>#}UWeYdFM3j(RrQHlDhCb^z=|FmzsqYFi zb*LkGV58l#{U0M<^J%kj_;r1?aBVs12R-V0F-RJN_RIBz%VkG5(ekbnt>-dpUZ+@# zIfU}K2gjbL&z>)jy!cYNi`{un$P)>m(SeYGgOF*U3clTg_8h`!FACqs-|?pMj~;m} zyPE7Je5D5A1%$ipQpaQ5;M}*p=V497O(dRZ=XUC9)xDoLxqzo8CAWed>KK9HH#qS< z539cp|1cKu4D+?0|J>)x&oBpj{HH!zS|@2oo`vF4PA$t)6m8}#EjsmQS$w5k++{?D zT&+dmj?1QiG_p^edw4s1p3!_A4Oja2)n7<8UPCGc~L#EGz0Q(6*4cQzpV$q6b7OZOtDXI=p9O45ZOAgtO9ep43g3#-+bQzxG1ZR%uw?f7ERIRJ$_sEesu*=RyX7>3*vQ!O#bJ9h~ap}`y- z*;!&nA`=yhY!k)&*fNeITm3lupp2|wmU=TzKHVJ~<*O&2Cx|(omN20M;~nKk3C#Y_ zA9=F8fXU|wJ07^-;1FI!da4=>!o!j4ilaqJl>J43BRJJ&+hi0x(Om6QVX>{R%(6oQ zBUx!d3xsu!pcDywnhVsE*oU+~=p(>;C-aHbDMF%;2FK$O0%r6gl#J5ksAZM9sx&Cz zccDG+!UXE5@hrkx2b)EP{?qMCEC*_1-#<)JGJhD>3=R_Wi-zjESq|(Vs6s|QPzYsb z&X_1Q<7|P}+Q!_=xib;Y{Vbz7uwys$Zome-Eg3bgXj)@^rjd}G*P0^IjU$(REPui9 zkYMq9i0QdSnFcX%{=G$*Fta{zdocf#Coy#r4E)L^mTC|OmwCe(;NQ9=`mFrJwSkH}`9kem!d(RcbMv%^FRLJE)|IBRe1JThCzZD~H&Li? zH}C{;o1X%ZlPK+uPE^G0qk6rnXxL-@b#Al^1z`ZQs9wY>P7t-m5rHdPaN8acbs1sr2grB<2>blNW6RsNjfpg%4TZRL562vF%jA^&a-VRsp9m zqJ+?W%CdaA>cqi!cb)GBS zOzpi|BLy+w)cnYM6=YVy?Hk?)B9e-Gu_D6FOu{n+qymRse`b}|3Ei$&wtGncr`Fy`>iF<{xm5eM@#Bd8v@RhT^*{SuLR zWUQmaQaw!Yh$k*yE2r2gV$Wb7b8a~BU?$UC?0%)kk3Ya#%Zp|4(XW!Xbine<1-3I| z?#URwV#QIWomLW&m&)EZWMD86rvVZI13aiuNJsXSR=Gd-R1u{i=}|uc*xuYNLChb|ISoV8+-ABQ zjr%+aJ@H24L51IXJi31>(RTnC4N_L~AM)bIbRrzufhod%2xU zMtRgxUgQ11g12jh)m&uS^j+sj;a7%+?1f*tm#WsM9?sp8E}r?clJRD>Mre}nYA4(r zO5oAG_m$TjI#Ry&^kW2LCp;n}&gVDTNE;>0{+PAuR7QA3h@-}JtYkJbg_keCaHhNq z;rN#brT2%x@dWg&bzy|E=O|C>MCz)b6;C1t7-I6|I=#=Tgm$=}%5k4(o_gIxWyMn! zpBV^vL+0)K91iri5t`k-M3ure`1gPFx5_W|4q={sSDDA^qT(6VDyWltOWV*6K);>^ zwwn6N>QaAchIf?*nc_=k!chNebu9oHqS>tnDHW|s8$U0*@vYlsWzjmqG9xdE5(ndo zFj^&2LIzWbzlIZ{<6}x&f$8aa>PRt@=Kvs~If4ORI=+DDw1dz?X!bAyN`w%Q$pdOZ zvy!hGp+ZxX2)?5mg|>n(4iX?>6(aF9DN00$)GQq#|Hy2EafODeo!@-wAz^ABL$)U$O*NKPwG!*dIRaf%t#H|BX+6#*j4nB= zb9i)8M}RtaAYTHfIhw|iTi@Ua8{)#;uUw@5R+Ty;2o2(V7tufNW5 zm#KFGn_jeQ1KR{8UuNqgLeS|Y1cFDHf7=ZMS7V+Aj`Ku18DM?NE?o5cNV5-KhAB^no|)@7Wn4K|%2R|kWTZREvH+?T;bo9|&C-rWHBrjomE+Q` z^CND~ZoFdM6qY5{1~U>lU`JO zTPd%Vp=qTChf`F}Z}$_<(v1)X6P<_s zT%nUbXt%qiJ0{%q_33gu!6L@r{oeB1UwM!|MLcDuQ*>6-x)3W>_yxR$e04~4U?A^u z1d66zzD*>l3vBzf6G8Pxrd`g`ALgLRA)YPquDmzc16bL1D2KewHf<=p{8^XgyuEj9 z=k!M2k+wxg6Rl#QX;JikZ7=SkTq*zuQ2uYgk3RSLzh6GPo4_iEkCdBOD=bg5x0?w_ z-U6gj7-HtBaff}NHNl8uVpF<7-UmMEMK}$w8hB%qP@ec2d6HIoPn&XK-r1WIdW};P z59`2y7X+MZ`yt&i0|!SrQ3<^=bAqVQG?J^Sn;9q(Zm>KxR^J>Qb7j=WUj@M`R{a6*xpa2 z9U;nC+VG53(Aqdw)CLjY>Zt`20LB)$U_5il#8Hh**|agEh-_dGHww6DB49d5v+_I( z`C2(MW7fb96eGxCMs_(FQ6=Pd!Bl z_;R#l+enzIMlQ8*gmeJ&=dShM?80D2?1IMhMs>t}+n#=wj+AnVQSZd^Y`FuI)-b~J z-aR|;?p`8^ zr@`vF+eOSxedO&HONoz4KJKd0(Xw7%x-n|Je4zAwHsT&<7NXT=H+fqdr`EkWB=kIIkU^enUD1 zq~>mMZU3`c_7yek?!in_$c0J^0WLfq`^uNfzj^SF%2i^No@33Zg4&Ix^;UH%A|nv) zHj2$V|8HNynxpaK`K#|&yrfb|^y-sbz9wb8e)St@UcJcKDP(w)0|*Xa7xNF=MIO$2@vB{d%Ue$^}l_-^p1>{ z6>w249+U(9WoiJP>AO<6lL;Pr_kg*en<_`#r+wH1Cwhy?X~J9?d`pcmX>H2HXCjqM<6I@Z`n88b}Mt3qvZucw)J)mF@iyRV@t3sw8m7Dn4AHEtih{xe%<(yNfE5p zHD+VVcHNm9fsZf}(NyntUJ|;B(F)yC;!VUNDyS1i9l?@;`O~hNz+HQ4FoIUvsm|@z zdAA5!DH7VtL_JE3CP}@E^}JS4?O<8UWdzb$7FUj8f}LUH>Demsj?Zny7THbYp4~Y3KnpUnWpLd`be^N*_UoVsjHyVAGgUS~|Kw7#;U8M{*E^h(ziLR7uiSyAyhm9I zxtJzt09(tR4UfQ}!J>K;hJA131)>3+JNaDsgMa%cZw0-yenyL|Z$`Mr8rGY|8t=_})|>2mIE z-w_^v8|Qhaz8rjLiRwbB$&?DP_-;aC!t3G?1dikjG3k*<=#F$X;u7s<16T|+5Wfj) zO&`!CEst|sI_K{!-nzCZ$lxbc7!Yfgc{9TmYPg`)5ie)^3X=!|Pbo{}Bn^U2A?$7QjLW>0;ijWg z8&S=CjV~L)&`}Dv8fTJ*x2 z#DvL4(k%2-kdGs1R7j+LwPX+HVcb?Jc>zDJ5(sCa?oe7U2x+6!y1YhZ!9b^dILok$ zS%@z&8o{$lgQHE^o%EiHhtj=M+r-LS29%mVX(OG8`!X4$J~=WC(~;IF-}Ll9G%A8C zFt>PQY$WrVm(f^lyPbHtwi0vm*71JKuv_KX%QNNP-J_V1`+#o~FW2_++*M7q%jLGQ zf$UDRf!TE#p*YNL7I*F2U!FRDj#27NxeF5#Q=^#2+(g-SA+QE8jb^u)mh8IHjc_rH z*(@f@sW~=*MzL{67nfJG5bS;hX0pUuQ+JK&q0QDnnQm3O*k`i>`wMxyd?ZVa?8Nj5 zsWXad`hr-o-&LBiZz(i`IdB`{C>F_wQu!0z?C6!mw=3(04PU}sqN5F3#d`HFF z9Hb5FA}qDPSGWL!`@jKgohVeMjRgrfEHDfiT*&jmbCXIN`h2(aNP6pd4`FMQs)CTW>Dxr3%gJnc8T7 z9wo#aiKN5kd&!UV5`Z{SFpabR`wzeL#d81akC$7IzojgoD7fBRz9SrtMr}9q@LHu= zUT=S}G|QH^*M3k-OF87N71ML4%6K(tY^z!avb0V-h^d+9vG~D9LIS)K$1_sL0V?oV zZD~*%s%81@l$?0;c(t4eOe84G+W>hM99u%IO9Y=R(Ta&i&6AE6M2v*)$fmBV}9 z_%@w{&6gRbqd@sIY6Vty=o53*RHhy#fOagm;POu`&b4Z4`w`B8xPoW!c1OR0q-UJ4 zNEogo4C5!S1PZ6JI>(qhNxAD6Hgh_Yo|e#I;P8I3qjjKv__Ii=h!XkImoUiWY+TKk zG6v_O{Agy?n-cITi7(&~CwiG`pLY~&{tERl4f0Mc@kZ^XQuIF)(QdFe2AxCB73ZoKIBQ+5i$0F?-5EDW5vqe!AS@t(A)lGK7@gv(mG z#z%2LGJM!d)?luq>E4E;&-u0`yauPsy=;HfC$s8c=aAtZ;_Kevz0NW=#ON5U#E!Jg z)Pl=q-gfj@d4k9*FJVUN1#f^ACfP#UxG{hV;B_2g)aE;(->KOfn5S`sQ*og_D<~)~ zbI>Z{{8JB$_30hdQ=CGN5R`o;%z=CEAcCj><+K-YORwS_w50wjVWL)~s>M6EX~ZV! z%64-kU)h)GxxtI}g}CU`jzJ|Iol_p!_tea3Q??IVAxg|Dj!j!^K_)y4=dYFD{hhC{ zlw=%pAxs~~o;gMX3(RARh;9VG4lKi%{50`7mzLc+prKknD^f=-M(DBws6Ysp8z?(p zYQ1z=3S#-O9|+_o3Spf1gjwa(e#67m$$FVgX2qx|IO3f(yxS$rya&B%+O!^3p#UrN zfuMvm3R6eN6v>BgU~!$cmMN_z!7q5P?IHuOyu;c^%L*i+$Px$2SYNRp>)eBI<@G_P zCsZsQ$-2ZvP}fzS;T`TAt9g7~svuLC8fFpaVbj4Kd9QxG_p?{X7;Cfp53 z{<4A41Pf(|e%eKOlkf(Y?^!m8q(0!DwpAdBqZ;zE;+u>sK6u|l+?khD6`|%$(o`g; z85@_CBBP|G0Z?S<8w;3IzVYP;%dPi4fUtxLHLqAE?Nmpw6`o2<@>FmL@!LGH%up0n zkpu1o*l$PH5xC^R3sF}pdwpiHS5o#;B;%#Wi>Ph>ALA;ZJ1&gS*OJ-+!Hp=0-x9gPTn)E zLRjXpK_&G-ZDq0aIvVc=5oC=Gn4m7>5p+--YQpMq_NB zMSkc~`CW(MO9X0cLf{;s9bSBQA*rvjTgpw8A~%@^S;4uTkHx9X-Fp5@i_7joj+!P!0vJicM5rRu|Ch-q>(U<(pGRGEms=1%F>?{D!!ygo$zGlSzik5;)CKvU10E6 z#*if@z&B0MgatgWrHg(>)BOXZW%q6Omc4jq-t*3Pl$R!+FMsP-euJ%>?q@{vM7eNw zB3{^c-f|2)^^`kq*$=)q%hf9vu^bs#VvW9m5TqdIz71-hwu0WQM+Y9ZYUD(@4D9X^ zD*eB@F1gY%sK`;-6yMa%KA(0bAL&4bZl&6|rdna3n;^peE-hJCNU!3HwDObWAw%YV zof`)qyklFNhs@J=#A-*B`UV6(Hvxw*SUwG`|Q;(LjC!WA-`9kSpsnt4j?rVmIl1AVmiGyqHxuykZe=z}U z)XSwuVYSaf-V-^*(T=e zQ*-l69z2MX+_Qx3oP6nI89#OxQLwH@K$};kBjGiBDOce`4(ZF?%5Rpb}m}hoi2SJWvbU@nT;|9QXgv>btXBvXMmDQG*Z_2a8I51gp z8#fw-M8{}@=i0bUYeQ%%R(N`yt%@kX0M?xiGi}mQS2Y%XdAz3GHsb!Hx=Bo~i5rF1x zXC3St%o2&i<0CNn8N5lS$__>eI^FnUli8;X^4F=r_OqQN-8md=Y>Qr0zBw3#dwvqE zG@T^#VgRA*wjmW=Q0&}i)+CA#p(f8LGki-q1|9H7-AUVn!1J(;4Lv8O@~038?KSX6 z+Guy=AqkttyfRPC?=F^ixckX)*I=2!6gGySyNfxYr#I)y#PmFy?2eS1Fsybwd>42= zhb_4uv$RTIWtX%8rZh*=-3G&6aSogS3&5{n)*Pc#z!LY@F?$1CtP4Sv72rgZ{tirF zyY}rZi!9GrWaPSplaSF`U4mq1by3MYG@u}`o2@WXSPBg^XpK}dAKTga%~#E2vSw%( zns6_2j>v@N%my$25>C=U@Rdv77?1}~NJ z!j%aemM)e9Er-h%=GZ^`r#@Id@YXk#WBbRT6HJZ^vt{D!OGMYXg7XN`m{2Ah@dG3< z01stlGi9zfc}|alhETcach*I-ncz9?unn!qQ@jSXW+5u6iS0^DkXF8+(qTDovOnixtNRLRv(ofk6i|SSSvI;EB4cREQn1 zK(Vn*qyf41@P18Wdx8JpSB^&!>DH9biT7i^6`y2jXi|gZU!S>No`3#CdG|dJFwju3 zwK23VnVUkcVqX>}6v8frT5bYL_?%CxTBG+PHEVzII^Os|qq1+`O8x=>9Q9AQ15$V~YYy|iL70+FGsxSdGH7t43vG=fwH zZKIfu;<9T9eAh;{bJm?rDm$?iwqfSZe<}FwusZXIbJsfDkp+IJ)4UgV7bjP(`C|{l&YKr-rKYoIoZNA2{pKoW(8rsW&U3;S}Qh zBe}p?aVw`2X7oftac{-!km5q@M99MQh1q*D{SM~nmN2#HRocyF%$gBZetfU5ceI?r z5oV~H(ITUt(>NU{6@}02H96T~;(SB>!q@;$Gq90v3^t%Lv5JXF0oz4eneUa^8k($+ z&WaqNEsg$y*@-UD!{*O5b2Q&ZTd5S;9xxaKt z@>B>LIco;x>i|m6PyhIbOILGGP8oxy)@kT%XteAfBOrh8KzaMUhsy^({Nb|q*ghdB z1zaw%uJptU&z2X@oNai3GoQpLy9XhmY1cAUo`qkf!aY})GU5b}lw+OaD3kURRPkmn zf6ckixTMunAD=-HxtG3TT8{QsV6y(yE6dXw4kB8h_L(pf~aybCTyuTnvC7KDVd7qFFT1XWWzh7p(pJM9B@r6 z`-qH;3}by=v!-$&?W#p8G*=ld%(0BZdTd~Vagn)^OzKE7S%i7JmQQasX~1VTHPbIK z0Scrc&z4!l?g&7`uua+u^WKBgk9U?~vbGaVlxGr#pmUK!#evF`2TLwsUfa$Q5s4+y zm8hH}Y!^{);dIj3MhLmS9gK9IW*%j&3^Nb4Yps{)E|}=dhI(qM13T24cM~Lh6dp0PKpfQAH)MINO42HINA=<#}BCY#Wjx)^v8U{9^~}D_sW`1&6{S$bn-MlW=Ga8dy;S;C)%R%xoQ^7q5_%5b`C= z{P9cG_|$qSOz{dS>+E^Cwz`C%)O)hl=>`g-9?xpf3&5;UGcQPkd{jc9Q%Er`^>j+} zu78#nOaYU$AeBJp-sZPSCsA5>=KQH$!?motcZ`)s9{G0pAOFHLQn0RI1USZ{IMJYI8JZ<`lKe)wu!@+(e#;QO2h zhp%Q8eDbK$mI?o#4s&Z9uQ>^QYVze!;odON1Bc3%OYxk~HXg6^Hca69AZW- z>zt(up36=8Fx$TWfxGbTK2-kUm;V6%vss3S0%UFEnex$1=n2$9uh5AwuvMKn?IPd1 zKk%M>-hJY9dH7pjD~~_=PCngU$YAMW)T$zwZP37jG@)~z3Wxkq{@nqdtcl%H z#jxUwfeF`6BWMb@_XWd2tY2V}=hC4F@*O*6(}Znm=O&Zf=llt?@rdW9uU7>C%aRJF z&14=bJH8=|$v36s4tSv*9E~!41u-UF+Lm6R4@>Q*yvVJ7fBtH3n3W{koP z?0}Rbj~nUb*L7sdqei_#GiJ~@0<+h=(;ja!66TM4aUkG9^20k!7GmIw~YpD9P5U5@3LDFNDR3 zc(JI)V%^2T4Hg{F!t~qOESp}E`q{9S?{f)p1wpwK_iULpqbYWOFvD#;8WniXtr+{V zqm>}d#HidL!o@rc+@R2!K6msJ@@yVKfb!!Uj`&L*A}nit+_!QLTpwo6vmNuA8go}C zv04|2)`K)v^EAqfLD*en-QLN%L>Pizl$z~a_@B-PT+SJZdfV1E(E*5|K6GxI+J<7s zx`7L83_OmWUc;{Pp60d6fDtZaArn!9ipYl(rXRUYP8{&J8A zJu_@JJ`Zf8{j@rb14t=P1yAe6H5_?#;OHYyeSI~*HMeXE3jqGWD$JbL&ciuvWm`Ij zjYmycyTN)+1f+`60`{;)`wgEJKJ(y6uRb1ud+{J`a1U$dGThPlv9B4Kjj=D-#!{!5vB?1g`lyos9B?pZ~N` zRS@MK;FER?x;XzYaRAkSdRP!gAnsYLEHIHWM|I9rSRXV6? zRC20Er`J4$4z!$IyD`g}XxbPW8(>|e7La|+W$qsyWlDs=^3c^H{s5P+TqR82{_>~a z__p%B=S~vGm^n;vZ+|pooO6si7|96~n9@7|lubtW+t(JOknXzkNcqXTkCYF7aJ^Y<=>ZO;MK3KvMV6Eh<3PyM&=ZYNpp}e!!P?rk{T+5c4@!WVd*oJeV2zF^*F z%dgiS);;yG20jK3KK@B(mSL@eAigu;GF9pX&J+rKS)OnEXTPcfmG{V`uEQrI4`J{y zZ~7tMo`METug}_FDZ~dbXaR^gB&D5L6GSh*>JEtOHwj@{BG5c!fC^L*0o^1IM};!{ z4$?SsQA>9at!XJ*lV!aIM$u6{O>Hd55eD0qECdL(qR#pb&s8P>T%?yrSbO_jF zB#Nv0LyVzc;Z5{)TDlEE9YO%i3PsLI&c2$S3ifQ|WVjr>9YzV9p4 zDP|8+L@@xrDlVN852Je>rM$L-!2N>{+r%9d23bRQ>G~Dwi{k}lYi#LZEny$+=#K4< zYyuyQ+iqzcov)mjT#5kMJ?Li6v^9WCTwf@=N7!D8_s?8kf{|{Oy$Do=plxpbrCRB% zu7?GF@GRpb+h~uKxE1u)jkJ_+71d1a&>>)wOLG~4bDnNQ+7LQrRf5&tV4QlC7-Hyl zp&)49bbi=yc$bJubAur71{v5(z=D@x^pmWMJTS_-HkO^}%+$eJ)tH=wfXtkSJ&lKK zfA?Uym%tB3U5Y@X9LrYlhhYG7DpVoo8J8SJu5#(c;<*bbS9mFdh#9<((J`Pgx4=W0 zl9qVSc^wr;jO2`9c@FK`N34_WV0#-XPkhz+66;So@^rnOYx3$EWMGpHVJ6*t+_cU1 z6z4K_+Z@s_J;MW~momQe4}ZH14D^@V-~P_h!j2zi+RvQrZH!2^8M3ypBMih@=AM0` z{P9DNl!;51%87}yN$Ga7KKa{+2;amT| zjt1_Xwynz!raRr z`PF>uwF0Eg^~{FxIINv#xZM04!<-(LTfq zjUxs$#YqGfDg!h$lftuI?gV@eCYprGQ=Or5!7jl0 zZVT%T?cj|zh|o%25(Q8f)zqSKQGu-)%`yQ8q*cb85sgKQ zAzp}kGj)`Xf*7br!ije(X{?z-*}7X@8J_|!?Ha7gxE0_E9^VsQ@gRfaJir zn{tCZbyTWej$HYQqdOMMFX1erB9aj{x1^g4*mDl?`FilpeUKpmT0zNg5rOHum9gXD z*)xn;hBb#PFEZLeYt`0IofT$d1Uo;^f`7scAV9lHhpPw3+yD`7MYKd2w;){R&<0(D zDRW!3xY(DhCdtewe`R^7lC8Uh3vuU>r$!k9_; z4UV~=Ig8*GW=5TL&Y*_DkGQlwno6C?TF|(Xf`_KlvD%GDyzdV8c($AETDBaWEL!t4XytsmQ>smOTG?XfN~ z=XdJtS{Wd!$rNSlj0VIpzb>dvn~t^?W^t_P*?D5`JI@W6IhI-Wv4}UNk%PL40@H=3 zv!izBJAFq8tgqI2SYeol<9L<5rqfvu=eC92SVfD5r+r(?gTMbz%DzLlmj3^Z#0dD=j3K{<^~9I>f{ROZVs_0$2){^+{o z9Q3^^AkEKwz#V--oVl)290?0=0s)7(H{n0{3 z$4p<+;^VTjE|-0gx1QBc;N0`nVFi2@jjiv*D)qeKfo$ukEs!u`8P|xgca{z%Cs3}iV}@& zo(MuzNfWR4l$eed1!M|S>mtm$9c?4{CqGBd&X zHGdh~#v07gQ3L7cZm^{k2!c1H?LYvdu%U8+y)E6J@zBUHL_nQ^MTUBLewC#oU4*~u zC=-O1+c(JOy0rCpUk6)ip*e&5gQG6bAZ8>D=)!M1jdZ|ZHxWK;dx_srincNT!HaWU zVVoe!?jSw+tJY>aNa|{k!Y!qwBk{I4mC@RXQ=aXT9xdK@2M+?7q#Z_q==#`$qr(j$ zh{F$+cSL=4ZaHSfT?8SJxeB*!HixsyWk#ivnr3Sms7<5rG0=eJH;;5jfwfXRNsMHn zMd8_X*Bi=p==1UCo=iSBVG>)k&k}H{t*aOzw_~=p$<1ODWu}cXdbpu;&^CSQE|z>8 zeD}R&VE^v&%nu$d593|9!Q88|qE=ga5=-RKxMzK;(#A6q+9!n7G7?9Yx@}?on4h~* z{{8R$PWf*>`6(QfSaO5+bld1Cb4xeMZ~n&bmIuH7Fw-U5<<|X2VAhUj9sT0%3r^$> z6h|9j&W8c_vI#&OUJ%ArS)~7fRL$g3E@&tDftDR#)C?@l9x|yoa5Zj78}_v@Ii5$U z0p`@gMyjXKi4gFd_hf3hvhJK|LN{17`@5jUGlmn1fYq4U;>dIR55adHGA z9(_LylQVxk;vE}mmEFJz#yjq{Jz!yKfBf=`QZor|Nn*lx~r?JtE#K3 zt7|$tXv4Yq&fooQeDafj8RH10-c}SX%4eVXoEw*Boc^(=kg2r;a_TG|IaLAhndeI> zm@D<9y~Tsgk!AC18tG9`^pN-PS<<=r38H23EO|8+sq6OL95qm__n5xM@^Y^5szK^7pxxTaL<;EDr& zz0V!1k@(?6TxA7)*AM9&99WiF>CwGPCht9khl3Z7EJ)D2MnGs%tV5;H!J#;y@Iasi z764rj2!4evM|wuUQD9mTiAGfT%tgbNm56|m@OJJ)$0?mrpy)i@ORbTIR@=&1hE4AM zGG|xLZFD_G=V%zaHEo|2BQf>1QEUQ*IvOAE7lu>rJCblzRLohWK2D4;v1rcH$RWk3 zyF)aw@E!Um2Ra$o5`@Y_DbHG{1UMQiYf44#wMLCkn^eh%5+^$U|x=} za};hG@{r~u5#MnazOiDlu4cqNy->pUPD1Kf-cle#-pG3>$v+p z?~PiVQl^M-^s$eAGCuq8Gts|cGx@TLbYU|0y_{zL(+=I;#_lD|{i+~tfZlppL_bfY zpm}IUkSy0Qk?F;n?X6NvZ4ti0sly<}XS?y8v@b(a`IR8p$h7%Us((=_-J3E1Rdh%p1M~yqN;UmU~Y7h(r5XRmn|LBkyEc z6a@I-6#A;bph?ito^_WGIL*_?GmToSK)twk=a2gPT;2xu@e?Gs|bTZr^5#oE!Dmv{|3>M&eRlR2)am-?kx< z|K`g%KjnbFsZLsngh?6@Pl*%~nXgAG0Q~waN649j3Hg{OUkY85dsq3kf^&_^h&RpK zk37rLOF7~K4yP&87bPA`koZNQg$j2r?I1-y2IHDq71s(k9WNYxNu(0Hi1bsB(}fIM zt=-Xv<`WrG&Krmv$`exa%y@!inT(HbO3nI{5ipsKL?BAyF_q>IBWhGfIgSXEh)A4e zk!e;_;4Osra^wT-!e}{ zm@jaXho+dcAX^U_!FkR!XA2ogwAuy|gdfceSudF``8@sH zi_9f9#QtLgapzroqjz0zEbezNN6f1*$z~i4I$ArjgD=9=a!oDeWQ8f)(_1(9$2uGk z(#eV&&hegRE3J0xOJNMgaDlJGTXv2}9W`+s^Ox$6!z|G_ad{zj_O)hvNZ`V%)?I-% zaVvwfor~65x>*WJ%CfV`Y-~?8YE^_1AGk1|C8Z>39L1~r7%mI?OifV1!$dW26y|07 zsd%K;4=f3WL=O`CJ6qYwfxRsqbt3GK47uAzElXwGy<{c5YUh|l)P#G5b(8BG+UP9; zb^riC07*naR1g$6CNQG1Hr8#Pb7_cD_(+5Wf6_$KkS#~=~))4tGukjoxTC*IrrQw>wT#^>+|ZEXAS=Up<|Xthw>JcJ_&A0>s$N{+GLN-5Nd6Q$KUV;|TtXESK4{c?-)-YU0S*6GQ~UtV^HI(2Bq!&yaw# zy*SNzV%yrz23@7e%yw0F2@ddN4SeiN0?(oEgLI`5ualDaEi^_tva`=6Pp~}RNq)mU z`IXryWC4Z~S`YG5!2t7_Cn(H3OwtU@=9hF#x>VXkuy7Pm5_iedc)`($BX-S@j*nH6S>*5f8SGHPArBUa8Y@diXM%m$Py7#AW8n8;Lm85(5`6#xv&z z_D){iKc{22)J09D3?xOq?6a{yT}8Z2|Ld zE3_pZ>j7>xQ)9CrLGN)#N-p`aS4tl)$0Pf!uEpAB)=Wn-BM7ZfPVzqxX}@(Epma3q zO+$*a;$bge^AVYV!;&X$hyvTz(uo%^;TEyPp#G4%M@6>SM#95uxo$I`aY1{D1Yt@% z_`|tqk$);sHSJc*<2DBg_*dDLe@k2T+{%;6V;+`&ewZ?ZCs@C1NRp;Qp;|hPogT_& z$)!_%!ddEt;8!EGlO+IDCXoqoR1?<{{lu|~3#8S!pk;D06V0xUR1}DgLP~}BAwRS? zC`y8K>m)t*(oADH+)F^kf@%3x)7P|N9qr#XW~MPS0Vj61G{y4u-q1$vy5)%>> z#qutKlK@gct-o`}5><1L&KEjNB(tOZO1Amyd!_&RoQ{zuW{8AzIl+u+R0b>2aLcOa zR}ydDs|?#kKt2MFgqe59y9Q;U*_Pxm$iQMnW2+M>nD4F-RNVTz)>Vd*li*oKDNEQi z+upxnT|B@j685cY=RWWvBzxF{@@W{Naa7yj5Yx2x5u)d)MD+8_u!9-Q zA}a~P$;-|_5tL_VunmfWtF9NXs7 zKs|I>MjhEV$({7R2ktFL+G%4{?9w7b+PS&-;Mh#;UEfVUDsP&Y*;jOFg6ETX{1S4E z(b6c3{rkK6;ayI)!&q#HN*Bo+d}aS2f0?raJJ(QB{RQytv5dE=b0)PoGt}caRnLel ziB!4}2QqT%CNo=rfwZ8k)##XkV0ZXm!zh=`;U4vPPPP+c0ER**)Je$TF4i^8hu}@7 z=V5(yHIe3Ju)GaAWG0UF#bIIajm%5dGEBUJN3ipiKa9X^LV&JN{@G(^V*8f<_`tj0 z64&k89BVNr*BiirxiEL)8M-(W=g*&ufpcf$!te-7o3LKc4y%Z;q{SrF4B%F$NeN~9 zQMx#^zY3H}w#-^j=!6pZay=igI>jTL_FcW=eJ*QNk(Q=Zk`jL;l1{Q9@|ADVZRn%a zk@8(LtjbHF;F_DfY1t{v$-Jb~5@q`pW}S17(3ln|%PCA&CXVo`d{QU?hs&ALTb@y6 zlXJsdTW3e}<$w?1p*_#F791V$)}x$mb;pj~JLBlkP&{$uaEuTO*}lHQvJ=}~Pi03o z>BXFFSon-}Ht*zpwy%ZIFKVy^O%b{3_`xBT2(gxPktv;dmW+|2oibHCi_;?blUMU1 zJsTQ@QTqPaBN!z{@&<3iJ>mLUnM6u4EP{nSH_X?m?#JLpqqqOl1gJY3`-QOd8h&+UUuExE4kUKfMkiR4Zy!iQ;Li;Agx70pwf& zl^3u?f~OLqFn~CjxusAn^M@!Az@Ucf;ixc8q@4S1eu*P5NN+wOUBRH^fsJZ1zwLNB zwv-M?o=~n#KfMm=V48sy(z)*^<)sD5d=pV*0enWI86;5iciE?Lh|$pbhrbq&w$?>| z-x~6EMqtY1W^e>>^sUpA^+{p`263=aV%rgb{fuxtl`sgXUIAtgu?R#twW4i=2qOQ*7(xStKEU<5zj z5WoDb)Ux!2UFQvm-MWg9U&M&3G5SN&1Z`g-K?9cC)p8U-o4EWXEg&`&_l=KBt~nC5 z4d)R=>xlw%mS7DR*zmd&XD0*CyQHSMSq7~Fv>2Uuin?L+=}Y4%60F^%+^ggz+7-|W zgK|_lmVk5E$4b|isZuXYU>;f%$_w+^<(x^p=Cwy*-DS0Z1I$2O#grZ*f;!z2ECt3p(mu{R`ykwgt#tn4H0FY zd*bnU)48+Jzin%@QpUU9{nmKvJMN9vK4O-#>GhSvCt|6&H5v(aA6FR}T%2VDdX}YA zld(V;N6oWZCRCR7Se7R%xa@c7JcuBpnu!aAVtS^F2kxsZi&bis>Fq+^^Wbg%gt}nY zP9#<;S0+gmRa1*g`GD8O1D^M}@H#)0d<%V6?-smN`>kjamdXqHV~V`tLq64OVbzi& zPtbDFjMcy;cFyBBuWkgt#@=nn-D}LqsiH|d;A?8w2%S;o8*bbiyZblCSD)J-Pal33 zp+fuHcnJDMB%JG*9e5;9l3&SssGl&T`bM5L_!P`DqCI)=yz7x-VPZIjN6(fyd=zIg z%Xvt7jRO#uIJpkq9#Txp^l|DTFH<>jY^$>FsM3+EUA1)Af>%eCPGd|nFRRZ(qrMX; z-tv7VSXBbn>A^9ck|%XgxwCGm{8ZXlzFBQ;vG1WL zc&_=Em?%$KpkOy8kH`Q%%6sWO?8p!$fRu&y#GhEpbiQss0Sn|Mjb=ZzO!AXg`Cg$r z&$4PMc)d#VFu$f!fu+yMoJ#Vnk#E2_i-0Iuc^@8Z4#yFIh%4K2bL#2U3^=-#oXY*!1;u zu3=243#`8+W^??|-S@`de(xLcrQj$U-Bfx4_)u7Cjs8Q9)Q8r} zj_3{z=H7t4{wSly@tKvlaXm3AX>a#qW+T0GIBbv0JVBCO7 zsEk;_0x<IE*Xn-0hi524Tna2t$*>@iug9`#F!21yZK?s~o^pEFI;p4o*{;-Iga< z(2pXMZAN_=ymQDl_;4;0w4d0z&U3o;5(Q9DiJ5B=D=@C?Ng9wM?Boh=w>kh2K#mziY8|T_f9iyBYSYWteT-k}0i}C2^J`?*Mcvt-E|MgvQ z{oQ->ot2C1r18uP(b3t%TsV854j+yepL>S5vqS9oGD?6D=4Ww|nqmq;dUiTSJlRyz zZ;tM)Y*JYDR{%XK*Is&h?f84ouibxnqH3D*uzGc^dAK1eOTQ_lXPQbMFDgj&t!e>( z|JwWi&^_CX!%oYQBW3Dr7{yBy<(Yb$dxkckthNy$%gv+L6Fj1i(PamtLECBqOU~@l zNUSGF!3PL=H-(uyhfehCrK=Or2=*{-rU;O9WV20Cgf$H+l;mkO(8Cf+*s&MStek(k-KU zxjx(a$qyXaD=Zyg=@ck`vD(69U9-;vgJpVnH=l7Wlp>YD1>E#13Ct5eYRaWe3kwI? zAkqxg*lgQn7>pHGV?e&}j9-|g9hgu9XuJAd`d#%q72<-#(ac< zKSh_Lmu1&Nkf%&^5e?9eBH~1{ox?SpMI6`wx^)yKAU8OrjxrLJj%0G+*E*%?7r5mv zx#Y!4LtN%%mq;@o4Qb77;4}eq<$jk_m^Aj`5%=D^UlredYJc2*`)QgXmXUNC29G))9hqRn zupH~qk^zwrZ&!1BtaU`wxq)EjH7G+mM+l$Hxt?_!!;C)9G2b~OL6AE$y>wpYK;1Qk z^EE^^u{?$6C>rq(%acf@F1YM^tX#qu`}{7p42z}lF&v)vSwwu>Iq zn(w3}$Sm6j>|~8B!&|PEHHuL>b5ZX`U~FbclygG~33<^jmvO|fB26%?wM4XWu2EWP zgz4$9CgX7=WujDxC;+m}K4JZR*AC`rV*=BYjLbNv?pRSnZ?!EQ@!6$R3d*tyGH{<) z%7W+^5tG)%=$J+EOyY+3O8c+fz9stCt!0_XjIYr5sIw?0-|W~@4E4;YO)wFKLSm*e z-;^C+IEBG}%b#&?6`UK^Z(v)mCt}}S_aiKCV5EY;$Kp_fa>RNxzMwgCi&%jj;(ucGo)m z1_-uppK-JDmZtf5!_C*jGkcN_6q1e1uh*~>iWV4iwcSz^rQK7|X>Q>&cxZ%$$m}$8 z8gc?_msNn*DTMM8 zc=A5a8({2xD7bIB<2AA8fw#rrnR9XS_@Ov`j&1P<2IAuRQ}}_*viU$~tR;kB8%|+M z@R{{}+vC2szde@lv|AjVPG!Pei;7Xn9eBA>P|P#MIbAl7goHXd|E_bNyf_^qdB>V5 z5Oaj;6?IAh3VsPrnDw#(@?3^qNvreF_6h?mWtV*12u#HpwX~fnv#Axxyj!)_2%zOC zrwVT9Yfjt?5V>xOLWi1|7>_^t z=GWt~qo-qb{l?haUK9V@+wO|LdHOVSj923Bt?P4ppUDZFHyCwW=kft^gsHCg;=Bb@ z($l9dGQzqVH}0Z0p5)mX%-RDcozQmySejNFC{Eo_fzMF|SB?uqocX=)CY0F>9Nrqqhxj zx*CGRFL%d8%{cDxQ_+baLj_5!I1;x7O9znl>_nyARkre(bpOie?!~ z1s7E{rxDuK@}bwavs#NV6+1=?ZR`G~&W|;qWQakTrFb;1q-5qrwG*wz!D1Fq$R*~Y z8(0gsgn8Do%DlKOD&6s3Dwm~C7%HuW4Y6x<_(ISIFbY3WPBCQ)0~%3kQ$AqxBb}7dKngHm=aL8Hkr0a`)7ZbtGeawOwzV_oH4^8}9E)|g z+>jyjYFSbg1aH{?^>4)IzwymDK6oL{;ccuyP>GP&=Dx7xTyP0aJn>q5@CRiiUOdnH z`Talm;=Pje+Q~ndxKhkN_{^KqLYB!d)yR4`gu0y6vFk~Ss zjPBeQb2WW#aY1DYp3UGPEqM-#=$qPTlZL4c6Br zHg10K!PtR0HsH!&8AOn10dpNAYS zkwtyvZ>Yl16);gQMbLKO7<^0XnK0{bI^>DzIP!3GtDZi; z3jU*_>he1yFS(mgjz-DJZ6s690F}NrxgOd!kkFYHvP~`C@{*Rk;|&U-i3E^gDsxZH z^T<>z2x}_!b}kR{vO{Ms&O<1-HAC3Q-lTzu&+25edtO=rE6;!SY?-X7JZwBOa%@^5 z&-~4KQ5lOs@yQXSM2etFH+fYLo;zk!Q&Z^XJDD5#`wYgceqQD`E2g5XB#F46S|SK2 zLvV$dO(7iROJwqxLrsm52unVEo(I(IGXogR@rLImt&D;^Bp}bYX$|WkT0e#5^33!? zCsFdRJw%h5<~GA+$p}lsl>ADW;9Z=MuXDP_h27KD8~3ma#jSg9h|fLzxtJO|7q8!Y zON=hhuqb{p8ZnVvWz_1(LvS)TfD`Sm9czbhMu-hM%(}~)HmqfYILSOFCN{LV-E93O zu?$bn#eoZx2+P%R=aw~W#9W6m;MzRR-^AyhT!;gBfhq&~yP64Z?&xSKj$F8uW;>M& zcQY9TBjT@{ImC8GdW|Ssy={y*S+URpajh`2bmL;fu5Id>#v$IAy>@VCPNW&z8qZSl zmcdyEnSi6tBs=`iV**K>{ydh;lwe(zBdxAbnFVN`MD$`zb+h`vM{*;Sm2lqm?G=6iRd*9@e2 zzloPyorq^dk`6zVRRbOHLZ;6+iSTt&Z&p_JdQIt=|bB@0G6)$-u zKw?TI09e6gVkSozmEHyeHgw=Bn8*ZCXgq4VyO_5;7{B{xpNj81{S<*KW>C-?@o;R1 z*{LvV(sQ;;+?y|TH*bIK1k^{G=LFcmu@~IV`se+mLe5Gm?fPG4l}+{w6fjxE<_uV8gytub__zlF43 z(8srJM7w1Bm=6SEZ3!CAREInWIFkwTEQ_L!zRiCD!}QQU&$4fDa&+KK9A#P3?*0d2 z@xll_8+DdZ+NSGvlNn3_$G0WcfX**WAV4Xb^0Oa8yOkme?!7>WtH{kWGPOUXsg~Q` zlfH9h0fc5>lbUnh7#O5`oo=+=>91l1-Ga~+7}B~pl5WsA3YU&S-Mw&mx1s!nU-L45kLH2z`kNWrp!vxFjwdBaRSDBQ&6?0PQ?5a&)9 zJ6WA3T9b3nWR5aqY%35}b~S+UzMb3mERRIogDH}qNJ(Mh=#m7Q2y^|EEeJ7Ky&SO$ ztMBK#Jd&u%*Mjx@vSL|L;Ll-o)~z73D!9$kk6L${L3!J}ZHTm+%it(e#&5}D0$c+r z3{OeV9mzA1$o=wM(=t#djzBhf%);bI1|BS*R1|8X6eA_q0O~qHmp=qMy+cQokgb&U zv(D%syhA3Wm7wn2wK*o)rs{^hyP{$2`uLTP9gHKJ7Gf()6fU!r;$}9aT{&1fzLVij z?2B{hL}dk%i021J;zqWtbiVr|*pUUq#a;J%}8 ziCW@T(2rqmy-Y-#Rx~)*oH-G1c(!f=Kd(W-Bvs;J2HLp7NON=wbL>@2mcY@5(}MNz z*wo#aLD7$ot&TIyov!P`4IPPGyG&?4uEaEk-`V`&3!a-GaNDSs%-hR_q4~Awkri!AL&RjFy85 zg4{1cV}{0)bGw^KJtM4c*1^u9OnveD``L2uO1yUS){GKmO|4$}0uq7YD`}JS;;6D5 zXO9oEpXBA39666tHbEH#I)RSTV_j;6Z>CQKwBX=IT$vYCf+DFv)lsgLB|gQn7|sxj zq?0EVIQZt;IZXc&7V14idCxrgXzYIVYoZQiYY9h+B?b>m^JAqPnHNV2{yYOu@;w^N zHa90n(QXgvoZ=K40T_&an2+t=$=rGiiUH_KKINh==gN(e=JL3997Gxr%yl>btS}!l z&wc+CmgY;VQD+K~K=KK^lXCeND9Q&vnaUd+2~<*7(r=*=0R;~bX7VTqp^5_sZY3P0 z{2SzoM5|>8prjZ%fCZC>Q4=iK*S#T3Cd*M6l{cNs2&w`}6Qa9T*pHVO_ZwPHEz1Ve zr0U2twM>)H7%r4A+B~KBFEG3()3lmZts{r(Jd%(FUZN5z^A#?C?H>s_9l|+QacFu8 zs#L!;q~+LQipC*Y5WVDS^q4d&0# z5h>E_Vwn(^!c3;F$ETXAV&4gV8#TT9D5Lz9`p6Kp!;df`Y-;a{(?jRu^616*`PbhW zj|@-7eh6>hmgeXt(#;~B~bJg!p1Q-N!=eg zc>x?@RiGUelb@Fek%Q?Ky_wyK30ukUP0;_bo< zbUVS%-K}E+t$d1kXgf%5akZoa5K)5~mg5$L^`Vj4I50RFH}%&OK%oKC3aw>((AgCT z=@dcZmdHL9s{@%vTZz8VOyWLCLEK`-u?^`=PV{?-TWMQ|BafsTe!U`Tw)HFmVj9oJ zH0gph|Emp}qbY8fr`+ClG~VR`f^U(f7BX6uE~hwTuud~bk0uwlb(+J>4!UAL=A@Ny z^I(<&)PT1Yb`i-=qxTr2-}W6u{@KZL1me0b(f+<|-*}1Mq%~@v#K)I?Hm@m=w3*Il z9GTA2Nt40lfpLkYEr-AJRQ%%q^;=}ICid>#6K5C+O)!T!ncl_y%tdWtlmxS5j#+O| zsZq~RM^0H6nE^E7KBA8P?W4(TxGgA&6Pbm$=O8JJlscf;BpQX8(tWC660dR_7x!fT znTcn>06x>yt+1n96#$h3m0Jsw@!CddX`;WC5=+Upy-+y)Adc-@3JK3F&%Er<^Oa>q zNiy^uy?~pry12;Q5x&lS_6MEtG>3K)MQIi5eiIh%Pa_oFt!5sNZ?{>yfN;FTCI~Gk zmoDO8y{a>wI(|CV)wjf3nfFrz7hh%WnmPfUBdeq_?$=<79XUH3mzXkHU`l45k>$)1 z^Y2t{39E%pcn&s_!sR2tDWB1i&0S@dp{qKGyBfC`w3LH_Jh#p^p~8jEl|0ZEus$k4 zwt`Bgfi(`k@LXKL32fb6cSjx85ue$5nWcGo#=mt?`_DXSXGi0XfRzR5z0YF@5w1_x zf;5d_Bp@X3t}yS5KLeJn7I4st!fSgv5XtrJm{Bw2A%(7{-dPvgL=q|VEm{h%_a@Dj zZ7cbuyvYhfGrW%!NLU3HECVaB*$)2kLRxY_>T2MSH@Fj$a!ib@TERp^S}J2r_~nPo zN`{$T1q&cZNo%r7=Buf+8USEqW&)qFG9hFOHj;-EtTJASJ9o+eK!LM8GQ^%tosml( z09bxW!zfL!TCz;WUq*FQ2*5Q_=E#fWc2YZwBUQt5sbMK1Y!pYplSuYiG>wW`5HiE?hjf(E%Ao zVMAL-Ki~&u*^KFC3}T`ZJcC?$CmY;!-j=E)dO_vm15MdW<+6a?K4jbV%TCLL`Xb!W-PAXK=6Tf_N`3DC@YZS3SLzN zaszLU#_9Qs=}Ff1^da5otMA}@skom}L2fHx_`5J_*+`#DKWK5C{){}Ktp>kTnu3~*v{Dd>I|uwJwl8*Nld^XuveTfGPZopZ*@<8k=H!Z+8r1QXj!{dh?pz_|boIf82A|?Xh}h zlx;MpIyjJ z5NUq1C<>L9GGFs!)FOXK(>F!rB6(p0e~zr>U2bk~ACp(k;~Zx@=oIN1U_ys5Z${*w zRqN<4IO?#i-gBppvzy6fq9≠uLq7U<2sC#I3MVFi+C2mdVgO)JqgLwJIgh#YJ|E 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 a@&5(# + + + 404-image + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/4star.svg b/packages/Webkul/Shop/publishable/assets/images/4star.svg new file mode 100755 index 000000000..1c962e2da --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/4star.svg @@ -0,0 +1,13 @@ + + + + Star-4 + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/5star.svg b/packages/Webkul/Shop/publishable/assets/images/5star.svg new file mode 100755 index 000000000..8db49b3d5 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/5star.svg @@ -0,0 +1,14 @@ + + + + Star-5 + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/Arrow-Down.svg b/packages/Webkul/Shop/publishable/assets/images/Arrow-Down.svg new file mode 100755 index 000000000..335ef4e72 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/Arrow-Down.svg @@ -0,0 +1,10 @@ + + + + arrow-down + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/Expand-Light-On.svg b/packages/Webkul/Shop/publishable/assets/images/Expand-Light-On.svg new file mode 100755 index 000000000..7b38bfe7f --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/Expand-Light-On.svg @@ -0,0 +1,12 @@ + + + + Expand-Light-On + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/Expand-Light.svg b/packages/Webkul/Shop/publishable/assets/images/Expand-Light.svg new file mode 100755 index 000000000..745e57d6e --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/Expand-Light.svg @@ -0,0 +1,12 @@ + + + + Expand-Light + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/Icon-Graph-Green.svg b/packages/Webkul/Shop/publishable/assets/images/Icon-Graph-Green.svg new file mode 100755 index 000000000..ba589b67d --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/Icon-Graph-Green.svg @@ -0,0 +1,14 @@ + + + + Icon-Graph-Green + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/Logo.svg b/packages/Webkul/Shop/publishable/assets/images/Logo.svg new file mode 100755 index 000000000..bf61fdad9 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/Logo.svg @@ -0,0 +1,13 @@ + + + + Logo + Created with Sketch. + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/address.svg b/packages/Webkul/Shop/publishable/assets/images/address.svg new file mode 100755 index 000000000..fd3feea32 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/address.svg @@ -0,0 +1,11 @@ + + + + tab/heading/icon/address + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/arrow-down.svg b/packages/Webkul/Shop/publishable/assets/images/arrow-down.svg new file mode 100755 index 000000000..335ef4e72 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/arrow-down.svg @@ -0,0 +1,10 @@ + + + + arrow-down + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/arrow-left-dark.svg b/packages/Webkul/Shop/publishable/assets/images/arrow-left-dark.svg new file mode 100755 index 000000000..fcc05f15b --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/arrow-left-dark.svg @@ -0,0 +1,12 @@ + + + + arrow-left-dark + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/arrow-right-light.svg b/packages/Webkul/Shop/publishable/assets/images/arrow-right-light.svg new file mode 100755 index 000000000..7dd02995b --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/arrow-right-light.svg @@ -0,0 +1,12 @@ + + + + arrow-right-light + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/arrow-up.svg b/packages/Webkul/Shop/publishable/assets/images/arrow-up.svg new file mode 100755 index 000000000..4ebba93f5 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/arrow-up.svg @@ -0,0 +1,10 @@ + + + + icon-dropdown-up + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/banner.png b/packages/Webkul/Shop/publishable/assets/images/banner.png new file mode 100755 index 0000000000000000000000000000000000000000..23d8f6bc5826397acae999738bc28ca77a23e7f4 GIT binary patch literal 1061202 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Π@!rSidws6_M2qRfPs!vd4c9Al7exgx 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 (~pkuRL<3+?(F$2i(R$qRMmwtTO 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 z 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

    X_5` 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 z z(Jea6@4n=CUgZvm+Ozb zx56@5!(}zE>(Nq0eC&UGw(26u-fsXxeQ#m{vM%Ny@{Qt{*?(=tJ7NrSTD+=JWs`t# zz$9lpHQ)`Y|J0ZL)APR%dN~VtZm3@LYp1-w$DDuhSASLVKlG-Z>BEWL+|0NplKKrq zHcpRfh!*?|M{$#S+vGo8qeFZqIszMBdO9>|Zt}Ag2DLl(VZ{;tzr!QU#jo+KekLP8 z@QDoiq!U+?9xw4vJw2uI=UctU2{%-_ckpWw|#YESo;AntR1vN-I?VmNsDuFUSD9m?8) z={i_3urV03>H0}t;4RzV<3OFq^Tkb_H>Ut-K$pLvPsW`2^7`Aj6JM^R6Pj@1tbQ2F z7L(AW*}?q4vB~pzA9ck}kxRD5JplYz17%-1%~MY915$RyaOg9~QJx)yBxpU*=B-7*&&pKD|8gto1S z#8Fv#!3&!;b!ugBn2Bop-(cc`q?jWIb8osYNi;XIPn zr$jt|RlL92;xo8Mgo!yFwV$N|ugzVu1GwpD_`xAPoUPP?pQ?*Y=J*uz4GTrc!1fU4 zuJjV$W*3tsUZ~HHlWo`fnH>jA!WaLid+RS^^d4`gPaWg)D$CEBtCSzg8|-8=S>sF0qaSrLe{;qcJP&5)$zm&+`}CxNIWu~nUfg?p zy`+aSJq^z0cF8FQ?>s$*AKA>mbe6q&F_!UUTkcHn+BT#(6_1t(NuY8Qi?0egya|53 zXnJ#WkgSia=!>T#icva8R<;ZV)re zFudJ-@8xhP*`9t;H}WKBZw+UA=J8 zS4qJ@jD|X%y}w;9f}P->f_A)}Z%l{8*Ncn0?&U#or1t1+A&q2VG|T(E5zRKakFDW+ zx3k9X>B{toT#mjS85XlNXYpj6P5fOtz8&q^2ESOl!5YryYe&BDoJ`2SM6Q>&(3iL3 zix~5)(v7N;j(o4HV-VsIhgk*#3c6$CQ2-dH!g-oF=)}NkA1s?{c?{8W^=CPxYZ45W z{Xv#vO(1;+HDwUc$C-YetLxy`hYlJDvBIk$IRG#dSJ!R8ca+WD*bZCq@?wH@*EdIB zWf{^Zd*cFTSqjZC7R*%Fxn* zZ)!k)wC89k!UjCc4s%M!*;5@tN|~IC;oQPCab#qEDD1P(v_i)~6Ain=mttRcPRW9j zzu|ricEhtyrifKc^O2NO+MD)>5o%daI|s2 zfQeJMb1(HlK6~>|c+pEqB@TdYD$qCsvi2u9JgpCuIoxp3_Xa@Tp+@+60x0zk9_M>H z8R{p%;dBkMmROdx4&RqwdTvg|K>VN;BR^c_kNnU_ZyzjyCA0mq`u#myqUzaJikRG4 zvT2ZhuN7I@!}HxKc)860k??e@fg*ai;pz39Ihp*Z@{lq2E9!*nJvJVk4bb&*6>yxp z3hh)valCWv3_E>TcEZX2=7f@iz`w7PYS&Y(>+(4`U>|~b_W>E5PR{4MzXEd6dY$J? zt;qXSl-8k2igqD$O#;z_PJhfowQKVKwAER6{7x{Dtvgqnv!@k!cfGsdtN$*V&>%6T zKKvl(n4Y+E_G)(i%+uZ$>J5M=Fng-tm%6`N68X*NpP!6pAL$Mq#&ZLnyFJs92}N?t z{yubpO?qSrJ%SAg8Jq(e;LG_NWZ*Q^``r2IcY43R8U*jFLG=&JK7&nHO%v1`LxP)T zo_6)My5mj0xVk4GWBS=s-@OTDH!^}LP#S%~IFIedtGn)P45)7f&FpvQFm~s_uYQRO zzWW28_JN&$=buL-gWvdIY!JBF!;ueXpBv=D!Lf*xU%@SQ4rc++70|H($GSfB9sZiQ zY4;e5d<+ z{Lb}sY&cW}E&Sk>ps*NU5CJZ99pm3!n`6aEFgb5&xN;^y`qq2!qiZ%-#}b4TiC!PR zl2!bDS8{4HPL%LMw(@RU-6XFz!>e)Ks#f~Ne)M=IiFcZ`jV3|Owa*XyFd=M)tC&GD z=dm7PTR>@qkrce+J$no=e6NYwYy~g#zjW;iy5Neo%MbW&^0xZPX$jyvU)U!ZAI}$_ zebW}c@R4x2?!?|zC0I>J@TIyNBLg4?RL1T8Ef7r}_(+y;fxB{zao3xk&?c#=&$BAW zm~Q`zqeGY6H_=Fc#XA9fI3~k?3AOl(@8Y<+U3t{FRD4jFBK%spbb>rLmh?IPc6EF3 z@e?>vAN>aJBs0{Jh~axWJ$%7ppXw#5eX1v^vdP%uK{1pGf3$bA5gX_gyMfe+!Ju|* zmM%!jUuE*34s6~kzeSUGU$|z6A~?aBoM*pxd=KBr;n*nb>FxTf&io34ti1ny@4Nk1 zf8oEp{e}PcU%dUF|IOdnRsb*V{EzyFMkA#lzCJ}nGznJx7F&0dOVab2WJuU=@3NYS z2}`AosD|E1) zCZjVqILRUuTz(CI#@S6&&R918U%R6pARQg@3G}f;vZFhaMf6^u^;I*R!f!Nyh4lG` z@H~6ZM(aIZJ}_%broJR2K8Ae9lj6N4)@N7bX)a?T*Tl3oe204U2g;Hich-OwZYRO! zcwV5o!)uECkX5^;&nLAH0AH#ey;lw|$<##l*o=<&v8`}vesT1fT^_qK{#Z$QjaOHU z6T_ol>|6ilOMNF(?eNix1$50i>I1JXy@Sh+`NHahMVG*PtKlHe#H%AXm1|cr|T9}D3TZ}!5iq=^;WWyhJSBf}0|KexpZ3H|CcUu|VU= zwwJ=o`Sbc_zpBF(KbF`E=9A5xEb>sim6C5<&Z#*yUm|Hto^nnnClG@XhoE!EKcJ;Aj2L?i1YZ~v(G+roN#KmC52`9{xB>CZFt z8{A`n)hrJO#QWog2nFv|^!D=`zVbpCk=M;Tjb@A-w?goOlYxR5X za0+-1t*?6P*{+^{%czDY1ti~>UM$$H-$&m(%EbX_i#>CO1vU%b473}Nj%?wIpJeJz z;gh{xk0Y=W>jWc*C%e0NPzg^CkHa{DkgRge>x)AP_dA}MM;@&&bfEf{l}753Q?Q0_ z{R^rLVd%$uMleSoP@k91Fxrrfp6G;kGC`mpyeEIfK)F);4WQ`_y*+x9?xq`HKG`E* zZ|79E#6G>5{?zo9mt={9A2@uW2k-wt6Y$`BX8Xk#dtA5VpS$ZH{pd$Z?Dhy)yc1w$ zA>C1k=yXg%1V;D)wZ5K$2MwNZn*+Qq9Q2RF3g45_$G)rKy?r0sgqtb#XAtJ(bVd$3 zB=_;UuZ|x=h`z1RdDr!gT~(%&7mSV`ws9I<=aj*{zTCgBUB|I{^&a+Dz4;7{qFEuv zb#;f4I*u17*y&mq;f$^;!GvGVnG8JKFt~c&NH}_fKTk9Ubgp8cpu@TzKIinV(M7HZ zj~z=QJsCXuMo+jQ$;iGA4*(uKBatJ4z-P3{p}qdX%c{=@y`ok>s5h{BeCUk^E_XtA94lhXqXqg z^N8NZyK5Cd?M{H0Y%{`5Tpe~^Ju5xY^={nGL{-pBSHr)0bi#N+etbS2%-@CM^*u!9 zBlu9`+4Q4hNj0SFyP+dG_1$;=FFeTB`0b|8nMj@sekn81iE;I*J?Cc z45x%fd)CN4L)U|^bjmND!a?zv;(^!M+M#{lF@&J*pRR@e@NoUoWB6?4dHQRmCVheL zu_fw>PbL;@1I@=S^?mxqKY9gb@au;>kc9UThO72?fIk zcvuiUJ+JQ7-uJ-`@EO~VOs}yG9V;EIo9c;o&?q6yr{IWjOnIzVb>pr5#OTbD&dFqt z=+xG^tB{uVZw6-)Ud%+r`>8*?xcH-u&9RTJ=&{zV^3hV6KA}1PMknb5J}vkMY}MGA z8<_ZqPyFwBBEV`qb+pm;!t>x29`pYy9N%4qdJVyT4{Z8`es-7+kU^iiwin+sy@mLH z^UwURZy))AAGrO_-}di7`R`jKsua)<4*GLb@%W#|O~QhlA@w;f9NE?k-sGvi7m&EV z1XOydy?EzAs|p|Yq~m{SV7D8aAOw- zU;aBj?>m1{+o8>WoCy(K9TUmSHMCWZW7`MjE za5=Q`h2{^`c4Jty+E3F8l!H&QNl(O+XaZRg%Ws^--wIsBN*Wov(5;Bo&kcWlqmev| zLAo(FBGfTAs;RvPfuF6_4y?3ol*7e&#XK-3?U+2SISTuR$5v#hk8gcm+r{9NzQ7tA z>gz3b)rp;7b?pyK<1=c_-4gWh))wuGxMAa4z_f?bi4VZn8~K~VwJIN^=$71NkL(H# z>;jJSXUUyk8gCQGYpuoy=Aq0q2!SQvs%z{&eWb5<-hg%7z>yDKqCduYv`BW7{qaNE zYw)gB=LzE29-8js0@}kTsrFalWAZn0xAx(3{|t^G(eJsS>N_V9OD3}u2vnS>9w1(2 z_H>sQ`E4FoJLioR*ZB0nUP{HA%Q4j0+}#T?$OZ4{h!swok96Jsrf#;n@$}S_4?2^c zwkMo9x_+#_@dS)HXC65_C?0HHU|tWG+xp%c>?{y zLyXRrJ=SOsy3m|%bg^2eJo-jYauu_&eZ~Diyf@d^x7b|LII6Obc-R~d{*RVvTg*^9 z^LbWy zC$Mv4BHZ}zJ)uzFYG!iRV!A#d?FrBr>S0OpfG^(_5=|e*#??qyhmB$BN%-ok24qvTIk9FUcY$J z4}6`Qf!3a5;FMgO0o2nR2ZN~?#3o-l>u<;&*}U1{HD{A^FradN*JRlF&fcDH{~hwj z&jX@^%2u$|2HosKfRQ3(U+ulrBwdF2)5>ta^x`YG=X(PldK8)J(HbxVAl&-u$$9>5=uPyct2o$GfvfW>hQekTX3wjBRE zJ-yQ|awlUtdX!7jR8spzD_H_lyjJUsooSJD6VmQMV`+ovBq+KNWOMuSAU{mj#k z-kyJ{!LPwkGRx-fK(j4(6&ADvQ&Npjd)y>s3@r)TGGT=u)~(f^WCsCvORSXG-8Cx# zorPEb3_5V6&l??v zOWgkG{_st?zWNbC%7M+dBmZLN@#6@njX=~%U1BfolnvQ(gmw(xho4^9^ zk}IEtmhl)o$9^*;a-N=d-Y5S0Iktu0bR+)U4V906wAg)eZCn8A!k=D(t8W}~&FB09 zcKcFsgLd)xcvmH*Yvb8{%%M;E@b+H*`YOk__Z{r|F|itdXR{h<_YUpg>^fvLx)-oV zSCgDkTpQ&|-a4iu)5rTU{=8dvlH6b){v8|At}f45NhghY^DXsK7j$>F&^2@otqEI8 zzTTL65@3sW!@=YXUSzm2sG8c*<%^;N2kll!o{6Lh;$+$9#$7bAp z7+ya=zN8PvxXZ7vqPoe9Jkj__*U_%fO-UI2fhcw$hs{UQvC~yHez!Z~@-zV5*_*@f zey>KOks0!z7v6O1qOoSDmvA9l64Z~gZu0ZfTh%mJ;Se4+%BDLCIE%|_qunKAwy)1| zwYJme>gz+JPQ@RSbM)~U6XG;KEu50vK?5w z*-iPqi4wI1LE>~z9%;%4z*BuN4L!zrP!)CF!MiW<0Eh4!ElWr{S3>=w-zaoq7XA^h z4sLK9f5*4_m`;vM^=Aw>cR%s3H{am{n$BuXeWJ!j+DBim@pW|XacjDB_doMbd_?>W zKZFccx`m!4oa3i*>5_VQpdKoTo*1X|j4Ymxx5i7WvvxCFP9=V_lf)oid$pt%UuFMT321R1PDmEI z={wyyBJ2F&(Zg*w>f_DkBKE}#$dRKeavyhoo&_iM7hgx`@Xx39NtgIXH@KBBpKa0a z*_!M9q36xlPMpeCJ+A78t0&a>yb?%9f1;BX=|?>0G1f~~KIJ|5vd7=*v6nXr{I(xe zl|2gLiq34bDVc;39@~4mjNgPf2XvA)1}=)`na*YFQUH!wCkUI93noMKCK?-=UC*o< zD3bEpV<^FFX*DO5R3ri@_p(^kvU-5SV?cYv!CirlS0cu=OnJFY&Ir^#MsK{{okIga zgNfyiZ@=w)gTqVG(32Jab&S82UYO;stG5GU_8HtV%8ogQt9YZBbN)8Cw27Pq%F|Du zU~QSm>Ob8k@&dEh+xUDXe!=JT@$Ql3^_3E;K!j(_zCJ-eMYVZx;apT^Onz72pJa$&an<4r-qq4;>ubnwWfFNgkPR+@hUh+oK|P7zTtZxTa;HwK_g^v4OoofU_JQ0*rTpowH}e!DXuqIE#L)x_R>@ zD+bf$0zlScHBVh!=imE?!WF2>2uP%@ES5=># zL>r!IQe1K>-s}3RTs%Er?rmy3csqHA-7yluT)!6pb@UUS-av7;>Q9E-b-Fne?iI$a zni}Yo*YjuBx!Fzpc+WHOzr+={#fIS|iM7BYIpW)#Y(yA93<&7C=zcefRvSK1g35sV zN}DxW?GcFX7NtW~{9v2JFTvOs0hYG()$60ZeNfWsrS8-`GhJv^UJ0wuYI!riBPr|p zH3+)P4-Yo!4wmHAg5nU{O4n>(AZ677{3R6F;YpMn*?WnDB4G|Mt8OgyHNlL^!DF9n zjvd6{X%4*^%=DdKe`VKda@f4O^B?tlR%PfV9Pkg);kael9mnAf(zwAcl-KVAo&IL; zuH<4IloQE?DU_&5GB+ zEYX2?2@uasCe(eHc)HU{UoM#V!mdpqraw9YtnU(R&MV*vTBs$w@z!^+6z~Lfin_D- zJKm=Xd7PjPPceQI{Lvq8>rxU+e|iL8|0Z@|Z!F=cl5!Q}fw59Sk8#&H+y@G$XNw(z!A9ms z*=E4t3@>}I87KK;iF$=U08d$PUj2*CgX^&y*Dv^v>ELNc=i!DQ?C0neoj7A4U9V33 z;4A*d-}uhkU-}Dw@%AtN(q9bB;>R6SAC5G8wpHhJ)G=O*Wr`w3Cz|+0pBu9WAo=&* zL}c;Fou;iO?09-qJve{*XMFlv{8<0ITq7oKELTU{`JHr3Le`$BczVQ!my&Mj1bN)$ z;$;YUaQRMt06iv5XR86Y(<5?-$9PCyM-=lFU5<18>zDqSJUrrsK=mGeI&=60s|)7vsDErekFXz{>CPS+x|A$kq4g4u|>p*?9Hp0*zg~Jyq;(@@5jM7|+P};UqX8 zDgFh&Qf1m48H#WH!I3ba`~R9-8|be_iX3o|+5J ze^Soy(RA{zpDrie+7_>XMb_Rv51!(NxK$`DZ4>(H99=jxI3A321D@(Eeh=EJIJiH~&En@B^N)EWWG1wPxgt5&BQcZzbR3WARyha$v4b zdU=v9ZpIy+&zG-d^@H_EebgKI_+c|>BIEVc=WES-Bvt4K-y5-mfj)H8feSYhea%7( z@x}JM#=~Qw=F3k+3*Yc|b|I#bEVVeqiwp$IQNNI@H$;y?2%e` zeR>~0aDFX5znZ*X?h(AnDF1-pwn&;!gz6l=nER zur#DJQf#6$BBo!94%tx%LlW4M$fiqAQNYNug&YlGuub6 z`P3`L>YgwWw{LraWJAVphO4IZQLe!F^ai_m{K0&~TWzuON^pqYlYQb@`)w^zmd?ll z@hR}w+&12#pS<`&ww(wV9tE-&QyT<_>KuF*5iFtfRFfyf+R%Z!@LvjgH%UmweL;(Z_9KvDxV<8E_wg!)>T@ChA8ReW|ILb0I z1_8-}r4*R*Ue11-aHn|Vc>;SoqvArWGRr)|)AN-lNT4W+PmI3ak~oF#F)tH1LZn>I zskb*Fq#&*_W;~(13Y;Vio(LcO($7^q%E*D<$E02JI?3Tu56edP_5yv_JBx91vIn<} zT^}XO^lLQ{1)uHTJD6i3pU%6Z!g&+8I~KXilrI{Rorws?#z7Ci_7!=pEa;m}%AaX< z&{aT!WYEb+_;OB0Jx&V0MEj<08sXjET&ZM`Uc%GR)dx~h^OR9T=KE=!`s4{+57gMC*0 z{;$uzPcxl#pi<{Rn*1D8;HRjz!|VLczH@%CyXNxRyWSUIB@-U;)oIZ{m92-Mu!GhO2 z4(O@#E{bUmUN*oct0!AZ{O-bbJ-%adc}-v>_S`tQcs73rmq5LCzu~YT&Dg<*MJJzz zcgW|r(ARHt^+(Qkl=<<4A9%)!qdVuiYp3p2XZ)z%LmXM-oxKyd zkL*_>Uyz0-a$F!0@Y6EZ)jz#mP^nVI#7~*sSM#)EqiOTv>5J)-sqX~XnqP3&KG<~b zDvtf|`P1$Ab?<9F%1*ot3^#L>!D(Cz2=vI7nNTY=Ga zx`3Zxq3=E2WcYClqUoJp@KR+R_Rr&yXS_O-M`!D4eOz{^KjYGq`~<#M#09gXU_3D$ z<)4eeIyOn1Kd)Z%H==x4$Q*-B#7#DMocXo!{orRtu=q7SphNhfsP~w$lpfTNH?oo6 zbCuVx@75Jg zp*kK8Zv5K|s%p>IN>+@gXfTIK1}OA|$>2*wfx zeV+LMS@7-bFI(fMe7g%oGU=MjY;34Yx#Gf2LI}V zbmsrY>u{LORfjD5)AS@vk1kuO!6pv8STK0VJ8&<2cb%V@oztPC2hM8)&m&`6f3ELI zmFnqx_o$>hE zv*(QS>7$tb?jQ7r-V;lWlLKe9r2gMxg!wKyg(kv%ckBZCbxvZIP1C-9(O!XA&nn=T6M?k4mSQsCMH|w$IH8up1;RO zKA}&VZewztO%BG;>T1VVi%;oSy{#?@vkB+a=QkC8Vg>8StUn*%O4eYrI@*W@_$Dia zH@+C-iksyQ(x%;bnLn-(o(wOK6P9;)!|J$uUvy3!B9TkR6J8oco2`dG3eF%K2`QfS$47h7!PK0#*{`U>Pwu=>C~5Gkmcbf zL|gLMbxgzPHzQnPC0#rWPl0Dp5RCa8$kR;}@mykua6M9^Org7OLSnVi%S`~yXdjdO z2&O`4%M!+1ZxKO_6)*-u&o|Go36em=@k)M7X%{ReygMu_rmT?JV+b*wGQvq)f;LbH zCJZ{3}ZM)DX{{NCvv7600ga* zZZKS|ijChaEnkv`abJ9&(&t2ck3Q`;`1jSSjI|#uGVWV-&fQ!}9W9(Zx!h}BfsSsS zJBclWPzsFqc+vUE>iDjsZ}mS#zn`mWJd0X^J*N|G`roGg>5@VHkf0r|z`Hu(v&nV( z>dhBk+j>@>m0azuY)_TAz=vzXEX&=Vb!Ez*Eh!}#c_wjhyqp2Xr>E$7^h+$g^fDb~ z+?-MaML$@R|K7Q(thj4nsW({@>xz1L%{vR@VZ5$ksyL?#AJ_27f#a1vC5m>Jr;|?W ze+M1M&UZSww+X`f^@&HS@3`-(?0N?@=Pve+)Vs^&ets3JceTHxcI?QPdtnv|+$WR! zcSu~-E*Pg``q+sJ!tTZe1kbM55~qeKb${@T{wv6`3BQ$fE{G9b1KZ!q1+-76tfqQ7 zxk)PGxwj9}z0Y{x6Swyi=0-f-gk2YOSL)l~e!-e_8< zCaRpaWc!&c)Gnvb&s+&9wzdH@gxxvueE~uGdTsD17>1W1``ym}v}5!2HM#{T`5ON8 zZu@L@D-Wwfh61ERJ^n{n_Cs^vWTFda1swI=`NFLEH$L$$H$ELM20cY^#+TQyG3LKvcLmp`3-8M|HyKX4T!yff)fmf=F*k6%32qf0#7z+aoXU%QKb zaKJc|Ic@mClLT^YJQQdJXcNQEVGB55y6(?0T$S}z9YwnX?@VH^wl&Wd_?*VbR`c># zQ##3ov^%J^y=>N)r3GC$lS?=YG8MF&!!9I`MMBSXvD7y1C z*`cBEjl9&o+Uhd`*Vo4K$%mfSzVoi*l!QxKx$}6!pX&iP>A@y*ow-&b(Z|UV|62B6 z#p%`|75~GdYp_@F)1P9jz5?nqd4vN!I$YDU>*FKas-3-ewkdVT&XX7Tbma7N^esT| z;M#RKPG9@f$9P;nXTl!Z@f<98qnW-bmtF!OfZrY1#XtCa{Pk?S>X$C=MFNrNrs8xv z*h^mBaj?1`FZr~iU-)!v;P6Wl_^Xc9C!27Ehwu0TAFpnQGsd69`J1<|{sq6p zi62$KK7EGB3f_gMe--=;>ccwv*(wS$Nk^V!H+*QaBvR+lj_-8QwR4?)(A)UVpVaQ) zd}Mp|w@&Z>;5KCX?)qEZZQiuz4p%>;Il167TDOHo#~U~M#0LEK2@kxxCX~})dXA5R z8-4JB1d$x+^(-J(Kt&l>f@4y#FZc7SKNw-i#ybxmyuFGeH=nQ7vs=YrmBU@TUn!L8` z_|b2;@JF+eF0TK{+6|^|IH8eG=o8Pjf~Ee*`OtIt>kU}sKi@(>>W7@nZDudw6OwBJ zjzaE19KKcVOj4We+{Y?RxYr|Bg^wg#Jk#HNLdOSkT_gi~W869XrSt6j_zu^U%LnrB z;%7#o`HdPXBCsCb#zIdtO<+&fEF=_xHT$A+UX^TVAp-<=+I9I5ZZyL7f9vZz4P>b2YZ zo_eNL{V(5MsV@|JL*LQaJ`+Eh%nM)X$*d<^@n#iP%TzFCy7}ni@U9ay6k^bSIy-(~ zP<(m1C)UX3v0{cx2kaa5^b_{%R{!ji#UIq7!e+&I=cWaC%cIcu0HIxy6)f`sd?7mp zU$0Mb9bQR@T4ZvK)nqa|;5mY^*u+YxVA&?&)e>gro=d_HS{UJRedy~dr(gUz`i;R$ zn#Hfh`q^k1r2MZqi_bM5DA&@>u_fG+IlFkWr?%ee&6e{q0mt))`}*Q#=N@@1dh-Vo zd~!16Y?a&es5#R5OCKZw#S)L(E8+I~%XJjexKDXvut|7oI43lR8d5T6Z`q`M%9!HC zG+DCCkyu4zVy_s8t?tp5@^QYvE0%~w-!?EdaeE`CZX%^#cSW>Y!lSyTg9L5`m5HFh zVamZsf^A^xN=X4Lp)mB+w=ukouJTBk&MhZ4a7P2FIQUkyC)_^__8-v-TYKqgDEf67YH)jY2b;D;VZnAJtbsZ$A+({eXjJMoq~V-1VtArc>ITaATAN z(*)TdjI7#a+%`s6_Y|3NK?&!r4%*KZ_|K^8FU;0{%gx~uj7?Z6SoIGUwTq4#Rm17d zMlUBFiRW5%*Y&Ij{P0a*>T0^;IO3{fK!S^8RQ$nqi`;Jd5<@0@x&?0Ejem+M@IdILu=DC@5w zeI^do=()Qp9vk$1YFIU}^|5pP^XcC%#eT){__2#SH67a^uI^-YU@{fUTwiIhu_x72 z?!G1$dURH(C3DEshRl%sNhNp-XdzXRxOzQUul332eDJ+b_UA6?K@!aZQha7d-biR~ zzW2V@-Jmva?=fzYo2dW*KmbWZK~%)nhb?LJcnKRezz4852`D~Lx!#E58XYt!&8K!v zPypvExi!5^uh4CUsN(TyG7vCfF53ZX*Q$5X$+z)6R{-R?eoPGTUEou^}#=qv0Gp8(n9y6^ksV>^EOz7o{LkxUHk za2zk{2R@Hi$E50omWg}L-~I$u{gjf$SKk;1j)wSH^OZAE>#%kc_>kjXHI8955d0Yb zl&g(Te+nDhI9lIU>?%oQHaA(rlOL;|JIfb-Y(hOg`#g3T{JTG-W7_ItV?5j;Uz_cV z-LXJyV+K4cbZZH!>a4(VN^t)UfWS*o+%X?jkNw4;yUcy+XcMiDbvZo_mwJp&9Xoq? z7m|~K;2-}MG{s6Z9;L6Jt@OzB_%F;n^7a&QJKZB0)fE zg!Kw;dNNsdO$=q}e~0OsUV|G*cc9_oCZFQwokG8K$VT5>jBu{+;@{^V-LNW0f09%D z*8D~N;uqfFI_{DK{oc){`VstlGu0;0U4JZ}HYtRni95NNtch_JOvm3nreV+;85s3r z7qpzQtvDc`{%G`ItGH<6VL*2CF6MxA(GFtO-gU0;(MK(ZYsZr0rDHda?|z|ngHe6udTbRG z`0iYDgu&Mj*@V;8$E7n-xpVrXRVJiwc>&bMl=L)P49NO22A(8rxYdRJr#tcf*a&{} zE%5;g^EHQO)7N0V+1+0D4aaG5pKv-n!&7>M`S76|;5azr5;$;G$KT;Aco${0s=4!< zSKRG`ejdr+$J@>?evT*DHTpYPz33c%eSfEq=%`F@BA&Ow!|RV<1jo3p&hg8K_W8`t z;~(8#Yid)GSeSlY=sTBwfT3@AO&`P8Id*6N920Igi{>xqZw>%Bj3*te-%!9?MXaJP z`qtTO4ZJAnZ%Lr8jUN1EzkE%f4_~km81U6m7RUA}7CSiB{>nC0<j zFbBdfH}sx*(oM8G9Ng_Sdhi;rpzCV=P%J~5cGq}<2FJFAiTe6I4Q8WS+}mF^2v`2~ znq#67TjidY)G4ys}47M}Kwugv$7k-r?!BYWLDRJU?8*=`pSE(Y*K|9ZBv> zqJ%F!m8GLI{5kbk7yR8sN@wQh^&4)+GS`-HTRr&ToyXU^VVhp;Nuaj#u>bVq#o?0P zek2GbK;u^CnGTEB#@67KM6^LWe6R6$TY+?=AnY{%7 zzrx@A_RV1M1(#iidf)R0@eR%BAcJP;argdcV{K+WUDx*b=42f_b0L17ebus7l2&8j zcnO!sJu~~*N$On zvU$wWUF76b}w{ijxKR z_C?Qu_UIh)>g#X~Zj|Uu9;-a(Bfj7~_c$XZ^;7guVBj^pKaOjS_Iuy<_ zPsh7M!O=tuUc-}&Ql$nHbOwVmgonXpO5W#7Wuvboo&o30l5H2R0^hT#s!8&Z7d2qm zZ)Kdz1_xJvl8-Zt5QfijGRFY!7J`A}?-cov7Jk7(ds@E0Xai<^p!Jnaf;wE*IA^v; z9pl4-5be6ACPRm}VDqe20VBTSWk^qpI-cX9NiNpX^}vj`)9J2lGD3KjWs}ECumu;b z3Sp!f{$p(lZqq*d3z3Us8-;s}?3I#Jk`4xh1+3w$Keoc@KX}iB9NL?=kH7fZ?S(e_ zej>Slu;dk9ctfCM$1CZt5Y)>Rw!a8Oui_Z(_|~Cd0MDGBe8{N3Ue1}UPXHyM#gVGN zwtX1fC1HHO23(hw$>kjGKVIX(Gy#x14p)`Ib*^%_cjTkq*nKVyS3u~}g@r7w>MzSt{ooflwr>h_*CjF-UDMv_}#WbYJ# z+jGx7e|z8iy*%Pfq84!TR}pgFPIurUYJS&%kWMY=434|u$6wN)b63KE;@ov!JN9&v zSZ5hHnF}h&$OKbi&zCNc!Gh8b3_|!hUld#u9X`rAco^88mXN=f1zrfRPds5?a8?Ay zu3y2NbH)UEEO{V#wL$d1UY)q}SGqvsK zJfh}YyfPt5B$uxpy7k#~eb;xVu$J>L;~gCN+k9y}af}Xf;>&&ScLl8R`h2Y(zZLTL z;&3v-$MIsU>gti(2?CDB!-IeGwyH~>XTl&U1m-;H_KJ|mQ)lDs;PP|T2%i%eLy$ZV zqQt&U0a_#OP!-4k^~v;3 z20ht0g|ByCrac@7ss?wE`*i0N4&dR``qv;WzE+g_CZ>CbQ^9sFTUXym69+avY|u%> zXrUuZ{uuu?zIS}_-ndK;j=wl@lfD*M2QT2GfALj&i?SP!BG7x__>v|2`f`GPtxq@a z_=<1~7s2z7SM+JpsxR=hck^JpH1>7uvEzWPZ#Yli?lRkiI?UljekXZIwwmC5J@jcM zuN7$5U1K(5Uy>iMpmw|ruS*~114BnbhTgJZywC^S#Tq`(O}U`odC!MmF*Lmye({Fi zJ_+LRt2#JLi>x$7Ke{gcn60=H0CoA7gfKr1=5#qo>Ysj2YzaD;;vMxU#%{KRFS|DJ zUEi@}eGd<|cl2YpbWS_5B7XD9{L4EsCmS5O=-{~z9RXiE*R;9t$FFOQ;iHU+Y-#cE z>8`ojnOcXZjm#Iu&oxfhIU#Hw*B^BroOf#_{1}6)IpJzWE%T zDCrj;uRqt!CB)==w9xnZ@HgL!-oV0fwt;^pa@D)=aUQ&jcUDxu$B*;Mk%7bo}KMka8_ukn57 z==j0ib;Xl9e1~$zIUUonb6so_vFZNZZ&mM-CkuWZURCu+7xBdx$DvsbHh8Y%AvvR; z-cL@|HJ3Ecfu~-{O_{G2YvvBYz{TA>OpbNtOYOo}-yM_H6018Wc9#5VPM91K5cSalFSzvB;9Kb^wCgw% z??ndD+K(8*4Gwc8+eU289|+$SVz3?076jyj@ywrop7s{+=>q%4SN^HR88v#mry*W! zjyAb>Oa^=UCcd40vExs1`eb#NJ^Ej3zv?qzvsx>@g&*I6Rx!%_V?5B8?{PAnNj{z+ zxX<&h6?-F~c33#SlDs5)9^Jy9=qDfNinSE|Eg2O4>pPq@o#kH>-rvTNlvYrYoPH@4 z6and&h>A#ygdhw_mG0a|isTfeV;}+|F+zH5bf<_kqZ>xE-p%j9{Rf=$=$zN<6W8^= zwqkmM5ne92@Yu9k-y9ArXnu|Nx_BC=CebZ5Nei7TBs*gEv(4t|`1Q%42<>Hc-rZNkkF9`ZL+&z}OUbu6At z8b4b%7JqWT4&hEpn!OV?k@I@syQ?SLzjS73?f4U@ zTezx;#M-^yQ~fWZvZg6iv-marv#QINBkrhm3ujj<-Dr1jWi>$5sq+3ww-WT-xqDe! zx7o&n-u=YQy>8IZ`eGVxe-oy5H0Y7fwy(11ob9!%-vVG{U}WCO^&B2w2fs+Qt`jIf?hGx^8GjvZZ!03 zE1L{$idL2nR&fEo`V_bAd9r?IoDPf>D0R)^E;fd;Fh zyq$LUi|x}BMXyfeEB0@{dGO|Y{B7Cir*nI^EWM^t#!3Uc&nJ6>T>TS|IVJ_lulwM{ zzKUt;x_y4!+{akRKs{)Hut{z&j%53NQK>VSJ&6{&;bI~9lf3w}-kDD*gsmd%;neCw zCIsg*{wx|6`7xb;`=rks0MuGOxQw0yCdv;>ZrNn;3TtQWC0^R-BRopyXKR@c2a|fm zt);f`>w9Wg&mMCbjfXcOq8{fB#=Zo>g@dIZ(SS^e)hI59i1X7m2$=45=azGv;Qs06 z=kJ^cMZhtbfAc@zDbQp^kn;GoQoCtN+el-n&7OEp#6Sy$!Pv_60jX^g@ykqbGG%Ez zN+rEb>{kvJv+DONm(YAAdplI(Mc{o%=Acz+-oZ*2S2X-ZMgPit+t;aA2g|P{@)my{ zvjTh<-;0j%uI>~-7RK$u4c6@$UYh2ktY~*qTnOay-k@p}NNi&}fbFD<2h;*yk9PUD zIjl>3mlCp6R{k#p$$yDa3-;uwZ&ECtmLVWJU#5vzk+ArEyaOhv#w&^XnvmI=@jBZk zMiAEg;^*FHOU(<<(B52%&n2B(v1U)$TorzM-~l1E_6M2+c?P~Q$~>v4X?;u>4S*hH;UkkO|)mbYZpKS}Nl zM?F(!aUP10fz_;ecMk+Dh0D0L z1JG3tE`PPu(Z)UZw&B$EkqwK`@+p@&Tj|kz$o3ack3}pZG(;foA47$esb;C>_?Q;T zY&VZxZ6ey!W94miqjK>EU&lZK&szA7DpIPk*|B4!0Pc@$VmYTnz-9zmN=-nx*TjU; zv7a(T5dkpZ-BTPRC!N8|79IuhqJ11F)@A9E@;46g@f~OXiak}^rpst@BGzD zWz{b8zy{#v+A?GjWIN5jHdXG7gwi&1^tUIIRy``XgJfJJXoHhI8d`()@mb;dIl+9O znOn{JbvlXRGnII)R`k-hy)i!OCmm*x2drNR^+)O9eBR0CP35gc6}4Or`Aa(Y&0j29 zShbX&Ki|F=@VR38;99Tt28@zBMQ{B$N_%LoO!h<1#ug~0>KaAIB^hf2$Q2=p5{`n%%Kl8xQdFp;yEVdV)dPy+#`>vs;zBav6swZwtf5TNSl}QlW;B^ zJ5x2ebxh7)=|F^V0n7r=eXHawr!7HP;(BX8l<;H=nobtO6c!)}vnUB8O#&AF; z#dTM!HL7{)t)%a2EO02vap#~k?!6+C2KFv}VB!{ykp)vo|JnEPH_v2Fa4jc`>c#Su zcH#c*=EHUCG$hHT;)A+{U~*8MK6Qv+2$6UQCvW;4hD!^R7N2*k@T_M!MjkJ*;G?m- zB?RKwY*?6<{Tka0Tb2FT7J=0iNa*C2c)P|hEX|h)F(_?vtG%WktFf-o5vUOSt4Z%) zGv&EL{6(vu+<)<`Y^y><&e43xW)cUqmXy&O`K+B9iWzN^DV^ zl;qzOX$@<2EiX>LskC-CiaYzqSeY>W5#AlF+_uqTK|L{i2e9`aDnV31ESW{2UFIDM zrFH^eT~Z7SYhZPMByGdRIolZ9Hy2>u-HaD9(D2m%pjr6IcTc2V-DPWa>r!BWY>~kHnhkxP3IO0IV0nI zeV(Q8!-V0gMxQEkZUfbAoFDPXMRdOzciONBdevDFD&zP$^NCR_pVy0PW?vU=HQeXX zv%QvYw3t6=NORaa#@1@>?z5@B*~=7uw0w6drI!0MYN5JaJh&_&Vs=3%iMIUX|D5G^ z=WHB8rludS?Sva&*0+nv z68K)2HxsH^!cI9G@a%bUfYR29mFY-O@Obn&D50@$xf(U*EZ)rrk#U5orDKqu7oQ8imVG8vURwZn~6CIaZbBk0aE1^NQ8T@r7vrU z&(|Ka_&ne?kZ+)OmMKkCzY9kt79fl!>-i*=@8Sgva29LT3ImG>dtRfX67ZJ-FW!P( zrRe^<&GwJ;vLLpH_VpSq-8g7?3C;peqyE)pA*3_sXXwA-MY-3+9*wNdl?~YoAl$Q* zm{IOv9r`ye9thrzGYgoa8gbz~EeCQn{bEUe7NRU#b;%uh?w`uP)BlENQPngXI|<#; zUHny-@_G{Q58i)Z5&%OH@hX3#gZ8T4uJN^kSx+cdZLI|Vin!$D0hP^2?}~X(AGYp} z<$-&V?qJ>O3CS6cNb8l2-b*;VlL{EZu!A;`00h%zQ3HG<_C5 zyaK_x%6)_A?rwfpPI}u<;Eg|MCg~}iwxU{<-evSInTn zWfJc<4RJETV+R8^=3hI+0dGvg+%FsXCvBa(gn$phwflU~;P7ECmkG=N&aIv3N>oHn z&;O}OWEKhl3{}X3bx)i^o_sh-Zli#U^{DoKF?vF!^=Xh zz^-f1DDfLI2yo7vFP4yQ9<_IG{td+RqR;L z1VJ^1wN&r46h_56OZDl?j_9$B!pfDHZYV`gtVTNGc0m-P3Oh;V?SQ|;p4OTR!_`qdk9JfBc!%|6 zuG{5x0$Ap+HHD~Sn$y42XiwklS`oP5+*^6vCr_SDWt#9#TRpmbbS01=sMN+BaqxMi zdA+R4%#z!(r|GdUAK$lqO4s2QD;7K*FnKi#zR<#k0a!R3;B$ha-v&Hp)Sw zP6+jrjh;Bbs513he7y=(G*smH!PEVZGBZB4+I<1(R99Ouu^L(ruXSfa3)TDJ{66dk z;5YTDm*?@B0Cu0`<3O{n>0!rB{PH<&3`{CQbsBcCC%0?uZmL)(Us6`tTUH;t`=F2- za+T;27*l=k=#5j?g?ZtuyFleo%}*fs7xZ_J!JbgJ@m3*T|XiVf|n_}#X$;#BUV)ECtfCCQUu=Hqx~!EaZMDny0M(nT6$0~2<5^Te|e?mAwy;#x* zD<|wnO>|9RcTlmG&cmfPEp5YgD?tXN&JCyAk2f6anMMZOhk#wtjICV__LXOD%3JS4 z=1a&bWIn(l@ubI0O?h4$^e16Qbv`rRf0;C!tGKnCqN|eSvEu6o`}89Wn@Gpc?vMYA z(VWfJ7eM=rl}bIU4#g-abj7aJ!>l8Q++F7ySD=UQ6Nvt#DR6uVK(!%24~>xKeH#L= zcq&^_8Ykfq#sd`|D;_qVo_P8YdBU{d)5+7|=Lu<@W@9Tes-+Y96%*p!Qr`O(u&Gw{ z$8;eI1|e78^HL(D?lHw-6kpl7Pq3F9-m%u(_hDxDw}#hY!>0q0AlXQ8S!bX0 zk8}-g7}s+)tp2UTUs3tTtBRnlAM)S#mLnyJ1ke3gEr}G_^i?hDuH^nwq^K93syZ!O z$~+UBh5Rp+Qz-aKGA!v8tOSyf1i2dpVXV+Sq@35~uL&aq#dyeV6DX7JBA^qZX|+n$k7$ z@VV{&H<H5dtF$a zpp47r%Uy?z>F=cj-?^MH&WH2j)N^->(oerObd*HCW-IzatD&=hI>P*AI$2EtbxR~f zZG-K`>(M75d2MFkr}{AQXMp*0=g!E|Nh_8R)7}hKE5PunT=YEi20dbB;3FLB&9+qc zDu+(nQ3>+u#}`=}UV&=}F_Tu-E`}=~dW4dXZo(2y%CAH$(Ux)41{P^u2ApVhpDlZu zaT_SQGxu)5gDX^K+~-hKA__>cc*jjvQfB^gjw)8Th&r%;82GO$@){m!=@myo&ili0 zzSnVgSy`S%VjqA_crYioFL(KiBvLveYdsW|<}_5175goMiEpg{`-@Py+Oa$X0aK^% zP4H&f;El!LrI9fHSJ!S`+p9R^aUBMcY4KNbS7P>mGjf8ryN7*X*5A@UdIa{f^zq3W z(+yvwC!dC$tEVG^TeK|I&q5%G#jA+FDglfj@Cm#ly60GGqJtmC73?iC_cu8&NJ)j5 ze0vA4Y$~a2lUECxv%It{ zbNc(PoYgz5OX+QhD}%-{&xAd7cX#iE#G+3Bg;VFnxPkf*#+RLwf!pqRiW5&xb9j?@ zO~%-o80~k7vYt3*udW(9*o+&OWt21KrXP#AKn~)MmP6g^W(K&5cX&N#9bx6&8=%l7 z)jmatR+u;;qiTXj>UY|T+qcSsij}DAbwO5eAIAV6Y3pMp#;KjF$40ZW=FG3bQR<7J zWn{-=f6@)M(+cTQ=!K$hiTDb4j*Dg}!M z|8oMb?{xsTI_gKL;UjR}Lke!dXK?BZV&ZI9T;%S1fF>mlt?)oW{{G{N4&|=#G!SI# z?3}WXVTIMZ0VquBWgA;888u%M{PFI;?}W_YW@-V1P0o4L29`8GYe4=0;@b`Af1C&N z>$$F-XYRowW}<#p1v~xJfc7P7QL3Q!{zB)UatTBfmQ0!T59#sWJ&r@;#OF|}#Ua{+ zy`q$WwyECY>MnW)ir~SC>`a=-F7oE`p_{Um1AjRPH%B*x#qVPqFO~<;^F87+)(Lv% zgn=waLznlC)v3ofD!;$!R6t+7f`I2DYnnx;{#g2E>$Jzo>3Y;D{nBrym=gc#tydRp z(V^}M-SvjxdL-+r`;4wvTz|aTh0WXbuJanR4n6=m`~HsH7v|5Zd?NXEFiB1=lYK7m zDduLIcY-vO=uY071(JZo=<|T`0kIpn(@E+KNT&y~c%})&X&&DN;hup!h~K3s%d^qy zC;1+$J4pvdiH1P0Ia8K`4IGa;7ihTPwU+*Yh3yP}^NlJGV10nz{_tc4K*a5-pjTAf zF{f4-U*aMYFo1|0AtGltAe4;-b@Dh+P2GV9e@D6tdb&Z$nvDjMmS%ZE4tWxsaN0cd zzkq&WJ%^&3kBojBa^xm^vx`0wgW-Oua#3Bvkt<`#$a^*Q>V1p|=9JxQK{j3&tgz{h zM8Hc(8sslfdPA)ISZ(xH&vK+kE~;3C1ujGB2|_J0p{T<3u#>tj7?h;t28SfleXd^dF%wpia9iKp*XI44j3>E8uqUnZ=nykgoLdj+kqgxCdY3p_FHNfISm+ z@lJQM&Dfr3jf2;N8SLrQ2I*zMQ==f?6UM~mU_gSHf0npmQ*Z`+f9lumBXvmMudS60 zO`tz-4!&-(M@!ZB0e>OJDkAOYlN?cSxI&;KFil7x7voUQ-kf0cPDxjwgF4?-lcMWl zp3M*G_m%w60s79(5ny?Iy|V6Ql{1gtHqP>{TQMTeK*b+F-X(1%%q{t;fWB8Wj#Z)I zg^d-at%Y#g6MC>}w+`H49obb2APt3;4_!CwV8wP;Y&gDR&(yJGxI`hnd;B0bK9Qni zz%)DS_JW8K%j#J6xDS`xQ!$JwW@yu`b>1&W<_ z+B<${ALGuTrbk-o2pG<4UEfSpXByYuTTWTc<0s*8j>o&h`^!Fd=5GV$T#KhXO4%aX z*0(~_j7HBVEiNw?0k0+dGlZ@;I7hfZ!9Af^hE?2o*-F8A@k>-f% zac-BYDN7@7p8Mg^o7Y~;2tze>@!s*-hAO3R5aC<;g~s;69Cr14jRYTq=Xo*Y+6-J* zw0M(7)AbSCt;MAnaE*Mo=uQ^{{y*T2$pcT$nNhIc#8gy{`jv@Kq%~G!Z{J&6POi6@I<%LVsdOn6>31F~!Buxj95Ppo zsBRX9F1bAuq#l^7YwQhavzID>VRR?er`hxoV?|y6Zs@~zqF$lw5kbl5$6CK#Y z&+8=L>W8h=+KN9lg$~~rJ+4z=DS6BMu$zTHd0x-MR(=ryywu_$r=v3ZMVVm?kZ07l#%{qqE@Z|YZr_SuvRrxVJQ}5J1 zmxvDgLPYRlth@hwW}A~@F~Y_qTKe9;jO2^0IrTm!K*C zL?>-TZvoYeKV`j@wyKX-YZ72JeXk*)QtumVQ<#7vh>t4x08B z|Lq5je;buHx2;NJDlW8fzI!{YbElU+v1qLlt4sSNzGi!w?DBube>||(gs1H6BobxP z;a(8&Xy_ghx&78Pq+%|tQC%9%x}fhv`EJ?cb9`j^wsVC+^94!Ib zQ!g9^Hs$BtD+uN*<|`*{K1psDY_Z zrC$HU5{oD`(II7hO`<5F@=sEo0fNf-3xZT#l0oY`k0RmK&pgKxg86de657u!t1UGK zX}S>aJtW7F*Uc^_9q$^{SB*CmTJ2ssG%yT2RchxPvU(z0H0V}mKWqQYFx_CMKfHYV z0Ir$ew#(N!C1J(&fjlE$>G`#U$=|)0}%>AUc^EWQBDiJbfrQO7jgi> zVhR54n6q+>A5jH!?B4?$AtOgx$YoO0H}zB^lmPeL$GWf)Nm97*Sp$5@#rYWo(V^ae z*joHr9t6t4cv<6KGXZlkCjws~GB3bpA}P9 z;YvZ4vzRj#>K>OC=#lc6w`d&XR3T)Xi^uI`t0%oFulf+Cw^;CWG;WJCq?6~Y>f~qS z2#m6*n>qD3DT@Fc%#Df%;O*+Msr+&jV9tIg6{2blcJ>UYmjaP;1TP1)}`9hz%Fo!-fa z;L1>`kdDU242~ftMs(1e^hesA0 zK$b*m^!Y0%K~_x=!H#n7Q%g)=`;=1|J=)ETQ7W?;S-0%5L8yyaG=(v&-&-Er>ON3$ z;zTXQR}r?H9)@?g^PiJ=F{1;McLTtk|9q22wuAm#ZO<@piU?rH1%GLsVpZOb&1sKD zu2WU~7jthCUS2WaIRQJdSpc?;J)E!}yV0~UQu3Tz?jY~XkcBd8}$@Bn=?!6yG?+r2C|o?77|Z8QSJQ15XdR7|y4AbuIHZ zw`vdf#J94S854HKS1fzn5_4Wf>&Vx{c~mHfJnn+pPB%!K>zi<(HgE(Ejw!C|X8A-j zD;YmmOhk$L{PDLxKD9dmkS;$b;DxZWRFyYzV2d$FEDax>h)^ix!yLFESz^+x-%}Sw zYX;fJ4?kait#CBE@lx#iuN+zQCm24Vaqv1i_F2M^PtWN9HGgD^5&)Z>_D@yS&;FRW zC*4fw_Y*^}evGRx|gFFzd|G847)zU(l zn^ToQuiozbA=YDV%4`|B6)!ec!@w!(^Njx?s3X`9%;M= z`=K;3o9K=v#$}K;8mor+rb@egof`RMWH8Xwpwf(BD3d)^z zR*K&HWts1iuAfI-czNY0Idb~`Sp{e$JLuENgc<0;&7vPN&PrGJ&Nl&{YVI+ANtRZR z4XxsJ8jh5;`r~j}=6NME0HZ6S`pSRNn#FIaYf8u`jgon#1gmHEZG9VYTiSL9l-eBG zUNA40kR%+LBzg1uROk@>`v_Cq$Ca6DKU4<$wJkhnoTl@=Jth!M>dDi&$5s!&)MmW6 zsd$G6Ss^2IniAfpp8Mp31^aR~4HLAoQblYLcM zeM3#Zr1W^4V!DzoouS8rV$NaT^QXWttQ0=uueg+Ik8td-obMxdvE+0LpNrz1>jr0y zjL6tOOD2l;`mcfGb%fZRWZ9W(q>Lp$-6ERZ3TybPv{P2g<&*hKSFVj)woS^8MB0JB zB(oQlf19%UZKFQ%Vg(l6A^b}OKIxU!0cZtT!}^sdb}l}*ptMqf;y3UTFw+x}B@*S=*IG2rssayUAzcBCe7?1@k_;}J^m!YV|ub(s= zvoy{Hg-V01vaG5Fo5G;@n~>Y>xtk1pAtikaVFnh?=J08JYmJ14@X$|i%VBcAu>mkR zc)jIt#h8WPgnEQO?!!C5HWt@YKb4Zw#P{UQ3__=srS+3 zvw6(vJdx-PT_2f;tRV=5S?U=aU(AUJw{sA(9xIn3mjE49FA{ZDsIz;PR3h3djBEtw z?D4hxh+<_25q+tD_N1tV?k(gn%sG=71~9P+Sw2b_ZzGVm5%_JmYES@g9VF@F_ci$5(6Sqt&yxrx^FT>wS&$WX>+iemYiX1tP!O>Riiav>fL9Rs z?pZ9AlhSc`+Dtj~pC^&0fyYkn=2Lym0D_-e1^sl1aJFYaIt1di`wD<~af(j>*mZ(0kWZXs z-gRaIBAe8slSmXqA2k|^iw2gIUSv(u)x*z^DUDep?$kQ!$R38Q22{sPZ~t$=)*7Lul-5V4(9dwgq{1?F)Qkb2b8D2b=-mlWA`S>0Lb3K z)z1b3%eye9$KAJG?MT9`=Gx2pPE%jXzY!eVmvnH^M? zEBz$nzHb7X0%hpWUoNNsP_5OAch$Y8g?f6Qw(+C%Lfe?mJO8xtTBSn>Y6_{n`nB8E?XBnJ{(=!B(~nQAk1aN0b3b;kXQs6(+zig7 zB~cQ0iy8zKibFrd@%)J;+{pPNL0Z|GXZ{@TF({N5hh5k9^^pp8 z{y33Rz?m;Mf0bL1UskAmWad6TAZ=t=^oEc1(dHu6U@E5-oN00z25o9`-rL?z5TtLq zG#&NA&_}=l^eiFo7NeYv`mnuYQhJR2L*?!aX?+>Iu2_bFqb;qbO!rl8J>9=~l0#yT zlJ00czVa;o^PNX03$;EblOz=SSk>Lc4DB9>AxzfH2k$pJHE-l@ED&G&t3-&cNgUe; zNF=i@vTml-_bu`1my3^V(at9`^2pG3e?)lgm;MO{cbu2hfEd|fe*N_OyjgYi2Jxz^ zQ9WC`5i_qHTH{JK2ImiTrrSq*%d)vMq#rb_RB`4D^u`r%2VOvg0`39oGfkenapOe} zS#S@2A7HA6N?Lu_JbB*S$FHg|U7=qg({q-i>Wj1+B%ma`1>&Qs9$PYal`(R&tWV@ht&2aPXd$~4Y8D6DAI5Q+75`w$|oF3$ck z>?{yhdx)Vl?6OT)Nhy%PcOI4?24M0 z)n8ZY`u`fOU;6eG*P8bw-pGk&>>lnnBxglQoPNHgv2ZHa{iWqX(VU}5Z2>L!+TR-y zk*KQvt^?JVnfkBnO=t%mf7N*KK*Mw+X*Rb)CMkG{{oR8>0Yu9g<-WuuQv2m4>LQ8~ z$mm`o_%iXm(I_739Y5N5!bU!9I7lja8SnNr+NgKyN38*Itei0*rAFwnnZ|+5EuYZU zdi|F&i)qJ>I=Ssh;-5WTI01vRxPmmPV(uvPeH{mm?$)AAm%m^cSvL+TGp9G5b?*QX z|NR_z49flR4MZYsq>ezu-1}=>67E=eDhfJW@ICap4D98&@)Lr&*-g4uQj2PC-ehWXX)#MOyZ>qw$s6ilcW?N`>E4nXD=8`j9{!gg~bM zeY5mN1sNsZY)=33Uq3}GVX+_O70ZQtj*m|v`+L{CP(}SJd@k}K;q`$kezQYgvm`Y+P`mUwTZ^{W zg(iJTbkCz_k4hyc&u$Gr4b{}7i#zcs88@?^St=Bm@^`xTh>SYA5ae$#_ACJk4S{Oz zG-59ITb@Kr8?O%@6*wG0-bM)uqXIgbhwma@8mtG79= zPy}9(RrL0x`a#=#?CHX}m|?^Q`<2KF&i+?o11tbsE0aCrRP&kSxhsa^IsiQfQPpy^5LqyH$$_%jj=T2t{6xFnzHbghEd`F= z`aTV^3_7tBY9ZmMXZ5V^*{wP<-fI%6=hW?l^Y1$;1?nlThPMGCQ7 z9~Rh}XdS#aVf70C#~sr5ePNc%CgtF)c!88WumV58t+nMh+kAVYWN(W&DVHLqt|3VE z7<7ntxHokiM%_HBPJ<2{C8ePP0x7Jy&B$XxY;4(rFXH(|ix;Tm=p;PD&G z=q-3g_@4o5%ErC4^JWY=&A9^Q*a!`eFmsw-;-~cS6G`pV3Pr!JBQkUkA^$mmDtWOw z>My-;`Ylxrc*Ci4XY*(Z07`EEPi1l>0YaU)C?+%b0qp;hmO6?TG(f(bW7`Y=jjayPh zp|{|u5BRSDie=73Z3=kk95QlrWQLS{G})7#5MnhEO4NcJ7Yy016N4AX3(N1H-4 z;)0BQt)qhkt|KpnPqF53snjh!qNu||R{dBx!k9-+WQ19(6fEJ7trr>VRQtZrVYUP~ zX6o?z0yJ4F_4>Hg5gYBm0RKf++Ia&d!@pIv+T&$&cTV2Ew@bDI1bqkUHmhvP+|tGT z1YV=>1-$(WAD4>~bI$5sr>R|j_(Uy{HN-UALUrx*LRH88nfKa}O;_QmsH{a(p}tS< z*_Vv1xLOPiZ}yS$rf-o^;+{&9JO5^1gucgS!+(ZgVe?bgo zqVZ@=Lns{a7L1uob3a>&v$7;d_3PnYiQGz3Z#=4Arcc(hj(ut9LZj?)*j6Up(5h#Z zb3lVI5!&KXP53iFT|GQ)I(p_?;=SVJix5et`9YAZ3eO7FalLMHx2MMqljGdu8j>1M zC+o`N^Qt!ThCQtm{R@eKMvyh5jjL({z9X(puFx!?A4@}58Q8udaE$Ox(pq`u*QUs! z_8TtHfB<{AUy-FP*drOP$jJJ|b6ap8;AgGp3a*F9TiodRhEQe5m5BgtenYb}K9bW@L%2zNoI3jM?B9P{c5#IKr0f;2C!0X!xi9|ZFj9?aj>aj~9cOF7 zXvTM?{Wo15lOaty?F-x>?%lWU*1}(0UWtwdymu1biM>6G(*E%v0{G&Cq+Q@Wc;mHq zYJ%oAT;GQ_KNJqnRFE~~(At-udx&iODf&DMKA+KM^uI5*`1!fV(!7RoCu{EahX25+ z>OWb_Dyy@YXOYRVF3cpq_(1)wml3~>E5Bz=Fan-LUkx{X?}Wb;vEroN-o|FWWJ_~z zvvcXdSe)QLzWMsjOEw;#@wuPR_qhs<+VAH*eZ0!8B!5d}>U(v9dsl-pUG8lN=lj|*W2Kia2R@J|&=Ayy5To|P-GC1QXN<*5Blm6; zvUYriu+_jtK(!)FJ_Yo0H$VK^;UnfCKR8jkr?hhaAq$`3o@$E*lAKxC6ql7k$iEhO zAM!wQS(Wz`WtLbQ3*R$Nun`?-jh5&RP??)|IKdCI^e%X$48pBwaXQJJb>c+!!;v)O z{XsKUtZv>muCI)BIKHVA@sQu6FTRXf%oIBMAClv9`?UQ#SM3i*nguqm1{CK%I1g`p z?a>p}&P`T`So2Gq?Kn=ny75mX>ImAO&G~VhwuceY`!t@HvbQ?W*Sk&gFL4R`7O~qm z6ozeV-&Y7o)6w&8e&o?Y@glx`CR0{&l;Z5equMSN*fwsORSJVh7co0(r9!Z<{g167;{|1V8Pfv*liq}YQ)ge!azo#K8Cg7w+4@H!cwPcpZImt?Yzk|Xb012 z$8~@sCoEKliSY&`pFguw<-J*YRaoLez}}B7t+~Mx@5ws=!`QQAyF;W{&i}) z*>ztqAd7uWazpmv3*xJuy0RrX1lTvtV(+hSTg+O>o>}-qr|%m_?`ZY--L7W=FZ%ff4<|DS({h9&&iJiU>H0%JZ*qZ`vyA z?ZC+t+<7fJdE1Lz*cyNd#-Nj-DtPi>5kAL&q90oZHb3BpKG_+5U}ohj*@nW-R!ad- zfRrKRwZ{^czFf>BGmoB zfpucS!D`hSon~iYu5=S@A-FboJ{Z4h>D~gy6QNk@9oR5pwP^>jb2N8oN45$_8xgES6)s$;TMR}C6@!pUr$(5|8uJuA9cV+ehT^AFU6fz=R!W0BF%!#DQy^P z^!axlOR^va-+w8+uIejk$(`bj@qxcwNY7h1q!-?L%Cz1W);)8HLjXVJA~Y?eEVDg^ zS){L^e0A&4ed9NP2$YFvZwP(sPa`P~>}5@rGpUD3UQu)VZa zEpe&$j(NR6!MRtJk4#b^g|7M;-X5*{OB6xIgtQ^$g0Wy~+ zSAMy?N;KnfS{on)m#vTH@B@GTTRZ)mG2ov4UHFFNx9cLe{77jvGd0W3@lO<<-&y+* zdP^B|cESr1@h#?PlUVt8B->QQ5V$1rIbu9ZDghLt`@0MhO`W-SYQ4Sdz}(8XsoAkX za(&p^(QG16wEM{!55J{@`|jzeCg(0QAY<3t`t?M=j2z7=S=-7lu(d>(>?JMIK_V6GJL9wH9H#|Fa7x59 z>r`oP>zl<6u{{X+=2)P@EgeHC4dINx(_W9WP+1xDK)Z{s3i3hdL+e0M-tWGd>CuuQ44NwGLYxmbVyNfmo)X?{20ohiig;u-4LB<4f^aPN(N0bMa7R ziF<2JPwv!JNQZXPH<`KKixhsVs<03$o$)aBe%rC`ZqHO-4?_RKejL#=>a@+A+>bT+ z_X@yQPrW=I3!2g9P`)wTsLY_TrN9y|*bQ4{&K=8}Njy?TUaJq~;mfxZ2TpVc@B)bY zK<6DT-56`OP#aU_l0Y4yRa$d823FPNhk>+ujfNU*Z11=(XG$^S;%&nXm@HpvjilW=v#AHHm`;WhX+->CcZt?ux zw^Mkj8a6lfef4iwUiREF&-C4sOJlmCshhU>WTtARGT!LUZb?(1m6<`fv5_)$+E4wm z98lSt^w%zipR{GHQZ~mrEvA>6OE=U&vr#PhvBd1Ej@LN{?;9liT6}gIDVvhvDeik~mr+Yz@Y%`HIJ3!JYo>#Z1Uq{qUsWw^A}75+G#-fTD`BX8G=B30p%cWcREq3B;- zzF=$xw6VBjQhWQSDzPx%w_t=lb+LI>ZT|J15GVYS8~ z*C?C~po5hwOFh-30XQXXfXR(iOMF}pT`_Z%D%v{leZR>%|Duf>j>C18rLc}iLso$I z-Ge%^UMi5psC(k3Vye6OoGq2TjXQE9Vm$9r>_?Je<8W)qB||640*!#^VfE9wgog7w z?>Y0a7fB52GPP1fLdf^5cx-A)8NTL&VrD{(?(>t|yba$bR|YL;Z9VYGRII@REEJP) ze#t2asaC<*qxdpxjNQ+8-4g~KtnjIo#Ok?+7;oz@Yzn+RST?b|wWMBaUqBfALBP3_ zO&yx0I$lM(YnUDiiDSqW=ew`G-YldR{#er_NPxM7{&~LsV3U4dOl^GtFwSe%a`^&w zX8kaKqifR*ScxU0CjDqYWNhdIvIk*U{Au0UOX^Yt_1(m?xx@!S&HSH!OSyaGZJMl? z{D(j8VU!j|ldw>{wJckGkQCQu0C7N$ zzfXYvVrlHhO3NiTfy3#;GS z+S!P?C!n}zs?L!nFj0!1oU0i6Kh6g2f9J>k?tO|r?a$7V)Xh(AhS-@$J?i>=!S?9A z^4tIG&Dr0L4D}bLsHZ-Q0Ydtj+WFXEX&YdWkqsn<4~18LBuC_~ z1N9JKgGFDZjRygl)=sJvwNq1{U&~qS*bi0>e$fF0SaF_vDU*ENA1UR7P+yt_X=DoA&{JIk zYx;orQu zFb0AC);{tFm%ijrPW)^8QWu$|Jm|tOKpB&gCVi++DtyB+QrTn1YTu@{6%iJMi-}G5_-F(y;d3dIp1tvs@kD}ea*n~!l2_q zJj+jih3=(A3OM4Waj$%5qf6aGP2T9B#tMvCm1eBR&afoD7Mqf_tM`DB`?Uk)G&pUu zx}tHV#m+Ib#D94Ly60we=>zJAgokEeZ7ZtA=N~>!p7G5`HsK#2fwakLAciK!C;IKN z`(6x4$_uumgLYRhRvGa;nozpaTjL-Y8V^(-BIJGX9ht0cqKAQ}pOCa4ZTOsCn2Cu< zL~`tYFZI8cgam;Qol|`@8+}<@3RwuE3gJ=G%z+7NV8T@7|0-~pXgzDE%gJA4DfI{i zVxDNEHO40S8UYPV##G>FBbbg+!yuaWhX^53@agQZ3#aOz}2ukW~07VphZJ%|elBEYbLc8V{_4FfP z(p---hT+ojY$R&Xsk5mtr~Ympn^_1m_zXRgm-0yNwZn#Uep>|DOoqO>30^uD{Hx&& z56jD3Z;8WFIHAwMD3YacDNcGN_~?SSwU;}{Vuhcb=t`RnGI&A z^Be;~fnrnwha)WE^*L;Y4ipg0$GDGjRF)$Mts~FmNzw9sf_YKgz|}rb;Ey&s1vi{C z^%7Z;Pdo7m-74RGsyRc?&3ILo@@#@%(^<%ButFx4574w}f|oUXf$d)Lm}X@b4Y>C# zw`aifxzF6(<%7pA-``m}-e{e&oG&TVA?|5wFJq7y(sV8{98Ht$+_~%I_112j!?j>; zS9c~SG3~W>F$RKVHAcC1Zznm8B~^cK=jhyRFdXrrX}k7lSlZ`k&>U;F_0aO#2Icv0 zU?=+uw`x4~rI7pbHoxPVPv%vXK$_>d*Lspid&q}!?va;M=?u})S0C~H)1SRHd)rtu zPrkE^GkaAvFTh*Dloj+l613YSKE0-peP>_TK{2K+%k zZ6NcW!H@2;Svv1_Aau|@4rP8@qv%|n;neA`cA)Je5cX#~5#WfE)Hg$L3J&Qz(4uct z@~Ao?PiUkQPtn3V=jhFV2yXsr!|6;Cymk0^bSSe%rk@$A_sutY4mXfhIxG z7bT@Xm*r0q`0Y1B`=9z3Z|=Pd|NDx}?h!QVKqWjue|A@J1`nS4l~1{_NUwkTr{3JJ zv8V$*yjXz)oxS>+t9C83-9(AXRm!2Emr>+EeOFy|<(BO}M>uj0akIZvrv0XQU##5M zf5X>R{_$yZOzs0bH!N?2fBrS;2P>zMe`OoY4G#J<=O?pV+g?$-r6*fbmAB&^d;}F&%P@bL|@^OUFVKC9}@|KHDKcI=&jA6>~yH{~t4)SvB@Za8oGWaT&TOP`SGi(k5> z9}3v5tj)UH&jmj(JNO-zFt%Ck!5ad zM*Fw~e>y`-9igx#d3&YLeC7{FmO{SW(qB1|7UJ|Y>~QY_%ey1pxR)>j{QOE!@I zNS452^0ZsOJbkJoo&T16WZ?WXbcy|mO;Bd<6bO-Jus7e4A5_`9hu6wL~ z{WHI=eLB;UhL!g8fsXDLeEi9O_EVJ$0imP$7{jpy|83T54-;)^pS;qqvmU}z_k0OU z9ln~?0LUsI`YZmodrg@J+;hD17gp3}q)n2*0vP0E;Eybj8C*jjZPqvWu|He#1yXpE zBmD(BNev1r6WGY-e%ldxpo3JNM`s-MMfwz(ckFWO%&m<*p#`|@>(Yqwt+-5|(t5xs z95tlqYIFFB4a!6hHyz9^BDZtBy1T`!H&=^_XSDi^{gvU z%D18O^l<_r=cV8c23f>oZLeJqzGy)AH5^U77^@GHJgzl)V?q1jWF^Ptc|f8|xK!VP zy=>mx2cJJNefij=_NDMpE`Q{rgZ0$!Yplj0=s~}YCzLOrk{{2Mngq8QC#fF~{X90_ z;$LiZ_hB!zRW}_RJLP3o`oYj*f;8~fh8e$sX`F_(#Uu6;zGK_879R5>Pws%Fyrl22 zv3KP=u+Wx2rw#lsZ8YGPY7t6rr}@5*m*qT(clz-{F&-d_=7g;oEbiJihKt1 z)Y~y!aMGT>G!4$$wFOVKpKhTJxk<^Aw7z6;>P*z=x(PFzPpoCeWYWm9GqxbI5m=>E zbX-0%6ea0P;7*E(53ucc;>~+S}nbFmK#)9X`^quyhay*?CN1h)~K0(kE zt8GWi&Bh!~|Et~L@=3Kb4|}bRmK93&Mx#@BM(36Hle&^C_jiKw`qJF@#X;k5ax2)Z zF0;Ibei`eBK9Y$cGbRrmRv7@hG6N^}BF6?l=~m#m*5@nh9ByJ6M8de0osq}_n}+{3 zV6P3yHIl0XPu!c8Z?lXrH`Zs7xxiDFZqh?cN2@6_Gt*1}n29qcy;$9qqhMv=T7d@N z%2MUV*Wt}-PW{2V(vUsHVlIaUsZea-aJJ#GNxU|8CSdCKG3WqF6gcHBi?G<|+-HU_ z(a~j~bs*8gyxC2f20AaFBhM1iVVwYxMG zObjtt+Y)831DrNdNXCLPHBeP%hX`R9fuaDLv(%0x1dj!AcchC*N{2%ZQ+l z@tB%-mL261EU?S8Fw@K>0jZf<9OKIP%9lDS7|AQR!R!%2>%hGcIDR5uu**i^j4?yb zIH4mrW`=o=Ce@U{)6NF9C{l1WU^;rmXpg}# zyrs^1iy*aQXg#Sd^xhX|2oLuY>d?0i1;y4WMGjJZQy%vmTo4Ixq$gzv?Id(!u^5mV z2eRUN&BD0tGjI-$c!_3|Rp;nv5J)m4N=_-k*^ta1P=9C!5Af>v z1P0G_ZvUkQEH)sE#7}Q(x{^J}e2gVNH6>7o237|BgaAgs^D*e~G*6LbeL~M>Z z?A&+0f&*tu+j(ie*1;&st1Nwx6hZ#{8y2`RkNV8%dRbg^*?jWvJjm%r7j5uUc#Pee zE!XXASHuK3Pn@7LmbC?1D*5b9`C8YP1PEfz@F8D;v`IUj06G8Vm<;$jK~nXR5gC&5 zOu$!OZimhwW^?(%t@duZWO>8`GWbl}Pi5xUfrHawoXoyXjJ?^GC+^5p=@8@r4|-6+ z>Chy)%&;FwAl%on)ak<$r#MkLw?qm$Y$c#334|Ji+&LW*p`WgOW90(@Q642`PGb z>jxLKbF2+W9{qsz(O8@TX|6RVympy}m00&mP0-)L1Wqr@bv;69z z4|`~4&O8Z+<}Z2P@%9^bzQA@Nd|wz`DPG>|;QO{v04om2Q~%7&!nv^AEw|jdyzN)s zUfPpDzdG9G--Wr)UBe1p6zMV7VQT0TzC@l%t8>}!b;eQD_gUueC6!|xmva1GS?_i6 zq$fXV@@2E8B>@+IKKBB%k%1Z-BwB>4vwz3!44SRs&`m zjvw-Y_usgqdlwe|%xC^^`NYS6yZy#C$b}n~_50mV{!WWLEBmz3>FQ1NPajAAN4`s$ z3qkk#srdqC^%e~^CP4L@v$S>Z*-Uq(uR0r9Fq?eiFZ?*+bf$gH%5(O(I^I4!)rM{> zw|2$pM}GK6ms_(J98R`>l`FV87odAe_V$uyARFEVKK&^E4D22WyxNyFk3O4EAn^~5 z^`}6;H-G6EZCgjGJ5@Zc*ZT#qOek^-lJuEmzCxgoPagoQ^-s;d^z}Nd@ zcat?jD2Q>>pL}uGrLVF-4m>8#3_y$k_w3$Jd4F)?05~zVL<5_qO)NQRqv_ z!}*HsA#eG^e&zFj{?gBtl=+WXnH^d3q&AKL*pzp*_7WBTvdRZE4?JU;Q@8kn&+)v3^*4oK+Nz#+K~pSvGh?1%o0 zz4zSDwZvvAsh)kA0o@DZ4|(zj?*0svyb#*@tlS*mEn^zKoLLeLK;_uknZd^xr%T;J z7vAB%l=15}DD~?R8IC1(>0CWdo~GchpKH)7_s|KR_3=_fUj1E~go5E=YDpUeDO?Mv zIPyieHWy0Db(8WO13m2xUIEO1ELkQ;ak3^Od7r}Y@5XKb2!w;5KQEvJvkJq}%}$~jvgFs3c) znwRnVh{`qJEceg1gKV^N=rpoU*46}prky*v8rq_J?R?woZvFxT@9VRKwr17{v`7=6 z!Vl$VcAXa>?pG%2RgIkRW3_X>-p2+IE;wi>{tdkHIl4gb)Wt{iHSFzN9|g7}JFATi zO14kZUgahLK1RDt^k{iA|h2V`Wf+S$E#CoXS{jmcR;fS_+uHt$sv&boM56 zqF35(c^!NkjH2ghR|D+9#TGJfHU{Pw&=s^0lnH5TD{61Fkp$*hbs)5L&X?!w1WNPr z_1OS&f^XkYzGx#ANR zha$()TQl;E29nh(W;d%_>;cW;;wQ!->6h3(a@cnIq85SCFrQ>*>?D~484lV{ zDMFPRCt{mM-JRuR$K&uIF2roahGs)U${2!%8IYFpE9Ul z8?@?C>pvMGv}cSdrp`ye1~&$cku(*Nc}Sa5CdQd!2TyH~DkNzqB{9%c&jgkxYS|@( zI+Z*_EXKndYE0PD3~JRv2ogLBtiHugeee)*lym?D&!^0Na(N8VFv91@;i3+-MJKqL zi6!{buR4ZgI`q?Pq?qChTIsxpz!CDm7qsvt1*v&b26oz2dKafCZSWc=1)dR_1X>P9 zpz(^qGg$1bjnGH?EqCIuqSXj1WtWK#Cn86-C1RuEL z{j@_Q{I1l^Snj7PQD^Pj8lvsCr%x3pk&D&o@Gy@ z%MUNNB#3p#U3X_Aac?0mS?+h${URHu8emc7ICIb%92_`KmcMOyZFx$R70;rN4k@r- zpk_` z1QAcvkaK|4vZkDFv<64rJA;s9sbjKcr^k05r?>Yk$Fir{k?{A9d=ecFhx0YoJJ{3Y z5jc)CM6b_uri|sM25Y{wqsiVzTkErA|@H4xj0FVQl;>%+cQf zu3l*9rr&q~c4zVut|Uv%y=^UmBMmu+OY}DFt%H^N;f5Y`F{FvVWgmrny(W5id6osH zwZSv(@=Nlv0&X3Y=U(X%+}&f{U-=!c*r7uUocG`Dx8Je6HAKebMs96z?;*FJFHrGp#j$3Fhc<5*3@(ZmmYywtZm`Z15*vfk%tllR(F zwkAI|wDb>M_DXDs@k&apS;nC)5%wyy-d9IwdgXfh`)g`y2$(nYk*Y3frnl#K(4*RJ3H zz7OnK>ti1mx~?=qUvjWH{bc{Kk9+K%Wp8}{ucd7IWc=`#^3Q+KbN9?|llD*l-lxJx z{gF3~>3>@O)N;c+Zdk5=)b)FoeakPsrTiwF9qfefvIm4|&)_D*J7J zXtMPK^(Xd(yeyA=MCcxPLBF(9UKxR?dk2Q^4TP_KP)n2K1<94wqV(X zaJTCYO4<7K&3Mh{c>CMmUb=00&ObizK@S}JRPv5*U3%o&{;9jAKmOy-rwmz7rlk76 zsmqFrjgRzp2EC{nqLir4hqE~uBD#~u?2&;v6Iyx8v9wiB>}_pmj;b{K#h76NFyTn< z(VZ~4?KE(v*JCe6w^cVbW%>blfUhnCICN`(C;3Xl)GKw+VgQ`K4jAbS=6j}m>e+%| zy{TMqw`GYs^02<5eEMJ42B2`B$MQ@))yK4hZ=X^Tcl{xOgp>B=m-5a%140?c4)SaJ z49xX&`Q=D%v`f&eb|3zHyp$3wZeVV;morwufXyC~PyN1XQ%=gEK5g>UKCJgQJY_)B zNzT#75m}Wea&ObmoEFwb zA5u4ggH(q#Nd~PjRcC1wKcgu)vJK>SeD=xHu?yNJ*rI<>e(;#p2Fi}itvm=~^3-=& z?N8-A=i69=U)6vZKQVMbPB_C+Tj&J2)$YppPT*;6L<+R8O#%6|TU#4AN#7u8_m)cU zJf9ht>sC?uM*pFgjq^m0ttdsFY_Sx@jm1nka(+w}5<&pN8IdeK+{8JY}QK=bH z21}GfaB1E&r{YY-hY$g+QA~?#+$m-_)JSKhVRMqZW;EwMb!`fn*+G5N5=RfQ7>pW* z)VC37I?Oa85KQ@NkRmn0%Z#qmnKpP&5Jzy%);-yT*^IFuwppG(tj+9yZ%eVxr&W6EvBrvFrKCyX96glUY#2AWC?1y7&yfp1Tb)1mk zh$)Nd^dm^8q7adg!nr%MwJwQ5?$_Z*0l+~&ig-G~lY3IeY&J9B>MAi}mD0fGkOc9F zZD^uf8N+=kK8FwBMZ?1X$VAHFRjMhUPFW`$VGfl?>AaOrpzTa%p0$&XP+mewf;puO zkOn)ujye3OvPMX8N_)uz`BFD|CivLL!<#OK8Xa}ymVwH{XkK&8 zmCJwr!#grvH8VaE;CR5bS*9Bq`u)#^CMltQT-+bv4Ccmz5THq&d3-K8U++b{dfvU7 z&gGc1n*H7E1E!4+e~{1Hp3SVd7{UN6yeZo95ZR$i8IU@HynOCE!o`~m%Q6oqAoj3p z(@C=xxt};yjIbcbzU6@rd0+-G`&?Zv+;b;>(jZ#XWk(vCzamS@Z@k z(ve4QV?iR@`2au$T4wgy3=zGgXw42GwqP?FcoQeFDRl-Tml8eL?3+P_PO`9q2PXhN zjq14e>^OglQ_Od^99+x61u9lfzf0lbAR^fUzypm z*X&iKUjwY;R+&uM_(GN?{MwEGVfmpSdELEa<$NG-{gt=plGRcM-|!>-N9632pZMhB z3z$-S2aa6mKY7gpJU7d@nJ)MbIoTb~w71<7c~lK~+bdOVDj(&4!$uC*?;D>Hp9`m@z z)b0>)yoR$rf3Kuoc#$AJoi@;MJ$lLtQVfjjiv4UT>4;K1gcqYtM#K5uaRcmmV{ zSon;#rDgJ>51X=gf=_faKGG>mUUY=v~)b+?VHYHLJ%SLT5uSK3uPJPteFq^Rz;V)~o)?PEhFVhP1IhO8PrK7&|7QlZsQ< z*tQ8o2fx%suPuMntMJQgv~A|U0cwa z*^dLkJ9)drC*}0Jmg?6Q$(u63xlR9Y5Ad_vmY#QC+H@x4wV5Fnngw@q*IX%tu3>Mg z#mDjS^?&*Sb~&S&>deTpK51mS{br#|8@GOsJkfnVKzSDo>D{^fLyyu=p3n!)`6XVI zlLg86a_oBApE~6c)YzBp0IagupUtcfWmV7E{osU8V4!{Y9Zd5#d*#4Mnx!D{g8conZx(dpE)%@{Kl!Z&o1s=Mf!KRhnJx$lD*ZHWINOKP+& zsgot>Dw>fs_sLsmW;UPv^#xLY1r24x53)agAShtvKHld~@_+k^=pfmkJ3+Pd#S6S* z@`&P@GtsN$IF$1HqX!4VTk?Kc`0dGM`x4Ab8}@ZdK4KeNXZDw+WX50#e${?OX8Bx) z4jqjg_&T7M0%U%4^*RHa31$;tQ$_@iMa z%uGNg_7M+^1?g2B`||@!mcF5f`b-Q7gX*K#w+>zU!7pUR`v@O8@niY4?j6aB3u8s& zH+yg6Z*rzxKKN!iV8$0FhXh}JfHZm%{sb-=$Aj`VGD6R!L&1V$$Ocv=ylMXr#lg@4sOz@ zRCsp=e;S2aIx&fyGl-kx1pyJWK1*XZLr1XOZ?GqfOR+G{Y@Hw#LJaY}an3BS1j;Ii z39wLL#Gy86C_Gx%-vHeHqxc zvk$`hXEQO-unnjJPOwd97YY`~3^T&q>99Bw-f%Hmm~Vr5U*Y07pbH$%P?+Q+qBVNq zivXNd;jGaTi~%_`Bs3);LzT8iiPgj4!L@@neL^yCvH{lV2$Vr<4$ZHFA;3CEeAu_s zaSXd^DAgHU;})h$43HAw3horly?cUx`wxm5+As*((Kh9%Gm$E|>0G>_=rrw=zvs+E zg(ng%I5=P zv6U>9f$B}}$x$@&P#!S+dcHoB$vp|)JrC_0aCV;vgw4`UJ{K!+S#*A9LJvuv-g6&p z_xivMc%~a!0eRklMy{C*`OueKlcj5}j2z|W7rtoFKk!SV0t7TE=jB081uw}im~wCQ zv`n}>$-OHRC_8ADYUp?(x~-l=hb+@Q+7A8p+iz=UaWr4GIuZNV8G0$F)8F3q^sPjY z=U|x9tInw)xdIm{hDT!;Fo#CvX4@Zdm0fV^P(+`dcOV$JXoTc+K^@Z(Ortqlo}XPE zm(5|qRCSk#)lnVvxG-qp=StwNP6XoTdfq;wKjW3dj~Oxh5@_o3j67)_$zzt) zkvJ_|^0GkCj{Q(kstw*Vi-8@ka|x%wWq<0-t^JaGLeZdiBbz$Mp{n6)EnR;UFQUtj6#lYy- z@@2%o_UaLp+rn12ttH@Sq1QU-gWyT721YuXOuuw=aL``~I8dHLv}i<+b1Un(8gN zKg&i0jDX6H9VZ{TIaYUfh^Symls?zFzIpI>mC}I$iVgYS_A77ey$k>Q?ce@n_AC3% z*rq*Fv9He1PW$kn*^;kN{_Y+nmgTQ~ z|LfZR9eyV#yM+#)`|Rg-E$6=dUGSy0GIgPYFMH8@I@XWFgchSy!6rI4G~*}m`;x8p zLBrBNgtzSD=40!7_;vF^h3Qk+gG(Z79f;ItODTO)?iK$O>R_uJ^fD#>oQm?(-|*F^ zFAebEwlgcKIEViFqQD>lTsVbEWAskZu6A7-U-nx7u3 zJQ(O`5x556Sb;ux2j?}_X9zB6DfC%?^>H<*($y`MbbY;>>9 zNyX^E$Lg5J7%;X_@W39(=(}ked(;=?;oTN&gO726^7?a088UvZ71O7nJ+i7-9er^S zocKQtK;}5ULdvEtg4zJUW{*-w(}-=#CL}1AT`i_1pORkKo;1-)FaO_g?d*h`2|`ci^QA{2IeZE;8W- z0}Nx@l22Qv9yH{ujjoVk@-sfQz}~bk?Z`d(tniSw8E*CYLpKw1Orj8wAmhd{=!*D! z8z0ltcKkde7@LVqVhaLobPSbgfxv|xQRgDx|MF@fO?xkC?`UlNO{U9SIa~)gNxZXsW8SJBh6|;yxb`PbTSmW z(6g zI-=kZ2BksScPoqvCZ6>TP%bXpua(~3W`)2%;TT%hgJJs<^_)&8 zrNiLdT8?$v2BJbmH;_Cmm1Ar*jr< z_ja~}-*SO*39YMuV?f6c1n0_SistBTk`6D;8#|q~&Vmee>hiqJiYN*mHVBxuN%mU< z4^BFtwm0X1;Hh?`Nrg-9(Gw%d6IoLJq(EWXVEGVQ_;TA7N3YC`s{{F3)u%Hn?4IR{ zWBZq@uR5F!c&}bQ^07~>xQzouChkuA$^GIIiTa;VwxUHMS z3us+^?Xk$(-OCsAwWy<6GX22&We=0+q=Ae#jU0Gx4LLt?Vq{O?Lt@-HhU`w;mpZhA z6EApvX$C8BanHoD1P6i=5sUz|h5q=t4hXk#Ybh!39w3POqyVL$SXmv``)Qk2|KIsX| z$3D9Itf@C=Gxr9tN^^}O8<#9^`K4dZ?5h{o4yZ2(m3CkH((FsqjJy1IBr`KPHMN7W zb!>7hS9m#cbtHYk#gaXnu1IjSeP-m7Ek>)o5;yEN`^-ACy`Zs z1Dl=7a%b-M;cov0erG8}mi1lQI&a|F{^1S0h?u~lrsJ2rZ7Q=XZ`zmWxRNaSx>!1# z7Y3Y0128_z*mL$Pk{Z~DFS02+xVPMX`*KxgT#++Q6&Npk@$>f#V144_pIrXF4e_bp%d^=pH^TAAOy@}RCy-3%Xx-kl=S!H)Slx}!#EuA9D$&7(3U^D9!O|V6QXjqC^oxy| zL3tc$GfTt&a1L6NQU@RG$A0{OUcTeozjMz$%4CMa8{hDz_K2@$7WCH zZU>0jFR(NYZQ4%xLbomG$5*br7?~ht3A?`7&5bkhZ!d{F!l#48$eN(*3~~+R%<$n) z51p#dc#=EyOJk$h8~5v1c_MIAb()eff8>fzaZn(dzK8w5vf^Mc1< zdz1MC@n7h#v@iTAy+af7a8G!)1#D`+lLszRX`FtbGywzsB0HXUyqDwX<=W1citI%m zdna|O6}0MVuF0rW`oI^g^*%frKv9p9=oMJLKu6%nlcbG;VB~|3HQ4fZB712&nB$wR zZH@ia{00pI1NrL@g-6O58<<&Wzs{}(G9XRD1N<5q&zM`%o-WrzyVPeq2*o;hz*|^tLy=J$k-q;2V>RKR&9l?0$SvU z&#iACkFj8S-&wzeZ5-S2hA}YyC2w?BPzVn$iO${=AC^rK+~W61A#KOk6FU$G!B6+` zE_+F3Y%lKwnQ|{}#J`Xv{ks@S_Q-8q#Jx+GyE6Vbu$_7nAX3I2-xJh}boa%9y~McSVh&b0?Av!JtHf>%j}B(b zjw8$M*%nC~%+NI>4Ua926px8O)>kKo68kihhR6qbOn#4&jN`N& zvT!$!(NBSAFZAy0PT&xoal@?5fQx1`E_GxA)ZmG7AIJug0xqT=3Q|zS29yLKa!#Pm z>fj?V)u%{AHwkYCIL1Mg&XO5M*z!Yf_1Jw4(z(cg^zviD#m@7-$~Qq5^_Y4`(GiBi z!Pk#6nvzGey53S`(KJs6Eh0`QPE(qkBRT=FY3|*pBeYQ>0X_O?lVr~YB2qyJ96=^s zNg-LBiUe4)M6#WE>TFarbR%2@pwY`5bx19bAvh9P@D}JW0}ZT=-V8GOn&G4!2QrxJ zU^V$Y6UY*H>DK{Lu#R2?kzueW85~qFMu~C-_b?b=4;}GVh`}CXm6M%>w>qBFnHges zoaKRMGCS=|W`UTVe7D(kI;8x%S$Iks>j%Z+#c8PHK;hHQZJAR$vy}$3_BJvQ*?^;b zHm1hsKnu;r==2K;;YWo%vREUZqbN9j)-erEDo1C$7nOz!o~sjVay<7KXiAF|5r4GJ zAO25(j8j7%0#oPdiS|b(OV=25&l!<$IdzbOIBcp*{r0#5n-RoM@J;15P11(kANufz zmOuET<9YLcV0qNTjs(AKE*@S99F3tO?UXeCB?%V!p>J;m_~uYIz@jn<0_XpFGkBz+ zES4+o%*a}woqrJ6sk|kiGaKs-;07QmiIiKGpB~9(=V%EJG%VGVr6uy8<5onmkY(u8 z3}d2te|@F^yVH9soVCW5nw!ar#1*`-x(T%QjDQybg zbc@wVmm z+waP(ki*Nt$ioQ^Q)H74k7MK#a9_HzTxA9V?$KqzCytt_x?Mv~XJQ}Nj$)Jlw7Ua_ zl^|qF9qw&!g4uR5tYbSr$gu^w+CBgYVcHdKY=_YSJY7pNI2gMkV`L!kOBl}rcWAW^ zAOK9NUDt8uSEhJpV=Uv_V^sR4s>vD58OeW}>XSM@+*iik2 zFMNLWUzCx4a^Tu{+^8B|Ljays@AoyZAiX(i#l#~p2gn#uJ>1mIprL-_r3SV2C(#P&wBPVyOH>Ah2Q?x zcW^o4!>8XugB)*o+dG%%Jm*=x)}PgJ4&A3UyFuCIUI`kVi{5!T(IH3MA9+iA_DrFb zy!toJ_v!deXYK2iqZe29`7+?p!_diemvJD2IJ;p$kuq0beQfzVfA`0tfBN~0rw`}L zgs*zVtCtV|`iDwC9UgiYesQoxL2RZv_DJXg*R!#$6Yw+0H$aKhMgYeVj($X^zWaOj z)^B=z+pV|PHqi0S*1h#@H!Lqm0IOaDTNv4>PZB)6ST!)XXrkYdBmOb{{^A#JzG(Kx zKK9F(M?LEL<@)QcTOR%BM=jSs>XA8KzdYK#M?PYCbcE<>nz}5{P@&q^S@M|DY|Ce+saxZB= zJOvQyx8xk{^g}_YdDQROPJf-dxokU2bJrWbX(u}PZK-|kdeQTgHNKc&&eWq0x@REC zMvoaBUZSU^U0_x&a;c+wrhJw920(zj}Mj z^(Ipq?r)<7Joq(I`JE$P>EqA_UZ5hEage^&(NDh*PJhYUSx~7rw_69f!&z+bLZ58F ziH}%1s1yGRoqsVLV^1oVkt=!*4p~7fDdN&{c!(SgEUnKrxI^c(G#Tm#B{Ltaei#xd zEafPG*8Vtod!F_igTNEr% z9;KaRBNPZM?aRxGOyKAkIkf1OKE_CBQEc*mV3tPY$i3j&=LnMe!IT&Myu5-N|JU+9 zV?7Na!|iJ;cL{7|cD@;xT{alsX80R~$Xlw|WOke7)BUgW$oSflIkJmZ`{Sbpe12@o z$kuR{Z*9gmT?Lk3eWbX;lU?WASh)jdeXuky93v;WzwsBX!0L#W4)^4*P_ z@f)7ghlZYMBe{a-@M7pWwrzYh^t4>qvE!bSBRY(CX@@=2#WBcEKXzpWNAB-KXsJX? zCEidne(g*Ma~O(<48=hKt2FRXk706v?T=F`(9{7*nCESfDQ2enHGiUXhYlYtat99_ zZ6gn1A^}elX`O~e_SF@IA-tU`cQy@=AUSumQGBOSrd&IT^@vG=T8JHLmI&>LLfkqt zq&P&aF=z)BX09C%AwHepm35yYl0Kz<;<&fGrpLvJ3rr534eKRXqlf3#$%2{c+urjH zqCAAgUR@im+h-}k!KhI5?P+Byb4! z2v6XJ$;a=yYnCll*aAw~JlgW=oERa3$?%=X-dShDhqDPN9>44MWYhtqExB*mWmyu# zga+zrr_>|GYFAO7R&fz$%@c|1Kn4#9=4BB=dB{MJ>b(PmIDehtx5@~m5KQboTah_N zp~2S3r@A}1*KwqtF~F=+3|iXbr!K^)0bY$WnKM9c$Fd%E9#UruBwyb=Fwilyy0^Y5 z^E@;X1?C`^&Y{oc`NSv3=41k&rrPfhk3Re9Pc5JN#2+J5m#tlO?1~J;4=x}3_{Xz^ z(Ax;gABQf60sprEOOZ%h@W^w?j0Nc3D~L6Zs>qbt&nznP)V3glLMx05k089CTjJ6Ho4<_JePpsqNso84BuDWVDd^CGr1t#aG%UIdf6mF0|II4%v z_bXv})^?{h4w;UC9Z{DriR5N2E!M<#ES7YG5 z*&O_oKgZw8DhnL`JzqB2XrvEyaz`qjQad~TB3f>Z3% z@w>vKi=<=O1FP*w8AlGBS!{UD*}DAlqvz54zJPqpL|td~jRqwNf|b_y&DuL;W9;!b z0r;#F= z!>jf@G^Z;{|7mo+B2(L;RGAGNsk%lV;)MJBGG6bMe0T+2;7V>b=j#R8q<^pU-gm#h zeULVN<`4d`viyW6JfZyYqU|})efF+J|Kv|TzkKAwA8kFwG(>pk4ewr_`B*0Bc*=M2CfeX--mFG#B4hcF{6~4zVU{%b zosk{f^`)?T+S8u0{9ph0A7q)qx#gU>y=(f?7r(T8?`ytqu_qWlor-PiATzk|IS2+j zwpY?hxHM?eOz_aJ>!|dZ*>f=d>Y?0#E8l2eZtsh_$Qd#MwPWQ(yZ{nwgZ+7Nt&Q^wu7N=|C3aTY+V30ZV9b6eTFM|wOiq@dgz|}^6*Lh+;^>BG~}1T zz51PJ+6S(Bcj{6mwn8ocWhyR$ZygCJIpt*xpvzXgw?0NZA#ge%e}EP^ekob z=RP=sQE=ICcHE%}UdWd}32w?we?I+^M}6@Syx^dH=#&53-s!tG*%#zOqwqiDJ9(Wq zBVGxDCn--iI)fuPsBhDsjaKtwjlXT&H~LqZRe${k_ECEWUfUb2@T5V-G!5EvBYG-(qJdX7Xf+tFCF9nXK4n6W9*TkS^Iwk!NRbv$|(81*B`3_Z)=yg(B4 z6X?vH{L1SzPn)cy0U8`>R(3@1LW9N>Vyo?ub+#+6^m*fNwBAl2P@c~S$M|_E7ih(? z03(Ygy%@i1!|>T&&}JvuC)H$_c~N?40x<`(m)5*7vMPX2OXvB+@$ti*U|q28dB&eX z3-~x^GdhVPycghs8-{t2Kz0O{@alYB-&Q~gW`W`7T+*j*L0t8L@454>Uir|v_(b-M zHH=Ftn>p4W4u1Se$xyQ|+;b$y4V;AzNAuAm0YhVGdL{rz=BfuNyJJ%$4`7E|c}ag; zWOsD-&b+9FZ-^28d8wZnSK*8L1t|p?CtfnVr&pD$KyuV4TKZTz2Zn8zjCtyBqHo|- zw{i}zRH8XM^oYEU;Le+Gil4V5GKW|c>`<1!d2@;*0hd~HnxBo>2w}jdbIse;5Mv^V zXluHK&Uw!Co=8%Y?hsPQ_F$Spy)vI=tQFc?VzFrS#l=0gb>|} zA&fR-0qzne`8wC}EH^YO>dpjRD9Jcrd3$*J&TN8wOWzRISTd}^gVJ{|hn&N)Z}QSH z)(Hp>m>T^IZtKj5&_xG8(RHL?aWd6?XM$d1I5>Y{QXC1hxt!an-wzG7fx;7p`NV71 zOp~sp&iKmxQOMqEKJ}TNXOlOB*W=j`G(f`Gh*N0P8Dl@REc@Ws!c{7GX724A1?w1J-iTx{8zq8DrX z@wL-eqjX>V!WWj$|KT4bFI~yfgTo1Iq--i!zVwA`$Q}8-yYvs39K9*8fzJJdUDGb> z;05pPi-dHiQE#8oQF(>b1zsPB&oxHz)C&3nUmI;Q)=(rGkUHC z(~7h`?cVG{9yK3YOO7Wa_of{mPSEL~H#BSCRD9R-X3l?WwR5@gJ2&wO|Iv<|o8EpR z%WClXz#(5%-M2jKAy+T=dw^ibzR>Tk>XqfiXJWT>Z0O`og0H7A*nal4>;8ah3|wuh zBNd%%mEzIh{M(bn zTQGXT8L5-EKCiQa7MPKLQfE5lntfplx74?W?ne&~ghm2o%4>tY9dvSR&)7jiC2`E= zobBOoN!=%+&ec~Mcy~(By_cTaQp7w^LBD&;w}}=r{>d1r=ESGpN&Zk zbSis$7Yl94+vKaB6vwu<_`u0##s*3ULx+A1IXvO6yY3)8^{K)=7Twp3E|z@Q#1PI` zfcP?KLXPS@R%ib-x=w&=uw+Zka=UDK!3&G-NEI?U;W_nUw-}9 z4Wx2=}P9bY$POoxgO^ zGy@9uD~wG}4*skn*sIvBx1L*GXs;ujk9BBSvyIpYz7zWy1gay>GK0AI zf~v3Y7aPU);a6$fHYE_5nRa-u?b>A)OYdc`B<=4&i%+PEv;*gz0af3Mu~onOG5EIr z;7{|%=L?;_vOP;|>RVaukiJa+hST*c1HAS^C7_W#H3fFtrm~##SJ`^MlPB&-KO&Ht zU~7EfS!KZH;Ehu7iseW@Ft{Px*#CZAOncMr2K<6c3gme-GJ2LTAkD8Bf@M~_kDq|; zIbTCSC3V0x%E69zr9j6K_%b%o^QIh)Au313ZEh=v&R{~_V3Hr(zBo9kr_WLcx;S3} zmT&EM@E|{bXtJf&7uevpj`hJ-A6S*q+&6HP1Ynw0ythD>HnP`E+8aDa{x*Dq>)ICZ zjgjhC2TpA;x`zH6tQG3y)v_eB=r=9G(@x<6H%gflWGBEiHYy;Vftl2AX$Cd~Xv8fI2r7dY_ z&f$pv@(z45!msE@sX~Y16qMy*Bj_X?$SXdH12k5VK3Z^U(!pG31 zFaA~<3M7$XF8~FzB>pL$vqgMa@Rbp?@r=C8n8G+>HgOkVvg+pGq05tZUMTh}i^0p% zdN9z2-0%$@;jbJT=mT?z{LPrSd=D<@F|uj=8-F782jSdX@yR_e0R-OQ%=br!{g+uC zm%cB4nlB{gVevnh{E@)6VVjVlJ%^7RTaIL7eCH-4smlv>v#}b~iXU_+lQb^7^l)Ax zCf1UV^4X@~Wa2WGu6yxh>~b=}tM=Ea_wH=bqu+%;p3+zT#}?lZT;)@Eo_~pLL=NLK zmKJy&*=-OI-SmS3MM=YNO=5qeBnD3eLJ+5hGY<@05HG6LhBv~LRf*T(`WK|$|$Aj#0ahPoQ=a$N6K*oI4c=X1qAql3lY`|*3@I!p#X-r zpRFp-wS6<@jug4k+dNBiizB$>1Tf$PG`KUSNh7Gr5Y{+_$%~<2F_PZk$g?E|l~PWf z3EUAJQ~Dz~Cr;cIFgmMK%UwCwalk-Z;DGrY5u14$P>PJ6K9w)%-JLHRp3b_~6Srok z|CN1Xt&k@7noc<;+Y4!r3J4wl9X( z45!=g$j0v3AL&SzkzE!;qr*LZJPMNbk5P^+2X_J?SZKMPujiSmB28zVrvg%%ogb=i zL7HC3xIT8|;FxiwOv`&NDJb7czuwD#WYayJhI)}odHcX|G8vyH<&!*j%J17?x-ZdD z&L8}!?nd^tXq&Lzn-cfNr}}!S1peqsOqTk zgn{7=xpOln$R67_gOGVa0GRrVOzNmzNIAij(j~e)1CZoMpTcgkCn+>?lsefHcBUO- zXu~#cX>3det+6HJh>_#bBYs<#`-WHA)HbG>W?=1)UZzED&&yx_^62aC!KcrD_K%hu z-*;neDSo~8J-@m<``OP#*m*&a57vzKxFoV&7L!^P5- znL!Ti`T^0?4zSbghkx0_maqKEr|w#m+`a3D_XN*Nm-oEuy~{J7`ONS|pEZu`)1UtI z<-rer(5_|QmH-x~)2!roz9X}*p7)%b2&|lzUQUf2+2W(Y_FNr3Pe)M(AoBsJfX)r4p zFPiA|>;J|NFSmT@=E_z?ERZ78!Fl81ZUFA}Y;7AGp%h1&E#fmypR{jz#VcOk0mN>w z{wN#kzwdn?sMF1!zW-Nm%-0K_)i$whhKKaci^uMb8l%!c$8NyZd!=^>Oa7AiqF=OB zKg=hAd&0Z z$j}GR+9%*=%A;TXB9-=<-wP-3Vt@Iweu3M5fIW~Gaxii~c#{F`cl4q#-e0oBC(Vin z_YH9L2k?Xclu12#Ry-2~qW^`dFHHUXcuQeYO=Yz*s|}G8ZIGulQ?7$`Ii#_b_49Mz z%OZ3j)8nH?MskktZA;o4B#O5_X>4CWwjO-(7(QeIlu4d@hNezBKFE3V1m@OX(NFvY z1MX~-F^TqubWJIhuQ)c(TDaUw8Gi=&e*6h| zq@lgvm&&Dg`q;?X1`GapuAQWzvm?`wjl81y_+09f4?m10OAC0VeT9*H#T`y?37!%; zlea17^1IhP$KaZCdOc$#Hcj7Y(m{+Rx~sqa)PO+?w4*a;B5&jhztz!NJk;Vm_v?%g z;|6#0%s3M|@B@3}f8mkYDP4Xf)6R2s=9xWF2W9YlwEkB%KQ0@iqgPF)< zjOutKv*Y{nIl2%GiZA^}kHdmK`P1(nN)Tv#=X32Gc^dvz7gDDH)aBW`)6r@w?cxu2 za!2q&9|27Q4oAT%t1rNY8-tn*J==(iF2!Ph>(684)MoXAjRNhEqGl285Z_F$f&b(y&o{0zE;NI?xd? zGkSD50znFx+E^n3LauG>g=Ul;6Ic4xaD&;m?2#;G`o<&D#;9xw6D-d|@Gkv`&`bM5 z3>}Pshq4A^1~YeN^DxR)CXq;;Q5tG9J&ftsHzL5D?Uf*cy88AlxS%xuh<;XztQb5MohWgfP_oibi(`lipI>z`6Bb3oWqjM^) z5~#Cz1AjV3GPfCbPvIW{|NHlAMz`L2a=9Y`tQ!5`lHy5$5qOsF z9Xo83Z@QJ+#C%O9>q;K7;_=R`soaNqALr=pz&L?JuYy?fIG0!bJNHxXX7tP7;AMmJ zlbKZ{_$F1|Qv|-PYsJMg^`UFq5|(U_R#NvyRTU1&@23HUl%idnm!P*wXOUTLgB{6xxH`k1sT08}pUIvnkIG((`sU zE0M?%9HyhOIioLv=x7-DX%FK~#y30Tt}^VK{P1SaIpLOqA32)0LFp9D3arj1FMC#) zYbSyS8|}4^V-sr-xb!solY7XiJ$>mAUD#w~I!iR?WR0-W0g3$Cmx@!!#;|c_Sc11& z$((T_*kJM#`sB^g)R^*xqphpcn+}=~>h!ky9oYc5%DxRGILw?rD6u#FSVx$~@xwnj zprwuE)2(Ur@FcL0Wts0cee*Zv=I-gI-~2Nvv@Gv`|BcI2|IAaelysI!f!P^Uc^0&~ z5%=y8<}O>TjJ>S9P}%eke$pN5lJ#Ef^52zL9;f4xIGUpavVxpPAV*|tA z(0yLOqgrrw@+5c1k;Ttw zM0v^)+WJIae7sn?GyU-v5IP*^%M7NtQt4ZRLtx&Opz_7i(aRGcOOwbmeL@$qsh@b! zOJ1~R(RaM#hUK<=Y4j7H`0eEx&v-^;edvUr`l@ey=}UGkd(%xfEg$-g50$PryyKk> zU|9|zweL+?xS(=h7zGzZ9L$>SKL4qc9#{AHQz;V55nYO(v1;Fa3gw1ctK)PmJi{Nd z(mp;g=~C@h;7N2S*g0w8-}}_>FP~3)@VJ4A`vf!yUO~|?M(6PJ=y^vz=8CvC z{`)*890Gplw|_5hC46!McENaH=3FPnAyuJcY|jnCk5#I>+NbbWm-cbv)3>y z$iFhQIU0HbqsfxkA3Cc61GY3bUX9Od92=kLt~kF;2bN!~KEp-3fCMFP3yR;${v!G2 zGbc%wi|8$y;c4n07qcaKa!#Ce%6hjbkz>g;k-`>2;Owwq|#;lVh8#fyIj0&`~8pl>b0by$@=&c<5c=C?}oP3 zZr!w=ac{+i>9f2=1tA2O{&(2*<2lC%o0Pke-5Wju3f~pG`|kc_X}A2hNxCw;bzZVQ z^M~-iJg7~(!D50tF@p(uL#qHU{lO{RDL%E=%4Be)_v=RT?1gNy9r|~DTzu;!H+apM zM9*Tc;ji=Pg8QP|jqA7}l@eP>v`9!vgzPJoa0!2cCq5p}{FNSA8BcV4-{J|{`Lk+Z z;w$r>!J!?Lf#CY5aaYx33@9MK;aHu^Xcuo&2`k5Fz@~@tU7kRqP z7=X8U4>nrx-{+jnP4Y9x^kAg>pgg*15s{Caf)(fzS6#U^ReIh{w&U3kg@2&?R-zrr z>a%VWl|8j2x{hQ;*P#a;X?rx18M^4BB9Xhsc6_t=qx&lIzah>GoIDfLX|Jtip8{VyZU`ISK!%Ty{nRTU8;3V~!V^4FC~Y5Q3==4&{=M1~ zo#?H?OSsh7BG@{W?9G&n@nw&F!uG@`Ju#boUX=dhDB?`OG9Zwx*Vns)gEuCf_BgAI z!*gZH-(#i}zOp0d%5Um)kc*M@dEoGzb>R|s-oZQ97!qtb?7|ES7wj%2j9jQ8UF04o zLBo0ET>8WJH9>|~0}|)@nZeGA3+EY0?*zthv@uYRjxv0>`3{EptO*rtO+4Ud1HbAc zC&gKrxaa(OG>8t;fbIzsa+9`5zyycE^@?}BE6I%Pi4^B`$;D@H7bL@eMPC1YLpBii z_P=Fs_^EIq556!#Uw*Gg_PEDRXaf^XE$eGfYPb%TcKfAiGqn$n%hSN{y?0r_lWdg#$63KxI9-Nc}vkTp2kDf;v{ zqSF5Iy#hzN;rgMhz#=~%o5Fi^P{4HLNF0BB$q2(7HR18e5Gbm@14QD#@boljFxiSD3(W^!!0E z|k2?y;6I{>=eJN&{Zu*l8b;-Gy{&h>a*uS??RCdvcGrd&u_^!hfCF5wHtzT&UF zqIFL7=eM##<9+YDX8Xlo_~m(gP)GUj4O1MS*_A>M?IWb8f|3nz#mFepA?&B zUqtKr>B_|yU%W}=th=o%p-In9SIBBsLGV!-yR8zf0U29P-wr(f!QDYRO7=}`q-`gP zr|Yl{Bb$&%f0_gf4)kIsO}Umj#&6%`&_FnF>B($Js*mx*t_yY~3_liMz5OQ5D-XV$ zu91iFkuF&Ne!7CMmq?HWAwjW8He5Op%b5B6=RJ4V-H(Rwd%yd8+kgJ~U)-MZl)sd> zLmn-zWUD>9c=2fxSRnmk-bQ%Ul~-*yXM_4D=S`U8>C^G4%)y`WKO<`tp1vH&1uw(z zr5{?X;PF(g%Qt?3xprI(?_!tu-aE8;l#w5)4&-`Hr<6cSvc3KXe`Nc2KmD^~%WP_| zLvQ}pH-F>yZLj{8`npr~z0Upa@BAL&rET;fam4?hZfb|#j$eMHPsi{#e!Aucr+ASs zar5cRUh#4@Pg#EZw|;lK{<`b)hR9#Z+eM#WJ;MBsvmuzTv1)Nm#JhU&l#uq5ksEt6 zsi0R(t~z#_HWK5b>#2}zL49;}KeR+JeFP)@Zv0673Yo>M$2X=^3RE*^ zM>8SHnVznXu1Zak44x*%jVl6k3S3lTzdUx@)>g$7l03mF*pRhtAH+qSeC>Ww%xc2i zn_c-9H;0M&KM51<(N{R?QNmHMy?gRZ!N9gZVcRBJsa##vr(zBx-t3B-e4D^6JK)cv zA=MFV8ODekCjo#yft>c0UFDbS7@BsSBjp=DE13lfp6QogZo9N!F@Wm|9QdMD#LH_O zW?S`-X{S`@Lhs->Es(E19U&hHC-Nc?^}4%7+KW%uV~Wlb13zr_;41v#uy}9|WdT64 zX!ngXj>neBMj=}-)oL6c;Kmlmy{@yA#wR_3?;iK>?VG&JHRFBxk@I+>4SuW}*P|0j zQibmYTi)`ED>*Z`f>9r^_a|=YmC#@wi3V*J{xBrF%6m_4A)6jIDVF-;k@b<-7@G>u zg9tfWISd{iI#+pUlWW5PJQz9RjYI%J84J(?pSH_y{8s2?SI^c?X47+h(5c3T2Y`*M z_&zQ1fAAljXe{emP8Of^F}e%)T2bV;`}MsJ`yeL;9!vgySN@@auQBJG@lgEF-e+9J zhgl`01zv^^xvu{nw>1Lr3qMD1B(d;Zor!0nU*Y3zxe-MV6mbFm!;kKHL$hOXo5$R| zOwK+^eN-;>yLVh@nE5fgh@H@VeMQIGAO59IZ|YRPvM|AZ)zKE?PB>K_JSa&>iI@8& z7{YM*3b8JItz6^lmMy?*9=oGQ7Lp{flR3484)($vJO=Ol2)yV;=LwmQ2WD}JE~AA& zk0m!yy-L?B!Oe!{GUz)HAtJb{zCW#ycD1*R9q^R2q*IdHl5i9A@nhjb;GiLvSe{GX z@h_{KlO&XtRg#Z`FDXZM(V?|M%wv`OFFhqUH$YbYh<<2CckOMv#&U1q#;4^Q*|%|n zK5H-kQy*PqGAETYVH;TxV6N0B%R(DHivLXqIH9wYI{qk5NQ$=&W1789@_NOLiBu;`bXQmI#frGcS zot^C67%nCZGrXD4VCYSP3g*dP9v@<|2aUHAVzSpc${bGCk3rs*2_53Cn!2+awFeCX z2-DEPPzkmJL+BPD5Yz+-@QJbpCNY-SFrMPvAAT{%W)EXng8hsvr5)M^>pEcwhtHNy zugoLG_3BTLH;$9pH)oDaP7HKIdjpuzQ82k4HbvkwsDM8T5jV3@K*6xyxY=(A8Did^i(uCEVZhgzk*Pags zF7z<0fa+(mzHy?%g`MX(GQmZI!sznSyR=H*Gl@AP+4rCmXOceLp$P15#uwwI=TXWg zL2tPBs_pt4Y+ibQCbAFOp76vcY*$}%&35heoJhM0UUMJ-z9+}$#I7EB>EUkv-N9o} zN`HHUX$GBxPapj|={h4<_NKMDb#6fcdks#m&BO#v0=TKww@qXfn8)Pq^0;HlktDGs ztt1lc9~ain$HjCQDfa_Jd7a<1L{;ZpZ}B?^e3N=77r)i3cBP&^Rvq7kozrZ}WpY{9 z7tEYap9XjbTOR9s(Dv9zoRgIRN0?;%0Y{s=0ZCq2nWeDzb=-b*H2+6lJDzGgBs;vo z6RYcv<&~~?gin`Tcz$*8?j(n&W)fSsW-Vs|2>v8zst)TveL(3*Spk6KHq$MbL31Jh5CE z^9{C=>_ZPfVhq|Dq~F*a-_eOl=;NRGVmAj4XFRZs`L5U~o+usT@=eE=|Hd=ti921E z$G$)A<36tY7-{#B1-zg5@t@rOFmF(M#xtH4_>lnq2M)K$-zfamCuar6>B?r63 z_B`%We-Iejlh@53zUg#Lx4-b@KR@*H-}`5R;i2_Z4fWL^C`jr9&UA`gC#X49s}tu2 zS2CRO%A1dZ?#C=vHrF3Vwz-{_8-i&Y2D^E5ysPs}5Qks$Hqc!VsY6!?WpsY{Ib*=q zl`*I5__jQnsemM4!WT&_@YvLy5~8OmPYz!dxbo(pNm9r;o`S;}-mn1mH2kU;VXT+dk)WK08)1fn^`1^;nR=Gq?*j zjf;j;g%3Dg8G8%Q(r*}0e?ZrrUqR!k+7hS4jGKAxVt3rkBa6T^F`euDjj?kcTayTl z4QdxYg+Wzj}``f4L`rzCRH+*or{sSMJ*e5WG!^fai zLo)VA7_RVDD{g@UTjE=ec~MWcUEr%OyX-Ns?^DaM_Wct-75o01X+9dMH98i;2^6A_N(q z+Lw5cvXMhz^f-p0FEOT=j84qtY{nA(c8@*dUHY0>JA4hC>Pv9qoA|34>(CYa=#z0M zZR+QPN{7hO5WYB{b7h2U!O?Gc^If%<-Dt(mWQJ#WUw*go{C0h8500S=!vaT*hZct$@ZNt(Rrs=bj{_YdP^%P%5?FP>oO_!bD+rg$XIoJVZYc}3(WVS~!ivG6dsrn~k#I)K+h1A5rb&@ih&;NZ8_iu6j% zG?R8dDl!K=g{_kr8yX#h*VrxJ3%2(2=oUIp;#(nzM|NQOI(dblvv6HHF`6NfE#@J6 z^N_J4IKc%D#&_5Fa08k64X;XPYzD5SrGA007wbpIN((Ra$+v@*8JC8a&iGPR#_Q#cjn=4UT8_S+RG7ip-isv zD|2&fY*}0Y|8Ox+Wm!O@E*|d-d_oJ^+oDFlzRBO5Tpf7}MFNdo!DsM4qlq_o<41i~ zY}YC+GOk`oa79pXrRU;yD;_1O-7qr#9Lu&v_j#Lf;On=vr(bq3{m|Rt13jc0{F^?F zeWA8GYhT!dy>RP4g&GLfI&>4ntp=!59e+aRwD{rb&N6Xtdz2 zC>)2?3~&T5n`%-;d6t11WDW-rf%UzaY(U;4g9KoInXZnC^Rc

    qTWBu=RpCMgP>* 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⁡|P{I3r_LC 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


    =3$y^BK5|Iss@Yp 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∓Y~ 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℘l2W%Zf>-x{a$Nf{k%PA-V7j1TT!n8~cqj!ZV_ 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 DG|b_7 literal 0 HcmV?d00001 diff --git a/packages/Webkul/Shop/publishable/assets/images/checkbox-checked.svg b/packages/Webkul/Shop/publishable/assets/images/checkbox-checked.svg new file mode 100755 index 000000000..43101fcd0 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/checkbox-checked.svg @@ -0,0 +1,11 @@ + + + + checkbox/selected copy + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/checkbox.svg b/packages/Webkul/Shop/publishable/assets/images/checkbox.svg new file mode 100755 index 000000000..321596040 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/checkbox.svg @@ -0,0 +1,10 @@ + + + + checkbox/unselected + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/complete.svg b/packages/Webkul/Shop/publishable/assets/images/complete.svg new file mode 100755 index 000000000..afb6aa2d8 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/complete.svg @@ -0,0 +1,13 @@ + + + + tab/heading/icon/complete + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/cross-icon-adj.svg b/packages/Webkul/Shop/publishable/assets/images/cross-icon-adj.svg new file mode 100755 index 000000000..d62bc542c --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/cross-icon-adj.svg @@ -0,0 +1,11 @@ + + + + Artboard + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/facebook.svg b/packages/Webkul/Shop/publishable/assets/images/facebook.svg new file mode 100755 index 000000000..43ea8e451 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/facebook.svg @@ -0,0 +1,13 @@ + + + + facebook + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/favicon.ico b/packages/Webkul/Shop/publishable/assets/images/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..e9c217bb395c0bd8eb3ea6755633f62b0781ff2c GIT binary patch literal 5430 zcmeHLJx?1!6dYm`qwwj&1+tKE1*sww=zrc()9%jBd$XQfpS=f6;0+cQz_y3|Ca?;i*BgwFiT@z> zo*27i3~)BVtKEQD!Y^jYRj!{eI}l6M`NIxayi@LQHZZRItvSf2+5Elq@iP5vANlL? z@p0#8^{DfpTAfKOWmwX}QmX%uVP!3OXDRnMVGRwAPg3lxEHA^`O{|l9pYq-B|Hze#QLvzu)5?*ZN@x#_hLXFRX6=z47bE#Sdpod2}%>-pmt->UEbzwq_^ag1NIyJdAPIBV;f)pqt{ zjzuHHZMQMUHC$C*gL0V@s%f3;bTE_K3k9AiN4eJeRr!4Xu}L2exd;AI>+U7kS4`)s i*2#D`!2D~5%-_gMwE807e~WyZ5IJv%^jjj2EAkA9Xf6r> literal 0 HcmV?d00001 diff --git a/packages/Webkul/Shop/publishable/assets/images/finish.svg b/packages/Webkul/Shop/publishable/assets/images/finish.svg new file mode 100755 index 000000000..2401834e4 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/finish.svg @@ -0,0 +1,20 @@ + + + + tab/heading/icon/finish + Created with Sketch. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/gogs.png b/packages/Webkul/Shop/publishable/assets/images/gogs.png new file mode 100755 index 0000000000000000000000000000000000000000..90540672faed4251ff3f49a7421ae238713198d4 GIT binary patch literal 98604 zcmeF(S5(tc)F^lm0TlrOr3Huxf~bJ>9z>*x5EYePLzU2b3jzXCBcRd=2!bdAp@$YC zkkGpjYJh~^LT>@a@4NTT+&eS(&dWT_nuq^7YyF?jT4$}j_u2cmPRt8^Eyioy*Qltd z7^W zX_qNz@aE(qbUmLh|5QU<=JnmA0O-WdRjJ!HDLoGv_jLn>W;cC}eLW&*JjOBLizUMO zm>U8VauRtk>4yHRKop|vh?*l*&vsUZmjncOjlDtQ3ef{9Fqb<=2v9K~Xo9c7W=P-{ zIPc;B0F$0lXooex#v>v(Qx!*|HHXiOVk5WdXiO0?)wfPQZw~{PI)FeACIatfs`9NF5NXAy55YRzMk78 z7Ta{xCy;7oA0IqV^>7bAmIL}?na#sa2P6Xg#f|9NG}!4C zQk4#ga~-`~6(6V1RK^|imLiV2WGGxkRw-g4(ySdWFyKpw_+FE5VUVg4FKiB+Xty=o zPETwrFghGi>Hx^dF7P(SuC3KxP!_tELKQst(Dh#GRCG`LXZ#)X@bCA|_IjL$)r5CS z^^#8Mw3uCWvUu!emy~$t^2w}HFl2hA6O$`Aqva}B@S~^%`ioRcm|h-LZr&r$8EGta z*F4HuZVAuGu6)*^DcmoJZ+k#s9*fujeK)!l;7B)PF*+2yN3(iCFXmBlkl_e!4n7l zjpGlbRNgwRM09pnyfBdBV#eaL)7sLGy42O`<$$6Avi&u~0D}PcYfDk%HxSNV$7Qc3 z$KI+inw4FOr=G+2Fut2~h;I%knfoiNS7OExYos+FU0U*L4-lu|n-tU~nQGXoRhoCpBJ5<`kc&m#9Z8F2n2A zkk||NI>kG`(E007dbS63H^wQkS2%}Qiru%`I$DhzV_i@l3s-iOc1n{4oh+{k%Oqz# z{Ux*ZbY|z3AZQggb2G`ueD(pGV&EkB$FT3zGXI(njT+=c$C9kGy7818UeyQ#<7D4U0OyzdC@~06~#fb(~EGslF}+ zTE53di3r(zJk}VjtG1jOa_jY(VfSGD_OSoGnj`9+%7r_T+^0g*^R}D*-ng+C>)`{4 zRLz5MEcG1MTCQSO#xnEBO_N}QYt7AJPMb+~J&La=NxH!(2n*O??I{pJma14?$8&}L z8q3+H4su$495hyQo&>TvIn{S|43oj;Z4D|-B28b)P@NPz*_ktY+z1*XeaBgP9?x)i zM5LJ6u4^z}^DYxzDy82&TH`L4B&=48$~%=L>^D2bi|2javU^QxP}v>{O1=7A=h{cV z4*?13I|JL7@9PBw@&@fRF3+vmo;YFi4 z0ab6zW-c#_c-A6>KfAIi9}&&R&@eeI#B)r-2yiFKl-(W2 z5`}9%LdZ|xLQAA-WyhwZNk#b}g((gdL|+>dC;MHadG(YWhVP;>*E8v~c3Ogru(&A6 zx-ZB|j8%J0$W!0`F9C!G%`Mam%w(F?#lz%siwtfPv+^-gGAWD zDBlBrZH4_bb>V~Kl2P^@=k0fr;OBZfGeA+N* z99fpX2PpY2@1y&o?^8CfpZE<n?mws2KOT15DyQTQVCzVpkY#iCez3W_CN_!m^n>^583HS;$Um zFLidA_77&Ro(FLOyr7eEX`)$PtKNd-i60B!myfxRoVo=Ln4 z9>WBeL_RtAoJ%(TXKW|0P$Z2#pPowN)sy~g#xSm*w^qV$2D&l))loDER+y{qBE zx5D$72KD-#$ASZCL^&c3!dVDBttpnRzc96S)Ga$Ln?>N`Qd)nMbKEUu${;%sGp_`6 z=|5Dj3Y(pp7S*s%r)Jk%M+~alpWeo9ay?*sJ~rQzXpS6V^g~p-8qoZHi3cu_n`Hqa zK2|Pz{YB9=^)?S}d1fNtUwL-;_(_D;cBAw1dt&BWExI&@O(<*cPG>~>%NlH?THak2 zvl6ox_~+q;Kg@Z&8EX6H3tmwF^|zhBa?Y~1f`OlZI3!6g6>4TwdSzbZhHF)i?Q z@&q0=`t|JK?olOmi-5zn0kEoJEFA1QyJT02-@|A_OL%ZU$Fg+Pj1&1mxSS(3!ASxG2 zqdo9zoSfh+(N@lL$>#JQY<_s4kVCg^N~d>Wj63l-kFrIsrG&^aS9x2$&fOJibYcuSKh+ zRf3+R8wERso0E|-zarAp1}5TG?+CM#5*TzQ+o0=solTVX?rVoE46e4#5eS$J#rE~e z$bP@uAH!xc|Kv^rs$!@R4kW2hjP@^vpQnlkuZV4>PoV`OEY`y{#8ON*DVC>LRsaV6 ze22c>eKJ*QlJ8atmoTqRI-+|TmbVyv#0>f0~Hdo5cR`G?GX zGtd}G^s;tx6PvvZROA5FJnx&H?%<>ekp(Uc>hY{{%-s~rmtK{V;UU+`yP zfbHkyEaBN^5S7@22Pc@x0v-9t2X%$hnhrY>(vOJ0q{os2=Hce$2)%K==%}1y+ppVg z=9c+ohqj*4al8dXpB8fO9zd5%+YcVRx>)BzCm&ih_zoRV;CN53V`KA;rW7!fF~hFr z)={?Rjx0)iMdU+idoRtL0`pHB+^7P~LXyHoPvM8e8a?o|V(`FoCp|~=j zG<&U2^SAODsD`g*)+Mvc6*ac)bynMUxD>B*15-(7hc8h5 z1b(efxwiu3%Qjx~EkB~R!u&Kej(z*u@2|*62ugNdHUxAy7{pli;0*0gRL%ypIdS{` zeQdWfdjcvH-S$$S)BL>(C5$u?sAq)HxuZgNuAOP^n9`Yx=ji!8)P%Ol1pp5(r_>=N zXK7P>e&-Veq!8@N$7t4y+ll&Por}P;zG9g$?w#$s$CfWtc$yF54@HiH7Pm&#%}x`d zDTm&lBH^1#X9@eRl%zhT%!zUN0Z+kx;GD~a>;d+*=JWM?4_wnv^&?_{RV6Oitkx8z zJyoqx``P~Ml=QHR!t251m>%=B^E&j_YyXxtsHHQ*{?ty+u0M>xB|t2VxeV_O=%+Jt zkuF+pv_AwC5+9gt!G@W8vrhuqk`Mj-nIoGsEZ2a9mcAgZP0A+u;CG$AQj|vX=Jm`2 zp8Pef3NW9S%fEX_kg#77%j9W;q(4U44+#3cD*SR0rMtxRg)-&Q1kv#IcTiC*8og|` z(4w(89tC&F*aqDV?War!eso4}f4azFsvr-B6rqtb393T@4hBj9dXq%bu|VSn0Xvh{ z^)ZImu3glN;PlA6du04dwBfCm_EYH1C@uf7?${jH7gu_|uM7^~_H1~;wRNc=cS^fu z;5dQfdbmAXhweT19LWx~l)fq1_N1+f&*#0@n0w6-D7Ysqp10Ac5|HE{`gSzVuq)_c5eX+FviI~e_nS5ptP@rL9%WSllMpeEfO!R7#YN7t^%rB9tHfmP|&D|F} z+@~@*9Df9ew{ENNfHt`NZ*_D#2ZZx)pM2lA{Na8kIJx(s3u~crQ`~p4DhEjARlY1U zD&)(h`7jB_24(Y&LKpuAiBx*?X6cjoL85!&zf4S1B`VP0@cW>h6|#JHe7n$ngrI`t z?^nwkJV@i=M-$|{hKKYYm9_l~93*=MY|CYSpLpvwno}acV6tP)d(no+S_qC z9c<49o;v3Lxn_6&j-mS3h_86epTiQ`=4C_XiRKjZhY>flA9eOC1C2Wga=pg1)np;`?MK`gUp5LCL1jpRW1uf8zX= zG%+KM8$W4&ORpv=bF}DS@3NU*t%o%(j!`J{jZs=Jg5>)ezceg~;A{w;Z9-bM`;o`4 z^Fx3K{*B(TXhL(lMNXkjD(zIw(+`_qnHy^zmmw5c^d6>Xv8%Q?F99vW9t?5$WEb3A zVwCT+oco}L2U!5lveA%){n%e8MsoAy6zT#`(Ko_d6;^pTT-9-$ z6Bfy)$Xy(_M;0n_M-$p!J$txl(|MW>Bf6BFX*7sd;s6&~5(PP({HW9O`uC?vyvv!j z8?F}+0q3vPld|T{t6HH$xPB8f=Xhid!^@LtE}l?=bTcDgr`cfoNQ(Lw(*%W<0}t*X zpS^CTSjKIu`64&@t;_D1rEf(o1B{wID35@-_t9>Q!Pe>_gbM0EtuTwz)50=B3iX4u z6y5D^UV~S!;=klM@HPLd)&R$0nrOt)=ZH>;0GsRQJWHMAR{Y>yt*v#A<98d{z3bwd z!$PBYKCy!UE)wJXv7a62`wxku05_qv+A-cvW$KLKz0NXu)iG6%!4m;_lc3e`i-Hha zqR62l{L4|6jGsz;E9`W)ZCo;b?sR7KYb4G-kJ6ZYBYWl~342oX_1!|nE>7n%BKp|@ z-Tq4nPy(-tb5xFST(|xg-?JM@)K%V=+9)=IG>@->1ut|SUt)A*O_mtV_gX(_e_u97 zNU<*Inh@wtGQup)hJ+8awnpQz_T&(oOIKgzcm}>Lg6g9_ZR?<`ZUrGR8n>Q@F!@5Q z`~O%)9L$RF17v0WXaGG4-JC#@Q<=6K0Q^jv^jTw!hEFup0c$r$DZCCkof*F=wte#n z`sTGla1dV`bKQPJ` zRqq=zYQ>C3HN9Ffc6MDHo`-lUk8n9@g{}*Pne)tbv|fU^UdwyKOF@L5Uc~CorsABh ztI*2R-nK%zM$(3`Uh&IN^iz`0eEO-t0TBA?y^VUmW`ye{y66Tg@~gJ_IW*&SkAiWx z3yecf9ExiV&4){@nT@qrVC-8kslrz(;R$tcb zFpG6g8W{hw{jFl(A05!u7g-N*Su}-B#EvNX4N~TxUyYGWy+xhN4R70zifa}sWtCaZ zkie`!?%?RN&&T7(T1KUNHc*@dgRsw)xc^7CV6Y3Xc&RoInw;w570qQoej#ECV{ zr1FOF_j^15ne;zx4g}#=G@f5>Q8?0yB}NT6-u6C{?7u^@M^o+MC-a(ypLXE`0D z6^zIGozFL#qQookoubGmN>OU)@ix8_vKHNa(TW&0RfS7-gjb?~EU9%d|Fhz$ZHy5v z`euQN84t{xC)7rG?W-QU(sr0xmhzmbI!Tmrf0lrw+-c@p&7fa2|_k6+7=ux z%k*b<`{Vj3PJjum1b<^(TTYhCMGihVd9Q#`_VLv0*6{#vzaw=04w$bzb7~}aqOZ45 zxaNqX(@@2`_PjKrMC$y8*Qg0kP{^R%N;L{w9^U}@NSzhe8UBZ5VZGK%rgZh1!*1<=IeDm#G%;y{yQ6T{;?O`J#Ib|q5_6wm>UPt$?= zWu+H~j%9LRSsbxlgvgz+jbV-7zU#m?x^WUyIZqfgv3?E3m_dPlV>l9+*+I6AM7)^I zR9dVtG$Acq{165cC^vPiV_lW5W>0_7*u6Bwzp%U@Rhlnu!8-f0Rji`bAyCFq`n1RM zt9>~>j6LW`QKR(v$%r#MKfj&wat!^6#?hIKDHiCO~J&2ANub- za6>xT*7}oJQc_!pn!2IIL+^H5XoL_`)lHFn!L&>9*S$1DR3x1|0%-EclWMHxm~ zFzo9vtk$FFaWiMbs%Nd@H?t<)LKoPCwT=77GQ}JHTp(d(j2?fT$QgLu(2d^>fy_eB zIrhbV<|)Z=H0cEGWUYN@GV1v*;*5@nU`MSBkVmT1+OLXhCOD$pZ^{_5zWdG!`sUN~eNlmQ5ARAl(5fl{oO zSALrCBO5QD*Nyrlv6w^<)Em6M*!0mozOeOR(g`Q%W1CX7K7qW-rZnMD3fG7>^L6zT z)V9uQW*kY&5$Av7XI;-Z)S*jC)?NPo<(F)VS2K=cVZS!BoiVJvRldKUrsx^u3q;#I zhiQ2(VH%?|8xcH*Lb}NvmGTz18Gdt=F00pTVjv;+pmLgmTSKGPVx^5Ny;`G42A-WJ zt2nx|aVA%k($-d9(M5+dAVcQzG+lOt5V~3FFZex4_smA_Uk2MP9t+ltK02GA;`}~k zFK-9QGJ^;oU(?iSEN*%gJb>Z7@b-CqxIfcJlQb%(){0YBvsa;G#+;|}9!9dc^eg5L zIqy*GJ-V7TOO#d=%!<_NKlFU(Z{n+kTp9d6UdcHikfH@z>blKXtPaFutUrRH4>{lR;^3 zuU#AvL3C~|qcXgcrjj7@MhoFHUR0c=Al5)!fcTLSy^AmPtj9%(t!4DycD`aS%i&#l zB?(f}?7f@DW7lh}PEx)T_kH$-dXM8M+VXxxq3RVKEwSUoM5=>K4#XbsQ?IY7DHCnz zwnk?;e&IednvTi%P6ZW^KlCL2w_Pwd+J>0?Gn7y9H$^pndByD`uM?}wz$4!~JVo+Y z)PRpr%;hNox;to^{jvncSBKBaqO&TNk7%2(GTX2Vg0$pv3gmTmYTbfU%I8JSD0W^T zzO%#7i^D&ejBfKibP}E3#CtKGR_n~u%kyi)xOVfC`2nT3p2M&3?maK>#6JXG?~i+` zx~aHq{CWAP;LR%zl7SHZL~embg)tKhOerGqQ(`=Dbm0n3P_yHXz*qEWA8O+1$im1U z<3qNmimq39DlGyob@aOmf=|laa26fkyR#y)Zqq=zAMavQOm1+DpC&Pgo;mQ188PI{YM&sP-TBi$Ndx=ta-UQ$CVg zyc2ocO0)F}=8uDCa_#ev*DNn4uI7|&39AVu^8qj^98kNefGq*9qG<=hsjJFoe<~(zqQ?}#J-HG7#uTh1v zY1uC6K}qc_56_(pfSq{7RDxTI-8I8?UgeBYIZm*|umDM8 ziwK4FDa~st@BSRFz3cPQu28-8J6LV0vGZ4wvc%>0yB0T!2OKZU2kIz$Em!qA@ENaf zX>^6(kL%IDUlDop`*Us%RpZZA^&;;CYPMi^F3K)W#sa^ESp-5si1Y7gZFZ~jwk(?j zMt|(Bl~V;;RyhPmuldmUO+(`id7IWWR))wF`2z6E<+1~PvxTDe4FB?vTY07}+XCA& zyMVs7(>-07&g+(mA@p3|a!lF36pZmYi-|^V7@PsrEl*96n4puKeQGKB(z_>}Z{Qig zsfLjCFr-Vptm6#iFI^S}$ku3xHk5A4z-a1!!rhQW ztqgWS!2}qhYNpcefO{|rf|<+*L&?q#Cm6FP5-+7}zbo&;VhbuZuzHn_8h+;%UCjG* zTZR|IztkeY`G)qF_+Sh^l2{MYS*Pya;k2O{a)5C4N~q^-;g9&{6*hPhrVDr}95=sH z9bze!T1$gJD1847P}3a7^7)0$E}e&9a;9<@ll{xnd7j4Lr^WpTV00S5L3zM!r7!es zU)TK8jJa14M34NEYf;+q@W~%K4`MVuDv+@0Z}yQbl^Z-E1zQ*rK5ubE|16m4xFrlS zv{P>G@rVEGqlAYsoy=U>1PNLkiALz3l{Iy+U;XiJNNSg7+Ih6*+l>HEFRGT=+1F8< z{vGbpyDuNCLLLyI(j6796CX=C+n4{PK#!r+UT|h=LBy&YvsuUs!7A}LUc5KPOoe}* z528F;vJo2U{JV1u&-!g{#H)>z1FDAc1-_Eb&so_xB|YvBf$VjP#`uVMDFq~BLImAc zNJtBxvirfMC_ane4o+i}btd$HI1ltuF(XaSSFvNh+_CV#`K|J-dp&+EcR7}4#Z_=k zBBAIT&xY=!;|TVrz^u?!xD_92I_P!W2R&{*|V@qgA$# zpZX~iSfc202gYB;Q{*Sh#(b|KfbsE?cGD#V&Ve7(^M?iou20kkeM#bmGb8pS6^^%- zTRjX2@RuLa+-ph6p$Gqa*Rke$R;un}N)hS9wkNT&Jw`m?J$@w)NxlcR2>k|<2!zZbW!xosf+Xm^_ zE47yN5n7W;~R9h7TmfeylfXUhB1O>K4Pp@|cp zYm9+t-51V32q*UN9#^Eq_&byUIfmiq!|m@+%Opha9$q=Q?EiTJ?Yo|oN+zb>+v~`X za=!0e*z5S@*I`iFNQx$iOctSwx8i2DQFZ;^y5Dyi+4x~gSirqBRr{)K_=uWi{p}v> zVV0m3`7)lSI+^+=KdNcD6zzwBUG@@<_u{r4wV|5v7*E}yMCSULjI6EcEWV25gmWH(YA{@=;Dy_& zYMm2;OXpnCo_iDU{v*+unw>rVYTeSBY0RCzL4su5gybrI&0w!P^&D;U7^z>}|1V~i zVV+Y~nVEY>ggw1nkXR^tTVds18^ZT^z~Ed^&}i;X?fw&9K7r#*4uIua)TrA|&RW9Z z+ws@k{8`x=fWJ2vdbre5n9Av<1($ip$nTQ$SpI;6=o(Y<;@eXcbhJGZ2<}2LTx*8Q zf)v$r;#SJQgx!*W{9ckn5^5ku{6vHm8B3|T8*1th98?CFdM^@3NZjbH-6b(UPc*we zhY}meAs#(0Eh3jE5V|z!-kI#I8=dYU^|pa8?-_USmkfrSX&w}_DL6Zf-hQzk(^fWM z52;(jaXC&vvS^y1voUfX{X#Z==RSkl8f7A>!c-;t8=O7E zxPz>e=i+_h)gENh8(1o(_PmJ@9Cx@CdJ%N`voQw4oH)fOnk*=)ao3krkp{8M(hEpr zTT3x{$vX*3GRndTT6l3!&&I13Jmk=${JjLK4^S5WiGR9Nn!nkEqj!GHbl_F=T&$&2 zS5J_6TUU_c=Yg>q%GE*(j?C%SmD6zGDd;@CmR7~tLwS# zMGYaIx>ndT+|^RQ|V}kCO5!E+_QMZ9KUxp~Uau z2~RU+)^I((p{lQ4r>84CphIIAF8OjpfmvqBuW^7b0;N^e6Q(WjAk;=mKQM6{E$jxK zwWhI8IKE&p7~zBMD{A=0xlOliv+#M3A_pel=pW+4yM=6(QSW!2Dg%N^RIktx#sRjV z>RZ61g^y6iXE|QK&onBSc03ux`mn$c1p=wTLHSQT-^+>zRF!^`bl8>DBn-rD9gHbr zR!nd;dMZnMrlG?QP*LLW(cezayfvqPrToZpdj5@o!I9gbRo?Mo7Y7N=_kTLQnq`uP zZ&2UOGk!$M)4LNiR5d3eb?}Ytq}kcuLzwGu{u20k$bEDm?t2SaqFK+gJR&h6ASB1~ z8{uRyMWNouHMQklLUT(EUsaDoQq<_P-_aM0g2h2Ta)T89i^K~)EmgT!*fP$epu@`$mv|$3zitOup+S0y;v{%uhZ(}Lyu6PJ9&UKa9 zjM%BDo=#VmSYaq$$jlYbHhe`^)M(-p*D;yNqP@LeCb*cHg>`9g#kDNEzV60pr4Us4 z1QxisGlT`#Q0me{j6{V;u^~@VAg#W%4j8^ zkKLXp_u-7ijV~lA0>rz$;!08yHmz`Kv|Wy!im#sBm+uWvr*~j4(x!iKRfEo)^ls{^ z00 zQX{d_(2xQE*M9ItD=MV?;XTUwmTgX)(uK0lD2LLqT*8hUe>;t5(o24wRoLl468xn* zua-*YZ4jN5LP9?#Bks1zgiucMTHM#buOOJcD60YXHu*C&1xH!t5OVY1$u~d76c3#C zbb4R2HgA4Jo|JjeUOH*zwASUoxOgi}k~=M6)oT$WVc5|+j9C(@4se@q_WpYjiPo^G zi0po<#K8NQwLdJLZdt*x0Wmj&3?{|7ax zeTKmoi7AVH;`#F&x{9YsVjNg z#Gq}+94o;jPIP(tQJoj7+s<2Yfwc+2Yg z72Nhzu4Ljhh>Zk1Z?VzIX2Ik|mm;gGx80X-1fw2g+?2srR3kSZno9+6d|PfwSjvvT zdtIh1PH*$QD}-6APxsSuW_fhHkQ+lu$#b8Alq)7s2bb}MJP~z7oYen{P2T)QJH~3T z{ak6zpv0hV$K(e%#%;N)f~9Sqi>&i zlKP>qMTZ+ZkrjvH9-5(u-u^;~#3l&Y#{NIaWXxJ(7Y2}ceFUq5<*mMpkNv!kftZ( zo>>MF675?mQ)tT1i)4~ypZyxW^=JQw{sdLOfDRX*BKxr5SbMf@#COCjaNUc(esRI{ z+7rV1uiRC%N#dwp7#DLpyXs?Djak792%*3ao@MR-EXW zA`^kr^7zHfc%pg0a#7(InbbQrOFAj3d|I6gL6&Wd`r%#pIPROv7N&jX%!}J&GFEmw zlS6Y7{rf9fuq7#P$oMNDJf>)-LE4(7;Qdbjr^K-A#|f@@)D5{WxhXtHI`JXw?OXi= zZp{#=lN;o5Ymv_EL(imN?P8wBRj7~cVsANu$vQl}?LF5mjzp+}Z_A-tA~vuL?>YFJ zSqz%jM+mIq*Nm1InRPM;iW+)5A_33cUH&P_54mtsI0SclYiLs~U?6aEGd?CsAR!KB zA*2?Ua3pw+KX~E<2Sfp==>2Bq4{9}249XqM??cY$!`L2-V$0gIT@#6wj#MhZ(nAkAb$qQYZahahcSsYsJ*;!JwU9nV~aLi7T*!4 z0D9astP}W>`yMTmYC}cmO<{oTql19tw6+aFV@eXgTw1J3;1Q@9t8ZJyJK(0#-% zI}}A?_zxqg-P9?3zJ;*4F=vjTEPPWJ2EIh6P}11Zpv4Q8#Iyz`POrvEWx_a~b2(&W zv+?k_=j2ZuGlq58S)ZXp!i7h0tpllzK~zqO{O-FJH#!(z(_-Q0;v6N zVMx_;M|<+8UI_s3fbBB){$=&e|3gN8_8kb}Ba{9W(lJuQ52=j!@Mn85;QhhKezTI< zIrss^l?mvwM8r3R@yq)iwmp1HxqJR_s>Wcn`-*RehUb80W|YtQEzI;CaoHK9#A+OX zPBv6j5mnS4-LbJBp-;nna&%3mDt^a4V0|5t*dg?0DX<`Yzn&v_$KM^aj5j+!s71@@ z@9c%m`gN?PYb_C89*Z%Alslq1oc}9`6gG>KQu0j~0rc%=`DAiCCJgEDs(d$wocS*p z8y@C>nO)AtMs(uqFl&FE``SbOYqwq`XbC0G z0*9m-9b|XOdSr^!&yIeB_(+YdNM<^iZS+`FCU%&QvY|^(fh;S;E1X|`Ks06mp>#k8 zTE+7bG&MV?ZP*m$vioTn!L++qwd%MwX+S`0k^lUY@K`F(BEgK+4JY#3qGS}D zd%hqZdc0B;G1$`~ld{RJej(sO+>kJ`+Pz6kvrwA&a+t`}Ul{C3_xJy7A+4jMveHt% zmDmZk=x?4d^Qrd)JrYs8cO~Fa?WgA2IDQ8&59!6mBjTHc|BgfcWk0*jasASsM4)i% zVSF-`cLa+U^cn4V++*-C6LA4Jocfi4R`Lk7Rxz$dfKxC}7h~tFrvHd}b+r+8a?Kwz zUr%)C)}(dK$@rv))O?khB0PU7lnG%1isdzbL>PyELAGDX?3YEwmYLF>La$wnKWoGM zlaTl*RTQ^*?B6)AGNs2Q^o%?~IK89JVK&1O#OqL&pp)6i#14jkaLwIg zFAfg4`Qkq`O;@{5HeeG;^XRAcAS$g(sWE3e9uY;O-iAA+mbm>O% zIJ4F-g?j!2tQ@RPJzu`ahEQ&UoJ>_S8BQo>bk$EALbd3gtqW<%tX0qT^@FKM5RU@K zMUPkz$H!gmkP9A!mi^Lm%G|ks)wV3VxbZF<+qP+esCdE*Cup$&RysTi;|=|=Tj1<> zdP912sQ&%@eymBtdrq1$E_T%8$?^wz1Z1otl>{pw1itnZ9XT z68->HKdW-jwzAx(;ERs24!fkhfR;(36*M~rLah7O-HTYhdmfL0$=b>BatAJ^7-QMw zLfu!p&DS@h9@2{<9n|6Ci=O3oj{CDP&t`~mvIQH*KqPT-r?P$`NElJ~PeLx%H~oi- z$u3K{Amt(L=-*^ce1S0bWVFkXUNM*}l;v8}MIpo1pQJ>6j`}vI;K%Q9^Gltg;MR(~ zx230uTlJbD?h-9?awroOqpJV?NydgL55M69 zss5e?esN3g5bVh!CCVZt8!ak@q;1H?zFO-kl-i5^LCkLaX#LMYF4rXnJx~0!Z|BAs z)b!~uQlwaH>4)39Sh(P}1`av94np8^T?P)j$?9X_)j9vz z{kWS7RE;1@=yb`B$Bj1i%{E*1C%hC-^0#fW6cpik@3gX{-)k1YC|~q(BxQ-`p;Kb| zFWsHp`rt=1E6Mk4b$`loog@*CR$WbO*%(f6mNN#_8ecLN`nbaXlR?^qZEJ9I9yb9_ z944!ljIJ}NnUnrFGc%_nQTpeaOi7(9FCEcUEE8CzS9NAcvjEg6YxDMxBE}W^{Il@r z(5{vTD6IH9wBIF!Ce!%mfU@uQXNP9^T;9k{^||#RaituU<|UiGnFO=w-(^|KK`ZE@ z(0SJq6;0QEBz1yO`+HUJ&f>k94;&M0^f7vqL`OpZPIb^yz3U6}pi|NG>d9N>b)WJ{ zfM3?2FnpH$qn~p@vtJ5-fcn-l9`-rgXxk=VEtRF}EM!He!OME~f==?19wjzXzd@33 zwh0Y`)o)?0S_jii%J~>j2~G3uO`B!uK`2R-uj*rQ4#T{0EP!pj8Jr4AZwkys4)3fV z9o$Mv2Q%apG@7>N5BpRcYoWaYStp{B;Ns2Hc+#45@CMh`-5q+m|HP1tasMx2$Zj|r z#Enp#OIDm5n|Pv9+qk5xeV8pFxtXC&#%CQGxBS)gitTguwa}LUTBZjaX2KjdM*?DA zBgyAXTX_S9N{B!{vwK!cO#*%}KmVWt-$@DR$$yeh)#Pb!oK2f%aLS{`>wW~oEHq8z^_Ky_BuD0p)R2NM3@IYeE4*koy8czMpT^_JkB+yhRNh1b8goP;qQkzU1Va zGZ%jlSg*$aD78=v9MQ4y#I}*4yl(8!`oB>~ug?Doh1{_Ef2NR!g$)a{Tl-e$B=vFs zo?kvkP^!|n<4>JDDuFJ_K}Q2^Kdftq6x_$3&e6wF7Hc77snAxRl^=j7h(Sc-2juPn zN%U`OUWEm;!O)0n30*{h<<%k&jzpp#R*9xapj2X>F8}`)^8XtaQtuhCQ&jd%?aRl1 zA&tEGR_|tf|AxKg-q+4ym=z=@$Nau*u4=LC41;-Cv~TQbNa_LfeF!PX3pSzPlGjzh4rh7v$UXiJ12(`YZ4{M4VZ!#sh*opw2f;~~P{ z(yusH=JfREVCb0dpN)FjlMkiNu#-loalWSZaJh51jkZdPy654U5A~sd(tw=XiSNj;Mx7R4}-3eA{b~l0R>D3I-@AqrOQM3rF9t<@S2NL6kmNT~6h_ z37E&UfeG$2S7*cfHNatcfcP{o;?5sxW&-!opQw{&JDLyCXN?DkdX|B~H2+Hr$)b*d z^AP`M7?SsYg&|`svk+^DI>$2>p5H1yn9w0m#rEf*Y}~WpzKjMwtTp;9U>?eaC5N~< zcmIJ@zJOWieAIV4(}tWG=vI4<9}@+``_=CTMV$QLL|_whWYqgp+U<&-HNZZ0P?^+= z7fi*7^vLV7zWO0}JB&{HYA5H~pn~tIP0JX0tMk!YyN#p;?UGq9GDvNCZcZHvkvalN zgk2T^E2#WRA=qPq%zNQQO+Ba|;l=$JIyqm_>#~l_Ijj}dsVBctVt`Z$SjX^;o`)Xg z@neK_dMoMvpGpa-Lpi&7InQF$e@Mt@=$o-2i0cuITl<$5681tVMBrHyzZY;))emNq zF^m|7eVO>bKuE8y-`XW}R?e-kHT&PFbZ{KJbNhuu0q+?Se%beTr1Hb^nyH)13ZOGY zC=qDU{Y@M%^&#g{)}mmLP#WV;H?mi(F!IkkEGk(iB8WjLz)#d9}SChjSCeJs$pm7?X7j%h#v#HT(e%FuUvuZSj^Z#K;h=GFK zhl-bgQUxkS&qcu%Y3MqA zQ4Sr!TGbBbd(QH8jm*-g6$tD^=R3Dji~s^k)l$-{HBV9Fa`OYMp8V{{Um3W2jrHW8`956=pi?dLyQdRg1+e;VK};(#;6TV~*l z0By_BjL_XG#OH7B&=K2fY>0p7c3~4em4>((t|3SlV#`Lu{)gDvO7IK|6o0&*@DEA5 zde1vV=rw8d{jqHdK5k%{NkAxW*}|UEv=X%{RJ#eVVs*1%sh|tn!bZQd1E*4yVW*PY zPV;_cl<`_pzhZ0V8e{O-E7K00ZXZd`u7RZ}=dWVkYYcoeg7P=T?8!pK*fr*kn6%+}BSO&?wBS6G!a@v{9w&4v?u``0KA>2*5eXCnRyGTRUgD$SlYC?+L^dfKY$rgAa zwtAyao|Y>>_U-x3F%gmp}o5X6F#H#r$ti@3VG#;F)9j^=PJl!!4(~V+50-o(p9ti^B-E9Hgd;3_5^*N zTRYB^d&X-c*CaC$KGdNT|74`s=%tdR43-@$PiWYLSqdlDr27bUU%Raub#B%f-EWUK zhVq%{>=~lK_=6fGk{M1DKpBYs#y+0#Gp&6RRKV%Q4-M2EE&kkZ!2G%DAB^<+uP{>V z8@`K|is1N>n8dXD_R}>?2G}`H+t9tzEq+rqXi_*5l{+lHM89bZ+ zXe1qnn8%`%G+-60&!qUkXSMl^PC)7u`6YOhhtbBrXQ6xYBrgUC{J1MpDUn>+CbU>- zcu^`R^PWA|_~f!Vuev0SD{EsXI~_B7%j;zXm)6MM`USnNT8q=2y>$fr@l4=7LB zE_!&qCLf6I?1YXiMR|cVUZs7T)PLgOXE#{kPWyu)!m=&>wUdG%XUi; zr`YXJxc>?xVJ2TTMruR~8(6x!OJvq}7Rjvyk@Ga^)k zA%b96rZ%?AKn{MK$8ctAJH{?L<7OYPErI6mApVbId>`u)bx+URI3ebVEiETizn*?O zE|Oi5MOK_6g{+=NO5t=X*VIk9>As_tLv1PA(v; z?{&5U=g)=^l|Ga&BZSNr-{_?Yw|+f zXzdcdT%M40lo~x-NRfCPZHC#R_&|5|6OO2L@~R;S)6YShFEQEU)Q<#@V)d+nO%A(FE-NT^-(tB0gl&-NH!KQ+%b%A=2} za<1-!ND5SEp^$Y2^Du{A$M&G>|J$YHRgqfrGTWjq=YTeAwuie^1m(Z*|dYt|Oz)%y@`ceN+Zv%02@rQe)jp2tH z$m{qLG3&ru6WM}K(;=O36p=)+)=Or2>TI z9|qJ?7!v_3|20G1IWnKx$m;HcYR9`3j(VH@*AVsi66SvlQJuersBV88g7UeE7HR!D zvR^DqqC(#*;R~Yg5vkhCem}wJ>LI3cB5@{poZ#etC6QHMNo2`J;^h&HL6^tKt{%2i zN+zquODGYJlg=qbqZOe?rsw3bl$+|~GFnf`bwwhpQI|v3%;+bA;>6Lviby7=pwL?M z?KJV>IhjB>B{bNUFlPwY+>gduoHlh&!M&v39_A|rcN9izhkLF8nS?H%-OON2!0{n- z=I!-S*VjNEd&An@(g=q?Q9g>fp;q|rsTX(kD~Dt>xOcnMkU5x5I5ZfNGHM*izN;jB zxDTJ8PIRmY?%bQ7+oJ#Cb^o*s7PCcthRlb9Hx?rZ&@9&%}(Qb>y0 zu}a-&B(r^WP%#_irXGI;ecr(Oml8J@>$a-gm=MQVH~9tu7vHm}i%oyPzho`rTp6Asc;?GQJn8alJs^HLaq|h2;9Atz<|DnY zGJx$!8C{?eRefTFRp#Y;gYW1W^D3qtWIV;Uf^$e%N{&J3hLLCmDC5-wb^ytg1X(RQ z4cks`B9}xzfex1_7G;`kAq3S21Hb?>h+NEIEi+Ov5?yKY1 zqUR!iXC1)X^t@R|@53O`T?2Zp;Kr4M|P`j`Ptj(rRGAjJNSAOnU2#dw^EIe;(Fx`yc= zg>w?(%Ukx9dNjy&LLW66+#j*TLI~dKCPh23ZZWsjY6n%&`Z3oeG>kHjEcJXqALhJ} z6K3vMFuzrfU|i01c?mobH@jAi^i>Wma|$c$AUg?dw_71eG$AyXx?MSTi7Ks}d_!mo{N zVfHICsE?6<1(LZnbI>;b&jQJo0t@K2w8M+}TafX|iMemyEf*Y|Q?J+_&n*1jZ=-}e z5e0~qKY^23D7?Ep#MZ~y9Uq6bbi!OQkncymB@=(ogpeLz%|6b}HtKT?5C0OQpE%hz zc#N==K7|OsaMsd0bw$-N9f-ibDS87oj>>PnM*=(c`g9`mssQTehEcKJCfiSiX`RQE zgYU_Ui`A;;)33ULT7Bx7Vq%k6#MIj7yN13yfpl`-v@;kMw5?KcPrz?(@~gE~;O|Og zPMArYW{ck!R1WoI4^pd1EwY|5CexOMqhkEu9`D_Tlb9I#t z%0YW?|6%t|emz~fs%u#bV`zcL@2riH%In95H^IUXxF$dD4e%naAGz4+IE^9J%-nNg z!rQ&EFp5j*Af zn7SXlA1KyB+CF1gEiI-on}o@5_UAmJ61{8*RgbccMDbl^-^xNT)j1oN`4(yQ7RoL& zuF>_4di(R5*e@q|k%^zUCl4qPH6EhqJp+gjSKDi5d|u<*UGw_81tqWf=4x%%nMLhq z;J9Z5GvyNSKrjUDC>RoE^Y(*_O=&K{Y-qIvXcPGv{%zzNl3~onDR&(pYgm)N9x9+5 zK;aw0h2N(uJSj3qv`cVg3Jz!&Z9lcLgH$sj?^}&VMA=)xE;6@wL`+M#dkTr+Tkp5U zX{DN%K{O_Joh@LFX^bW`DRA?y21ZUHGoxf~y?&+qH6)JI@w430Apk&CV??;Pf!*CdN5k^GEqBQ9H%7G;;4{BqMg|IM( zbQ@#~H68vk@pSMliwUBxzWKA)bx$0(uiftV`MSBLzOR7bYrkh}9#3IGOIJ&tIzaHc zV?FBhOCx7K@?`lTqJIa0>gynT1ZDO{YT9bPQ;l^sGqLNTJV2G;M(A=WD5L@ISd+tV z>IkZ+XGs0{2>$EQsuFIb6U(4{cOGbs3lFE@ zlab*N|5l0wp0!IY^e4q${-Hi443~fd`6*$PP#ClDlWVa<>S8NTgr+77a;y1^GF7?Y zVcx-8EcU7a%VT&7FN%f9KEQfVW{UOWaqk>fz`DDV^;6g=a<#8ouVmQv`gbOeP;byA zAC~8z(PJWQ`<38mYHX$KaI+vFfyjv)3q5eWq-lq|jv)TG=!jEQW0&-zsGe=lz{*ol zobz6Son4YN()0l(a1m4Gz*=wc2;cMi?}rvOkM8MmQ`zA!-&4DPcAfZe$(;p%Cx3?F z2|8hrF=ycQOLdTYwVg8z!YJ{0Og2+F;*sT2aKMKOG{~3$GPndx2fq%rn{J5A7ZkgC zI$IHCfPMAL77QGr!DbmG*Xdf;>Zx0~J8fZ4HmT;xb2OZy8SLf7pp<8Z*=en^`>U=1 z3YY2&stn=1&FjtGqeIEjCrog^%T5&a^`O}52-@r0+5A866D>!3SLN~K ze?w)PyB9pLRZnULWaIsY5xu^6Nrm?SD*;V2nz^k7<%g4jJJKKrBfOqsNI85qa^j7i zik7F=Q099ovmF7xzvqpr*w{vXi@`Bcn}De|ftWvKntWAJPWBu77m7>zMjnIFcGlTK zKDd|1Ym_D$yGUnGUfzO6_d%+Zft#MLeJj1u;7J2(@c9Ye2VT)t8d#)kvp91}Yi&=1 zVBKQa8y-m)thZa^I~d0XlzGFsQ93dFq-N{R*HKhDB>Wz4Eod=Ow42@x;eBC>fgbM@ zM%H`+8UN6dX7fwDtl`Z#ODxw+hjb*1X`#P?&g2Ezmwr6W$SIH^IqzBHP7a4T)FUrO z)St!5AB=_WB1~*_6f%G9Hid3j;i`5^&CvUY45&)3c{Q9+#pTxeRULh1RHnYDg-Qvd zQ5=Zu1e=>Q;`iP?M1XGty)X}^XAW<=B5CCqHk9w5pI@pZK7)AY;HxLhLACq*%<4_ z+k_a=pITIXs~>Y1nBGxBY&{z|nUiT;Tpb!Zr5M@~^Tg3UC%wC5DFP1DCJwy!g1>f@0eoqX9;AO7|z-L@_7A^mq&()^~W`+rp> zTX}AA(tB@e@kSa9vR-&N&KK^wb>Fh1Lfp>^yQk$ywd@&LF{c{Pg$DRS=&M6slAc1V z81O~UV$XaU&g~{+iPOi`+ohJ_DfP$4sQ5yFHb@((VC1qRsL$h)3v3ga1oU2?Xl8eh zD{t0#yUYAg%s&rS0aH+^Ef*TY7w*^Rg4tImQP6~VU!J6Ck>RSwaY04S9s{p3vrv3< zJI07k*F$mm;74yETV6r)doZ8PPz+I>9`_X&mX>yQ>%@zbZ4Tdx=Tq+tzC1!&1HU^& z{Ro8Zt;=}f!1Eht$=A#D4<)IIfmJ2tG7IHSBr|$7U7JSL%5*`2&+rcMX^_J|&B?r} zg7WfH-*>^Uk>EGJaF0K6&f|b~f5kqT=|7g_lL}wmICbc?a7e)4enV913$x0g6LUud zp?_nNmPQJ`(Vx8#M6!lD#*n zAFj8v=D#3GxeIBc|3H%0|Ar)?!*n_yCDym@0+Sii^yYI#9#@ zkCPSN_ery(!MY+LB6L89TY8t0S~S?GuoxedD;Q_Fz`IU(rtGu~(i_E~(8%>G`(5TG zj`r#r&h(W98c&qYo@H&64i;mC4N?imkN2%ao{XsUl`B<{ClTA>_+{I65clgXeAfLj z#dpSQsA#>9xCU6CwzXggF2=NDqBhb8DE%Wj>iok(5(~4Yu=u-Cc(;TtWiw*-8ZYFpMB-;^3!-oM2R$;kQ$_T<8@y}Mz5ZU!0IIBrOrUZyeH@2>f{eEWyj zyCDl`{0J5Lw*D8rUSo#(V$XYx_B0FH^OA1uf%zUfw!M~z@y2ME7r&sh#n9k(DL>I` zH6m~S;YGA$z;C}!a(Y1u;%s?Em=IMf>oor7;;G)%2)R2kcXs>dKb2(dnH0hOmGRA8 z{2lPvKx5A6Q-dCD4Vu+;N+Z3%A?OEIejRs!RWDwEDPp&@pgvi1kB^OQWfi!Um8Xzk z!@a&LH7>>!U0jODNWKar9wPK6=hN0x@j^W4L7;Ix$_h0ymedL!w&a*IS<9<~s3ALS zMn2OoCY1jT9+~MUiTV65JMyUGA3D;0&V4ng%Lmri5kWAFbtuQcRKTi-ntNpEgGSBU zzWYbEPR86G<_It|2gLUC-pgtmzc!5PlM4;P(S&FR*|Cb5cf6~WVk1^nt3%^=j>!9% z{>RN60JfoAjP4@xqAZv$f1N|i-VYb5a9zyw&*qQm7UdLV4tJ1*S zg*}@iVm!K&N>U@i*)-{OFBzZAp5IB*v^ydbXYh0U?L$|@%uWcf1Jv$MdJ%hP| zAi;9R7g#1wh$H5VbCaiRWi)?V7Nb~&G7>M;Ba2nTc5kDXS;ssPC}B5UF8-s}c;U2R z9ae%$?PXKN^d~E=Y4D)kl{)2s%r7!hwK9JGU@xMj`@fly#-`S+y$AIQRXe9CJwlma zpFdD|hnvgqk=L%M)eGcmJsmDwpi79m@R@IdpdSy{(6JS2KFqyNJPn1evmL+G$R!V@ zo%(xx{g^&IF9QLGCIsWB+wZ)!ea5%y8=1eBhcZttIMc%dZZFCHhGba;lejz0@k+p? zLBjqOIc8LOzM;vbYgj}d(^Wo%DIQCdCuT6G*!stdjQZ<3;HXHPb90CC8b1X#iIe@2 z-@G=MrEvkEIoidql}HV7WPQkIOTqTo^<3>Ie$R(S)^GXZBC&mqM)(MJ%?J~!&xMT- z589-$6*8~lzyafU4;nrPk10G6fR`^Y5{yYWRg`h&VlzGf?azqv#LGUlo3Aez32_v; z1Uv9x#XU>v;`FU%Hm!0kpX` zBa0d{{)VS{^_=+vBSWGc=8O073rM^8!N0{%UmmO*)sb-S5hAu4L^u5pFtVhD##-p! zUl@N~r~A)U>s76B{>8f9+cBXL7%v4?H^771t(oF>%ZlOy$*9W@( z{zFAx59lEMp!iH@*Vu~ecy+tmv>Kb(H@k26R1|Wk$2yp}_n{`ljj7^e|F=TzTEVB^O zF;!~uRU)AmG%dyVVtzb%$=@kbTF_&%C*j{vWX@$QNp)<;%`s{o%`FC)LTk)tEY?bY z;Kz09<989|qMxl!p(KJ!U0gJ8I)zgbyFS1B13E0ec)=(`($Wwe_w#L1cCMw7&0$hD zUO~8XAlJ7wcd1Bw`eAxzb-nFOg8K&2cY_A~t1AGmJLS@o#5pr`Pf5I(Q1L-WO2+-B zlVOl6MjLWS{bk3Q`@>Uq)QlImBVkjg2`C4kJwP4}p=)0(W#h za{vJamkqGMM|f=MBI~qG)aCrV*<{gHy?f_dY=T{7==1-;BGohUUw96UlAkhg(9%r; zD-idb!eag#7AdviU#{VvZzCo&?IAR%u1}PL%%Kur>0T90%#(+@{F&dF1w$4$jB@tB`Ezw*6Ni zseAD_vGF^sc(P4=)Z?h3wR?QV>JSHZ`P!4wK+5f{u@-fHLVQp+~3u3%jzVGS1KS8-}@H-y5 zg*8jrH52v~`%!e6PT!NS{GTRf|HDTWg5KBCcNn0o%KK$D`i)xH4S%Edi2Jir>To_o zM3vV*-lJ(d%B&qQvdQk(OtiCVC$QI562#!`ym@R_>9z}W-dLHR91KVy_xOOZdu^`e zE@m?_lG1b-TX(~gUt)9N>fKg@w7(X@57|cDxUb7E!N&k|vhcj)2w!IsAN&In<>f;R zg^;!B-a}%}70@0Gc1RmUz;Qfoqe}41BzLTznSO(Tyom&b&(9l(g17w0P2Oi3aKTJ3 zcKD_vjXg(%i=D!1TcJjjr5_1d;kziiWzFx3Y&u3YD+^-AD<~$8mtdPR*1%P zrOyISRlxAA8MgD~hZ4T!)=77uAhjqe+90B`tX($rcWt_3zxQBuQipxV9DIc z{mFJuIz+^Vy>Mfh^N9TKt+$fBn5*|;L;Fv$--(tgi)9`R6nm3O+-eh|x1tp#t+{%P zv*Ag&;->KP3xfW7dpMY{`W~dW3KZ_k6-;U5WFfm^xgXk%wMcH*^yJNuFD0^@={ORi z8@uEPUWOe5Qm4}Ssicn19w*it8uZT=hMDbdUKEZ$I={~ZCc;BI+!}Y0d<=zseX11y zFP|#!m9YPNFtXg}e+DB%B)`DOxTuwbWq1Taq%#aV8=@8PXBs4eRYf$YZ&T=tR|h*0 ziaE%v5&QY7L~9X-%pzEj6C69~X-3+AMyG@9){L*Xd@uG6hIYb#-rd>R1rM`t4i(3o z?@>MNsvO)jBzic;vDQ)zF0+w&nP$z2iA{O4jk)hkA}i}MtD?5z)e$uGBVlzG*fBxV zCwz`;>eRYTxletDXB}>azQc%lUGAYZH~I%#JuC8YIJhmea%OvAh@F-pR75pyO!_8J4Pe&HYKIcLouq(ay5k4GHr%$C6}G zQ)f>Ah5O5k9R7ddMV45T^+zGKyb+=Ug8v;!{uEr`zX!jCR$v(DH$t+TN`BVsx^BAo z$p4$NvKte1vA8KPSZ3xZebL#)H2nGbs{=aMOd|eLpF3=Xmz^B}9HB-!g@oiMM92cC zt&+O>5+Wdbto%>apURcymWorMxhm8i25A&ZSQu%%xXdvJN=zk5zvGP?0gfsGW=ZT1P>kyb(Nu1M33F%jE`= z!J)mU55ld!_N#e0VRo$95Y}Zl0Od@i_sS(sK$b}vJON6?KXIlnE zB1JRoO>QD0!Th>WfdE5XA-gqNcpz1|{z&6i@DWpWBLaYa4evgsb$*JChC2M^aCBC7 z1da0JYC`-|?Uiu21|+e>A?ATPd-GBYn5y#WcV%L8Z`z}u^Wg0=-$&?8+z2r-bGSmh z65IacxNJx@gjCV@rK!ATFOLCDi0V)Oucf4%_L5JrlzFGJ-^brUPK7mTs#i)6(Fb2f zBOPhkb!r(b@1+~=$?~oJ#a=}s({Xwbj10fQ&>@6}Ld_aT_m>HdV%)zN_%99vABuWM zny9Sx0`}2uAccwFAmWKUSm&TNaz!cW#=wtY=%L%Y_bq-NjUXR;mp9lW$LPTBC8x;D zCI$usP9p#KMq|ya@eD_>d#wWPY@)ZQPRqrVfe+SAX+1l^DOQ#yGvYQ1@wYo{q+xFxwtF5Tv#zoZu?GuMv)Vym69L5ChR-#^5U0 zUs5X>>1ayClaqO_HIVzZd&&plM#EARJd&z<*CMvbpE{5v1kpPK*PQxs1IiqV>J;wj zhX3eyuVfZ1>U$3%9JdF^iN9Png!dLHvY|ho8j@fY40;KAp-EDj@k6w^>Xm|Acc zA$l-U+HX7RR_*Q^sz`6F%fs;S@NHr}EGV!uvAGolX$}A?i`XGdOz>##3DtD8D=JOzkD_GCCx=e$J@_m`dmq< zvqxY6Ni^JNP&CCTM+2jPC=^k@t-E1RPnlR@502sMBZFO6bH73_B~MRWGEkXTeAm>U zCAyc;z3)Zh+sEEJST34S(}R%(&22EhdW4YIK*mKDH>6au3(y;hz<=pEUr33VJgie> zE@QreR8(Pu@R^zHmiRL~L4VDF?Hq?jI_skzTdcmSH7G_>4-rJ(91CtYkN%D&+f<3K zhvA){6$@7cM>sA2&SMi)b;8ayukHuXlEHo(7os?H3kiDG(I@jDa{hWcEK_a()uSPE zud7N~eL-8-gp)bhbrPdMWO#wO#3}}C0R$lw<{|Ol;*!pYL}uS^SWQCaEq(9gw#L!a zc*A{>2(D-i%hk7fMoQpF_VJ=eqAdpkK>AtJRB}b)>^**ysp-sO@-Dp5%`CWs9t-{$ zPj84Q}w4b4$ugX;NiD zhAq7kux4>v8rUmmlu8SwV6q_^ImlbkTW*=E8yLk_Cbw*gofKO33=d2_H>fwxpr@Dm zzB`EDQzBAkv!(10rP7;%43{Ge`e@oEF}LKxRk+hN(nK1CHm_7u>PCHk&baR(0@w?r-2Umb4$JgI;(uOZYy}@(4&azn1I3Z;`39=}Pqn6hZQ&;Me<;e*53iOlk8m7lh zy@$;e;T95R#6^J+nMU!BngqJ9LEaiQ=l2G>=sfH(@ea+(BB`HWN2{Z6>FjJuI1}n$p|*2_U~ok@ zCh1FSw-wojuAjUZ4()q`PGvR1Q3X53>9E%bmveo>xnHf7@+Qx0m}nLPsrmy!8s&u5 zCmTV$0iAF8Bky!z{Wm@44W5y)M>e?_Hrs|w* zpZYG-aSh9tpuZCO^&J`GenVPS%Rx^48o@_K#ACr9#JL7)J=gGYKD~&LCm!ht zS!L1V(9optVa=m2hlP6s8XQ$ z43^c%yCL@87oYr_W!xAe?(z<9_PVsr(1#@`ap>pFc<0*bE7(^wb3Mt|!%Iv7t|M_F zJQ&bSJJSJJs!4rM zt`!wef!h}|eZIE*1-pQ2-HsxPLkc@-m3$N}<^+o`FK3g*GM#!4{)>Yy%VdGwR+5aC zEwVyA*L@nb*k@;aG8e((igN24i8OW-PNRdWH_-03pJkzL_u3=YI0MFQR_nW3x7y|4 z5b|JrdquC>bDTHuO+`a(GTHiy>`A(nfP}Ks95_2xsKszKBMjq8H`uKTu0pZT0;SHA zzfu?L8BmDOfYM%1?m6uy8X_Y5Nwi+*AyQN(=WX4JKz=xkoQ zV`Pd(?A6#P>Y=noy-%HHuyhLD>J5${Fiqqk*WR12A^DE7%yj0&y(AlLu>c7sMk8#i z%Bot{94uc+P&Ijv6jr+b-oB@j1P|;cao>Q4@N2zdpGGTqIyNGcejnBY(r+gpl(t4q zBey5Zv=r!l@}r~ijzN^f?^A4N9gn$Z2qM`XZF z&{|VyE#baU1TBs0*-fA}Mt*e>mlKc+iW?#!RdgMS;j>c$~N(NfD4i=m^Mqrr6}&!P zVt1-+C!ZrgDzmYNd>v^)RJ_uO8cehVW0KcppRJ*nqNzfdS`7I;X9Z3F!;T`@~7qigh5fMn;$Y=Q${vnPu zsNXajp1tvWuVYA z81gg9h15w30CZ!R(Ca-&&5L!IdR08-2BX|#M`{=|uAQ`G{Wy}yE#q9 zBnIz~3VQ51h)Ue#xb}C{w9t3k-BUsqiOTv8>pw{CL0?+%KmPif)dWZd#1XY5c2=@m zPzZ08^6!9(>F$mNGCnJK<=a5o&@jAnazut25lCfig*Sz*L+A!jUk5#J#Q}LK&M6`G z<6tYf+$+4?5kwJXo#<8JinBp`#CyC-U8Ol=+ymwlBdFQK(aWFLrNmD7BVNWr!4lnR z(DN|JE_$NS3dzCD=msju4eAPlkha#=)=XyN6pK`Z5E!e1;eTB4u)a*|#daC-okxO2xmtS0x0NAs)>oRtz))PromT(SdFV z+AM;(i6-%&eQ|EUCm9>YXKVPb-Oko_)?Yl%UnT%fR369BiB1$$2e*{`HQQO}%5sN= zNMA-3vn@Dc{^dd4us~>4)^d@VHlCdO8e$?Lx~(sIcMTLwC?JR}30O?Vt)^AbvB!^K zdY5w#S(zYG6nE^9x~bgcdgvk%;9t@S2FmkvRTMe63mytITbxPXFQebdGxv`HB|cW> za-f+LTTC@3cnG-} zO<-s^xLmmBn73i|b{>*#Axro1bl@Y*K7o?@C<-!6)w+5}xce2hXOQHmnpiK87$#7W zwi;|{phB2OU%wL~rirSvlKG|pAiIsYTzB^LFda%#F>3Xs^dP0l^(-d4BLS;Uy2a_C z2}swR;vd>tc|k)pJDBo?2xP;tbJnCXKKR?L^IQ~@|U2nkYzxU@;I8I z2?Yw=(bccW(H#7idoriqN(U1UjyU<%0&qf5N&yVh)5sC@sM~dEE3m>!C}_HMFG-i( zD~k}m{ciJaPb7akqboy5bib}4@68rBb)ef7<0I@#7SW;$CRt2;r*}9S?ZTc(wKLuq zA8;~*NM|5Z0d*nOIKS%xIfY#(zePW0 z=9x0~Rs)fcx+1mj)0_G(NvsAgKy0Tc#l)82_$}R%Ae@e9=b6;b`;+2#;gHl++i*E7 z9i*IPhVwDzVyMX-Inn$Xvf0Uu_x-SemO|v67B$M^?*?uMR9W@WHz8M>`Bhr&N zoRBb;U@`7ueYrSPXLsgtIu;_*Tlr5NkWhdYK!#kTA6(rT%)-<^0<{JqFg-oVgLWEp z$eJSh8*QY($bQ4Jg1?Z;ecuM28Q&3PuzL0P(Oi;tjU*R{u3h?L8c5RB!~wRPiav8C zPR=79ziYk`I-M>5*of1qHwM+}G&VvW`|iv-gm+|pBbqR_LL#AQo#9X;qBLnsP@HS| z)NX7Wapl1TCPQ>$n{dEYb0|${AY0G$mPn+MwZK|0AFZSS#$3)uOe`IoQt%zApCF_b zsS;to@B(;9tVBpVB8d|R1&_)hE^9&}AYPRM%RVkdN3^p!4@w-bi2VERLPH&Z&1J_C z6#Ho~b>t)FhUpS%Ftr5}T<^LNvNuBgGHQ^96XScg_>2)Y>~D?Ql+MpFUroYn7MJb^t*$_4G)Yv%M*k?~5u$}cxXHgr>y84qfg*JW= zJ1a?lr(ypMQEvz|^JL>(iz-qYyG^gl)gEzF#ioGBLMpA^6F(PP!-#QP1WmG^2T@pg zsCy5{%aDpZv??c9bj{8F!3YDlTqwL<{s^kPnEZIpvhadDS%7g4iLAyhH4})i>w#K! zN9!Y(J`Cgw1V2Mk1}x0@pdf07e2w*_nxCXx;Ol3}2(_e_bieD~X|7{#k`Y*tm72&1 z-Nl!_{Umh3Nxpf=^-_nB=xp{MJk7x}Xym~ZA|hiPt@Qzw%mtg|mC_8!RrN?>ZXk+_ zuQ0i$cuJtvliwQ+||{m2-{Mg>I*D|NHm3?O$k$O$ky!xVvU?FrBds zc0(fH=qX-*yOzXE>F95N|M81lCAt_kM0XS@6}k}s3g%OpqDnY>H(>EuzKp^1v;qJUEjCaF7D?+`sfhmaEURHd5WvybN6u7U)Wzc zZUa;L39lryX?{P5XRjiHi-DNNi+U1R3MX4~%>7(IiCpZwc|r04{+OO2$-)EzqW1 zsTq_r27oWrY_8x1uMYORZW3cRnf`e4oO6GOY>{_La**trZ6Y6)rnc9g#?v@G)hMV~ zKC+XkCS_0y4@ML@Ye`Oa6!&L=gEIu zsG88xIU54$3D*uk+IReBPf;V)42Jr7L%dO&VR8ZMcpY515hfpEWOr@%M|J}4(~4@W zm`?zh%m8PpOhFM38*4vEA)F7l6P|`&tHOrTFo??^;VJ5*?&zawVIpy8xSAt1N<*t6 zwunwp;k{UuQkuh=Qh}=@{A|kV@;7k*SMQxJICc7@=COwVvH&Wj?=We(i3ExwBHSzPDk~Y4S?qhw72+dJcc-!ZZA4=#*y=7J6&2Tc0-9oR?+^q6&M((9}srUM2U)2<~RNG^<)#zfVO{g{K#(iooTaoGLgQEJ+Y#NcL5a zj?NlHw~yi+GkBfaCb9*`PA#l$y+R+(%sgF(sK}6BJ0~}Ds zwm(*c-)$o@$to!k69KFUkV$4 zFYwJ*+tW-smD*Cm+yzO!4%J<2DwPLI!kwY;KgB>8@`t?$narR~twF&XkBUU29xYHp z$i9?@D`pc5c6C!BP)~v9>4Y`)9sK&El6+J2J?hm2MK%a|wNnDzbMhDOpg(cami2PY zr0d1HDL7hotJA@1(nun~rEgMnaD{pfqjvMjs$GX*+vTYta1-xdl|WDsTF2w=?op1D zYvs-&@h@LGpG%wlMAJixq*V^bK=b$7gtj&$=_mZNBQ>ctQhFp8zQ@bI#(xU!bE`#r zR|D1cS-vj+L)Bl69+o8d*^-MH6Rp_+rFoT-zXHHxo&NS9GD4P=yWp=QK1X{ z`f8n9J%uzpdnP<>Ht{=VQCptO=LEpeC6f>`@*=+kF~6*%h!SBU&C_J_myGx5_M^bA zRuP|LW~;k+%A3x01N))Hz)~QA@}#;$iMz=0&K1+UPk4^v=_PKzRY*UL2H9SyOlhZq zhv(NQ80Ncp60;DmYaag&>ji=I^9*xX@SiMX_z@IRY^mN%2cH;HJ8;-3>$kK(AyNrYApgZcjip*Udw4VaSFWBU_cN>n-G(8T}6i^-aY&W9suJ=V!J|ZofQ6-G*f> zMlGcZAWY(7n;G|V=~c9J1-UWfn|*Gu5H%QcuI<(gX&^pI2o1M%0N82PaL5w`s6?i~ zm{lNUS3Ph?*7VM2SP*{8zKk{ zrX=ZjeC!^Qj_2hj`m{=x>Mg_R0`qQBk{E9YLPlH!GBa%SI!JlhQ=QV$|Zsg|}!Z!EQ&9ZCFxCP8! zi(rcBY);h|!VAIl~`p#QdP>Ftgcon>-~QKPC&80NmFz}6s9PIW0i!$%CdPyvCxhgGiGQ&j`_^R zPEecH*vwwH-F}BUx6uyB@%qpczp;(7TDqi2CQH!f&YUFynPxL*&6G(!#Vw1$!C_e{ zJzih`pq#WazsIB)8fE(W?;S}&ayYB4jU|m{Qwb@jOB*#?wKlf7f@0=k5jd=e!KkaJ zTMDDC#Wrua6^+;X3J}+VN8hugX$UaE?3CESZ zgs;!fyo9SS=jq<>Q5Q;ONJ@N;6!q-+3v8&j+t#gr)^_dLDMhl;ZvEx0cJKYGeOcNu zsa=)<{oP}&vO41=-->0eZ5_71yIZ%ij?~}aVW+Ua zFO)sMQrRHOX#at3w+ee@vGjHKX(OP)cJA6^e{kd~DVdY)yjQ%^mMveZzHPDi*a5Hg(O19IL7FNl}g6%lZ#GN)K_g_nq`h!_2o5%Gipyd%Gs24x4OgE$&j{V z$2R#s+9Wu=K9H~b*)MF%_8s=*(@)!snKOiU)TT|JY)7p+O6G2-X2M}v8(lV_^*5(F z^9%&kV=%SJQeo@T&&8;EU$RKxP&C78uRCX@SYT1BU`J$LV_~yP)S@L7v#k#IYd5Mx ztDpv3AZ6AjzszlS-eX&L@36i5WTNYD*}?^O`0^DtLsrsmr7@6R`SO?Ad9Qh`4NBnG z$hyL(;3l;9usRVMvp;lAvl(7xues2vUD{YDd7Kb>LXnojnQ3{=^ofKvVe(pqC5`)u z%K6|Z3MEW6E%9Ypl)JRM&7Zf>I;Kvuf!-cX7`NC{Pd#l+bH-B*8ZOsP$_pGawll(DIa}?r{H*HFs!PBTJ)E z_kGH5lNH&~*6#g^7HZL6^N7|v`(zdMp?GAOj7j-nb&Qf$7zVr$ntDFE<=bk?xBsY&yc+5 zK6#q)xT=&3g?|AhxKI$KJA-?$BmJ?PoOl_JQD41o5U2<6I@Jy*CofARp`)Y+W||_Z z$|E`RY8e6`9{!Dh<{p9+6de->Na2hE1HXn|CKl;Y9=s?KQfO$#OM0Lse0WJiTxbFoI2Sac<>?n&2JvFg<2<{bJp3uUPlNR^!;+= z4N4P?NYEIVY(-)!;TA9qxZQJTX+o-M27S*?7*G_xvkwrdj(dT<{tqv(m4_W>k3Ia5>XmOsG=Vo~IVY~{yc(UPr+@&P_u1!}m+1i! zWwNcARu5B6f4+FVpl7`k!B3P&8j2sQa=wB?+nReSE4dT6B z`-F1TRvvnooqhTX?e=@`v)%Hg4XNLnwA{hB)}a0!7C!ocNr^K|Sh_>%rvtK7d9Tg@ z+tu`yc!@%$exx}45Q78CZ&%+AiuZB~liw~2nSR!tEX@WRkmb8W7HYR}PU`5i8PjIk zz4zQB*=VrWzy1w&{>xwKOYc{`>Q&B$XSJm3)db>7N;r_Yct}#qL?0e8YD7d>GsUey zNm9@kS7@e>MHBK&fWESiiIb`?rE`-CMhQh;vSx{Ct-q0-5-u@sfB8 zv{Yigiv&OfuUS#2(34`Rl=%f%?NUvrY@uMhr2uhH2PIz8lp;!^(cD3tr+OTC0{Iyt z9{0q-M`L){k2Uf%Io)>4ES)Md_R%Mvu!n#18@uV3zp_Ukf7}jTw#*J+d6=y{{7~%x z^~$o@9ksD1tWKadqQLy9GqThemYAOV~)ZMrL( z4QrqEU9ES$?H$&?XSe4N-u`xb(_7wZ>z{ctW>vPw#g8E=dwd26qyEPQ?wRRE zH5rBQm3;tU3SaF?pXpDnsUgd}L|lIlKS+zdN~jWdnew}1iGwSB0^bii;s_g2fB*XK zyY0?j{YnPnZ?^8P9@{UAW?)Eiruug5*sf=E8nijkrU~zKyXdd}#*RMb z7|BbcJ#^o_)}$pH*0&GC&=EDI;+ATKh4uZwJ^d|`JXG@|PHw3Ts3hL{$2I#4m<%97 zwsR~8jGCdef;cBMDkMGdhmtBR82lC?AY^9;6PHNplNAOMPxdeF`H-J5Q9iXjyxd_K&D9db^0wshEaH~hkmU3sLv z;rv(Iy0sg8IrZ&tea*IR+Gu;_fJDin5OTJSr*}mG5>rruVi}c!Lm86JC)*1Q@tpBI zFAGv$WfPYtC*A@_JuYA}RLf-=SJIQW)%1)b2kaDajtHyeLCya6Y4B~*Zr(ksAGBF> z=8M+@w(7_uZT6g5a@23Je%*_8+O=z!LK(G3wRCD!zl1Yblab;mlQH2H0Ze(-{vtN3Sz2U;wsiskT z9X5H=WaAyXhb&oaKmN&2?U#4mV^>}KQ+xS2FSZj-JYIuvm+jeiKt_R_cHRbIRx`Nw z0VClUl@P$lCUrj64HgHD_7lBPtqWjv@Ih;p2Mo%{kB1NQ(EwHBa81n`_As&t?V@|Z ztQmICgAZyqLpu?jZBl@o?B($R=#%*=c=`iH)+^;WT?*-G`51O@*fbJEG+!8}I+@X7SRtZy$G zXFS}B6AwZ;QA0sM0bJ!(mQQ^3xZz_44ztZ;mqymy&9~fQx88QEJLxy=+HE}py>{A3 zC%dl;#n3GWZl|{T3E-G12meElKWTgAP;Zsbq*?S0%85JJKd7aRmaCEvyS?G z+s@s7E($*!WQ;}!dfV9|_P6N?4n>Z|$f@gA-TQKy{vus}$PSk8uoRAxoG&<%IR*h< z_&Qa)UhrUaq|w%_StDhmi9~(Q1Y~TFcm=7$^rXWKYphDpk5({%6lIDdV1R|w+Naevz3QFlyp|HwI*<_v<@~_AX zqRX=Na5RP;9Zp_OmjLb285MSlK6UBm?OWfy+>SlwD0}IPUu<{&`Yu~>_)4vPIsC>h z0nWT`nVeegsMBeV4;~sM#`x(@gb6Z=0K*V|Xuu*N@Vd=m2?-&XjA`t*x-x@}Y6fic zod~RQ3_ zR@)iG_uO;0z4y=FX2-}E^O;L8wGHdn+xoR@+((gzv7CODW9BGGbV6eWR+{%IIrItE z7Hy4lBmlBCKY#vwKZMBrZw=aJ-y#L)7J!xr_>x#o{J(_yzQ*CcZ22K-e}nzkfBuJc zPMK;~-f+E^t;5>RKT=!L^W~S?#bc^rRUnlbQ6oA<-Kbr*<+6Cbcg@dix)iw@rio<8 z&norGiWQVT>R0*SSeioXE-9knA<2gN0-mSo4<7|8SS^iYC9*?U%*Ngq&gVh_2REbD zIFOOM0hZa4I~?`xQgrwV8#S468oXJ9TdcCV^XEuD`|Rnb*C?&Qc5UBgN3A&2{`x)d zws*e$osMwzz4vGrtJBNW_^Pt5C?Ju_JrGf!Qh!aJi%eY-j8Pr~feBUrYBzy?@HUf; z^6_gT%Bv@<{rRJEai8Ni%QL*7MLVjjCAGCG4H}7578Q!!ibq8N$A9D{Ok5!>5b_<0 zg;;%v2Gk1_I5I7@Vw999xK*RsM*fLOn*AF!IQlhXZQr@a-uB+VwRP*(t0VrzrfJRn zi2N^ae$yN68{hekop}5S_Uv;TbYN|*oqW;>K5H?qQgJZTAS{@+8Nz3xdMbL_GoU1jIJ@B&W{XB z@j>gz*sxAGPgm(N`H80aHu3Q%oM?-dF1LkV(yUu2l6UXf++oMM-wr<((eCpKliGFk?uD)Udz-hZr z3Zq$kW1Y+?T^1R=x-!#C0-Y6DjKk`SLGd34GK#>jvOezQQNQ#6Zj4f)Q<_!oyJmIs?V9XJ3~lkO4dH4_3){)UN}6{WhS% z`@Z-8gZRJ6PCE8jyYO{?Xb(TI+M3ngT2OV8NXPB-1^9GN$GT<6JzcJTb2=rvC`!(M zv9t;cgGIGBqD1TM;g+#Sn*;#@8V{@o)l~ej9Jl00^MN5S&av#3w{t5?Br>W9bVutI zqHq=@g+WF@@kE*Mk&ss6fVe1|M1@J_mDUlI!WGxR9|S`OczN(pGp%USse9WZzsgy! zKF>}#{y2N%>o2s88#mbwmK!=Cb?GNQX>b11Kar5_mynOy-(7r>UGd!?Xs4z)5GSWC z{wj9SQ7+ZGgXZuV5%(pd$RE>tZFo+Iod)O#e(Ru};zPp6TALlCehF%uW-5-1bGnyj zl2Dio;33Vv?Q%jdlF#Lu8*i40-7IB*fXD2J2~Nv>Hj(fWN4fROtnbx_H85M5?o5=R z-TA9K?2WH|jUBymx&83RSK6ZwK44GExy=#_-vGh+&y`QXM|J~PB2X{Bi}{NdTaO0h zbJ|jU?zxS2hx|f&ckfo)+HCRSMWTB^=Yixn)e>^A9-C;?!OHc5?Zv^mdymaqu)r<1 zQ%^hD&VS8$wpcrLQ{}iOtbh6`IYbB4{&rVTC@Dhn+;566(opJ$$)~bWitUOkzT-Uj z(RJ6`{DpJvv{O&@gL6Ewj-}Ql1;QYvjeNk(vSz`&d3NvPIy||3r|9lClDGF`adJ+^ z1B^z27edQ<8wN7W_krvkAq!7SCVC|-X%!LPPSs1fsX8^hRsN)n>o?gVwWUXv`gbq; zmYsI`>GDI}W$ii?h!V>{+iO8_cE5C@$C^W!oHx{kLg-UpPLV?#;)~(!j%j>;$w$UA zZD(?&93ktVSy6Q%OrD>##CV5K=o85D@w98(CW<*CB^6gkD*!5}rjhQH>q;K8KZ7U` z>ZTGHpxoBurd-h>wX$fy)R;jS_fbbdumQt0 zA2T3JFlMJw!C*%~zeLvsj3piitcK+eYS2JKcyQ>dPbDAw_jVQQZ#gWrv!FTxas66+UCCh zfd}lb|M)G|DViSs&ExiyAAZjs&@Rg)Ey0}m>Sdp`>2$ROfkyev)ADDk9ORpxd(Q5< z>uy{7%sN}VV7||+461oL70VX*-FM$(s~^%9{}WHSV;R5CB>4-b$XuT-|H#s%OP&5L zIvTKU?K5`7G6l7=kbLAvpih3Y`H!D z=p**aTji)16Tb7qAKMvcy-3#S6x$=E2OJM5s)P@8lr8wMV#veScFHLy+NVDEUplR?|r16afsNkNv?%@mQ0%4>$%Zk9PrEV#`36xU$JnfFJ+rtS#^rPOl%@oW!Uvo8Chq(tSso_tc`ZS8s)o=WA*c^(ls|T$D?=Awk=LWiY*-WFuq@D4?K)z`xTUO2 zWP(%aPQUo$6P%;wi?K^(N-yf;S{f8p0;ntamt|mD(+4iT_!8${6&7y#2jq$s$o;04 zCo~X5L&oKk?xh0U;fbcAAs%?CBM4@Y2|}F^PrCvWfexKHbB>;LZM1L7WPa!0zR&*Q zgYUOz)~&Vsbsl8tAxquS#v==7pK-eV;L4wB%kNnG!lj?FA6;{;z4g!EVaxQ4Pm5+O z6oLE^y5rqZ9EJryvNNY?Cr9!(Jr3~C;mHtrb>jyafzV(XWX zz$0l$7yQ{XXWEZ{@O^vr`R7}!=;R#D=_j3{CD>-wC-Ynbk3le5vld6#mo8f_emC0V zvUHx56ZD4be{NIdWIpT6Gj#?;G>Pu3e)e;_=;FV#|M|w(?dLb%V2^0POK;keMT>Q& zXsQ%oqwUsnJC8rL#_qZMHe0>=J~^PDwD}7b`z*_h{>0Ny+kb!c>vCYOl{K`-&XS^; zJ#VhlHK^IxSt(pe=PV#85Oe^E}o z;#M(6bXYKzN&NFO2HY+312K-1{vwD-RT?! zWRD4l3B#9@CUKAGrdjBwrqKjC0L+j{g|jHH?BM9(}7_q|GIkz*PX0 zgp*urg!d*zf^pu^8 zeeBbpw0rJdZSQ!;JG36(Y4_d#fK8YGW#g93{=iwk9#s3nzh7#vc8sr&?`$j)G>Qf`LPJ~hfo?1s+K9lEPA|3><&)^sjMgL*TDunr2(wL#1d<&D=tiL+ zxxVc!96Tz(J%{sfi?)2lp=x)S+-^0=frt?CWVSnYmB%*u zpq5-c8r>oLGOa~A{u;JtIoLHQi(m#=P~fxW!cQsvg-2hU+&AnkAC*^_SQH4k$5408_Skf zSp@j1d~nJyCHMg?8-4I=V&DWUzKz3H9%|R$`YY?!&YLe~)Yn)n$R{&3edWfC#8S45 z9s+H!9eZ|JTcb7u)KLzj{$e@ok|=mDt1H$#lMuU?14I3;2srEHK0E|S3Wi}t9VieU zO<{Xn2;8C>6iuCzI;^i}z_-D9WTsIkfycD;_%-CC8>oHl)mAGPS| z(z9}UH_>PQ^`Fx%BnpAbvCd|YBGA4z7TvzaRz3;`la!^<0zET> zRq?&6ukq!@nCJipbvq9bVDB6uP#OZ;quEu3M6-4sG;gwH$lkKpgEF@};eI31wXkNYS(71B`mc6&%WfKJkGk zo`>wi|2X-La~NfZ^@|*_%)}CbO7BY1Nn!AjkCWGzBvLMMBmt{T9ZC?K=QT=kNc@nE z+1d@;v~jcVgtkbYKl+gm*##F|XpcPni1?!hA_rWcT5d|NNYN=p+ARuYAR;?T&lzmYIK}edB+=C@0xu`-2yrY+w2Of7r)Ad#RoMqBC?d zQwQv1b+Dxd^Y|catdS7_S1uyS1yI7l49Vcd+m1M}_GZ@No+S#(h1WfFX*NOIW2rcU znGr-k{gP%VrnGNwO7JG>nU?93rrA0TpfwveYM{!SuY7;iqiCWW%Q7BCV13-GPq$8- za_SVN1)T^BwYYF-z|kMP2&r9kaEkYtC!ew}efm@On06aZJL60{|J+yT?8vWlM(AqW zuyK=p@ckG0nH$m`dE`+kiWXUh>+P@q`aSlxxBV#&2)e*FtzToib6PT`uuV>f8HszAUs^^AU`}pPuo|&eYq`Jxx(hmm?i6Tn|Lfghz0{PG9-DxN8%1% z2DbW&r3gn4nlu=u>oEehfUmppHk&bbj`iya^k&H*J8CYyEG@Mx;UFCSEl$dD-L1GL z9ZeAQB?BL;6yD-Y_IhPGp#_>(rI{>CXY}7~$t>ZeNQzygR47>tfEe@)EVO-uAT0AjDFKIYrlR1!pbjnQiiXN!*5I@x zyDcz~lenSnC8)k84FYkZcFO!C{Mp;zZNIqXMmz77FSD=z_kY`E-~FEb*<0VDb?bK8s|7rgl`dTG=)JNoDsSfd1wNA6K1!2k^iR}|2yodiy7szZYz z=Ie9r-9iz$z+wWk{%3%-Xx2v{Xb+v@1HR})tQeL$C?wPXgMf}{)>#O4BzQu5_Ut)! z^^Lb!kJ{d@lco*OC1}iYd34?T&kK%tH79DfOS?8M?3(3xj)v!4S|rSaBYI$xnOMqa z(Yys(CU%MadJm1(=XYO!t?koOy3=*a72naNpSjfj{$D>KZzj*^m>qY*skVISVms^X z)Ai8ZX?D^HCrE*`YEA!??U%0v3xVZdSWA=;uVfj}dki@QlmV6fOFFz6Wzeb_EN7TB zR;*ZNlc&#CuG#m#_hb79O$g6Ev(Dzsoo#P_``hhTI;%8m#x%S3r&l@5XXL!xt8L_~ ze{rL|pO1O(E(YK$Q(fz$ES$Xt#p@hU75I&OAJu%(8 z*5y)#p^^xmtSBXUwucAPB$;vmZr4MIPiQU4?4unTQQas8@Is&a9(h<#nm%hE`lpZB zWtV-^uD|{|JL%-(UzcXF0f>^p@g?;+-|JRl+Jw(C+-_)U!OxElS9t{=Mr!y~D zEu!gwPN@1ew_7->L42X}I0wWbtv)%5SL#6Fj_teM@@Z3@3Jvr1Gi&*O8mo0Mh^Y3X9$E>vGDJfVKR>(_VNyZ++O{r(^S@x%6sPkh|YIQ=Yp z{e`cvOTY3pEqUK+yLRvNK`Z1AhoWy2ed-)f$CrVn2^}bb5p9E`*q0o-+&=fk|FNTv zI#PZsJr=@%(I5Q}uNg?bRixf()>5}y{O!hhEV%=gKE#@F<)FSqmibUm#+hvKe<3Tr z2|(YtjHokrDe#my>?-Kt9xH~Er30>h8yTX7IC`2qUf1XbA z=dT9^UbI0!c(Toz7X3^*5KvE0Ydl(}g=_@hGQV*0!d?LR=-V|yS&=6?;)F@0!Tj>M zBkrkHo#_F*(&z$b$upz_Me}Aa5OarZ$HWsTvkP&c9v$_pU9H=_@_Q;$GzZKyHdW5 z`PyoorssDKU?r%-c!ZvT&mTJq%wTS9$n3=9PCGdd!m`F&F4FVVrJMgU!8_zw!*{{j znYB5>jj7wAnUCY=C`1l-v8KgQ$iX{>hWxD)K^tA1?%{$KxN4?X;_J$28m+WC3fPu#LZ#j%P)4S|ZjMqp?Qf*8sLG4Ubi z^`-Nh9)_pzkbq$My~74=7~}Xf2F1H6demXrio+fDFW>WC+uhY|t5z(xxBT&&?7|EF z&|Y-bnH-h2cJZ=%0L9KyK?6;rY(V^IlM;X)0<`hR(#fqS_30v=?0s&V9tPD>g}Jk* zYc|!gLi{|S0gT^kK<|LTx?pDpE26EnLzeDN8++ zcfbwW&OpQ>@Qx!}^)YTlbHS5PN|Ff;0n$p#C(1LyV=bX18)a$HCLTRtnapcJIzYQ;1VYl(9H*2N z?g@D%9*QYpq7rJw$R`jF+%R(boOzyl!g0s@LtRH4ewe*ZN@7f=^%L6P-?C}5-srYl z2ht|lsi&T1^Or5ND=xpx9(nw6IY}2v*tA4p-LDSeb%a#Ed$+vn+MZmraFJedxlIg1 zh$K{6&Ty6k#~bDwv|*|Ek#BV(4qNUSUIuQ>5@-sM+R!ec&JL@S~4XBFhPc6N@D{V95&P>qlGog1GN{7moFRx+1082~BQ1G}=07w~? zm!>15_z;uA(SYsOS(BqrINpv}b*y|c)9kjNUu$o9>mS=c{^N)2um1i+cG_vD_=~;9 zG!oT?(I)YTcR;mjsYwM`2MjX&V$i{^+o<~Ou)_|spWSl1mXxE`r@Tp0Aj6}Bn)NA% zG|J~9JS??%bpu=F`{hSNkuifqK1zN>%Dh2JM+AF6hTH@WKlv+udsBtW%Q$u|VId#3@K6@nRC@Llt=6`5G zi9)2)tA6u-r4oW@$;rfTX)m(kRG^T7_Z(d_onj=?|4jDpKbjKa!y zAjee1NvjW088|}G0M92Xpuuz`vpo;x-K*V=6-$o@D`fU8DTcXvmS(NYd%a;_XBc=j zCGS8z>crE9W5iCBqPge6hb0&zwnsw2x|u7C#=M_0Wvcrnc$S3Iro$34w*H32SdN$b zY$xWR;CNWFMW<4EKL@i976#@lxOvibpje|rK3k!EzAde_yE?1YPwMJKs5-^})I6Sk zX1(kJDLl-M;)W|7W?y_0i?kj5_!Dbv+n)V`W!)_wR9`4IO*`%n2&W-uI~Y(>YI0Db zTHqo=&iNMn3@8QunK-?DO5sUv4)d|{$I9Xrp+CCpd-l^GUSaQe*E{75f2CkY?cA5W zT=YrVYJj`5{gO@5E{Xf1AOd9IhZg-|rFhH-FZ4mH>ZVS?;v2)KbeRS;J>XP%$&)KH z$vV4g!&-*&ix!KPEOHr<=u?d^cX{}8>ZGYQTfVMEOBVa3Eh>#Nai3*i z%Epb)*=66k!v6E~U$lSz@Q3|SRCm{2yZxq{eI`9*@e*6HOs7C~K{W00 zBfH_YJMFnmn`E8rcdd$|;yDv{q{?{YRSm35aWJ-tsVptf%2V{VxGuf1jHBP|%3wZf z9BNjJcX}|W{Ut$SGM&d-+|Ms)hJ+_52iCmor0_1?re>bMnJy*8>lORt7m$xd4r|I_ zRZwS#;Mvt+Y16OSWR?!Mu@myd(@**10_~bv`Go@By&LAWI3(Jrqe*8XaIp4j7R6dZ z4CpK@A`aO3?=tzUCh^cx4Dm#{VGi>g4Fia!=d7tSZS8QccHK7VxvW37uYTj3_7}1g zP$IK+jtC`A+kFR50?h$L7W{}FmIKw&CLGInFXM$_C=q4A7Z(!23EpQi#n_#TT?`Ek z@`Yqf`{-(t_@dLW8bH&gcG^9^zSsUiC#Kgmb72nfYna|p_H~zx@=C9ssTQtGM zPqpBKKqgg}n-zRZspy^o*xagF5n8pqHK>6$NAG}n>X{8%VQHd(UkubH`4|M-+p8y| z1t)BRM}fy?1y5C{MS|?2ESYFrF{m69B60jkC>aI@3Wm4gaafNuzn5%rMIq7u$a$Y8 z0<2`XfTJ2;O$71Jc@vWc_(!p@oTt3F3}uHbX=4KZ3m?m96lgfNX@e#$)z`1j$tRv{ z*L?pw_9Ja_y!gzsw8Ye=i28rd`~|j1&h$l`)|T&Yqn^k6+E>4mw2pZdfVMx z5@Ft*h?)q-dP4bxJ|J;?$aJ4X1k2%8m2$ek6UvzKkp`SBnD<{2N&$q-4AHrP8a7qK z!IegCq?dTI96}h4z-RHIGtaPvix=B>zV`!rmmW~$k^4LEy3Hmtc!=UCU*0!@GrCDaj4+60qFq*jD?FLg z8XWKs`iL-?Tp)e;U?sv|$%`~MTb_Klhh_!>G+A1A5Jof0L z?WfoNOuJ2b;g&3o1KKi1FvTu!J3a*$TFDRnK?c@_J15o8ZsIF-(SmvQtGn+PZ#DQB zv>Jq1mPjB2)fI>8Cjps&hb$$Spxp5*yeLSNj}KtMi3$ac1)t$XkOB$>Wx-amD;=fz z(pFcuD%4&e{r9oJE#9blZ;vY^6b(cP3WdqCJghUUU=${^eOTI@o#J=L{S1&a0#D{M z`Jnjxy)v3m@q6yoYd)TO;8FV*Im@s8(RZz7_B@{?c=t5C@07L9F6hm--f9<~_iBF* zj_rPYkth--2^5-74lGSYgZHnl#DiK$);+ZIp@^3yp9VsE8XvkPSHMwTZAz^~R)i=- zoH{~j_+4Z>@`7_p32lWYbM6&aDi70>D~g$)>zF!yroB%y*s(_+VW0o6FWdD$|Ah{C zeZr2?6S>O|J;L7qzQ3}SM;#**cGy1iZ~vx&)o-tP+1VO!8qf?d?I28+WwJ+Gs&vl& z?)}pI?fPkveJ=dG2bWWpbO=ia4wQ|^vCPAEFph!B%#B6ES|6e6!&jq*VmkUZueT#j6;@t=fF>ijAmPjnG_>S7Wj-WXScSTas08x?85CVWw6i@MVfHpi=ZRDE12!1 zfJfw?YHZ>lpy-l9{MPq>U>|>YwO#y?f3;&?uu3PO|BsiOtY?^5s@-(69s_uAwO-WK zE`=#atdt?vM_Zd-io|(Wp@*MXcDxY|<=3I}8kp}4GM1buRul{Ik>4?M=vEyc<)01nNe79{`cv7lF`)^=cXp6TeTIf5d*UI=oI1m~%)^oT zWeerpclYh~it}D&XTAJfwMFN&T03o)CKP@dVVTUKOFdh(L$4G3 z%lEw7=FXdM=bU}2UH-#s<$&GirauBbbFO}uMoW`!2_KD`Ju`klt4mgepH)$(u%m*7 zfC6EgkAaFpLg>3Cj4XF}F%bjTw`SErbohR~V2D;QV|0r~PJ6bgynEg?aBvFdfjDMQ zet4~Wtj7l!Tf3Zf2|vu3?<}EknR&3Dcz%XgdGb;hlmaubAL>(uxM!Ia@e9!h;DLM2 zHJ`l-q0U6X_!0t`_L%X4-_bu~qc{phFSD%Py|i!h8r!a))>xqTjf{$x1sd3x&dh{A zyWs}=;{W}!j>mLM>FeoQq3D)%$c_WE6Eih4Fgs#cGx#h}*i&S3qYydm>PO$T!^X?d zd8UVl0y*x^ZVxX=Vh4}cJ1_{^buMMsj-B!w^vP1(EoCy>?!5Otne+4Pmv{V9eW#yp zk>i)=p_l|F>0wIhAKtaM7<5`z7D|gg^QEj5#Hz!Ou&-bKL+wg+Nm)pViEhU7C>DX_ zfMp#@lYV1q!xkv9Ds{qK zX$vkMaS4NYb`Oeto?8v|4qZG;Skus+ZMsR!Ut$Qf7K6PhV>1?CM9 zScSCF9|m@C^+WYpBr1y#OAELgiUYH!;FkkrWx2j2k2FZ+Lq!f)e8mle59bqi_fgYbt zgd4={j^H0@5Tb@L6io0<5f9$+@Y$aeq4R|c9*AClen#NF?$@<<>n6MGYhSk2_uZ%2 zUO(9(CGeXyYutM4lk(lQYp2bU)q?VXucO*^VHaw$PESiK>t8dy6byYSj<~|cV&QyH zM+XW;?N(y0#m5eufJO^QHWj}PpGNT* zvd9Om4}O&or@5>I&C)1;e{PIrmiW@w%UkZkcLGzf62wX8FH2kZKk4c_g%l_TjXEWk zM&dW}fg)eAbeXMrT09kfVf6@&cLx0sczMZG_-t5$F)qNVep8hwLk6dacP@KfPKk7b zc&!}e`M1j|a>FEp!bEn+!!kRdiR92F^KDp@-)#Nh-vzHZSCjB89od+q=a_cdZNL7t zO`S1E@7X!Tj+8}x>d7Y-JE&OhObRqpUnoh{3T{s;Xn_LwL>hr-xQP05O~iDsRcVn1 z29iXdW7j1E8Y>zM?FBY3=4}xe9LWHJGDPLl%*8e(@5-R2R8TM$1=iFgO|2iU+V&eA z1s9_*FL&tlEha1HOb8pEeO7PXpJLtGG4kCX5z0@4uw6M&bWVqyrE$FC&1RRw)ixr{q>rn6=COm0(7xvMHx*O zO-S}@aR2~707*naRLoQi5R?r<*rr_}W=V`Tt~lm!@GjRt+PGu-UG#?pjbtbwX zO3CtE4}*r?D>?)P=3B@xQnM$fzR%h;06sdD_oevA%oA;Qq0>?ex)2hq2E>Mc-rI8G z@yFVqzVkhL_UA%>!kCv~OP$y}Sq%NdobS;i8EPZ#LqDb3NiqlKawTsB(5uN&V29`TaAhZwO@yZ8Y6xE?V z-M(|XwaIbK^Z-2l%P)3L)^dy!yc}eNb1Y?W$g|@Dzvw%b*jN$CSB8gM2`Ylp_k)LO zr4KyND8%--7%K(GBN|UW`J^8g5Rl`eJiCopb0{QK4C5)b!imSgq;F6Z9pVe;TUsR7 zC>a&-@uH^4l4jrwuLe6~$9+aRV)GU+vA(W7dPL+|^>?g7!igV>FCK&>u1QYxFnW+_EOKafMXdXR z9lCl8A=)Rd*hN(#V1d)1DC}^jM_(?HQ)zX!ipGz2xJF=PRSq; z!QupMsI8xyrEpruI2EhGDgo)AaTm|>hKoccxX;X-6RPdr+XR98rrVFTqn{NXlJ>BKScR{c1Cq=+_YKc zWwnSd{1VKlbOt!FT%d#X_cT2hv+D4}?VFcfZq4)Ox&s;3y6;5oq#YTUrSVNMFre4{ z84^y7=aQ#lscZ$+6{VORpbwmUf(}KzTSPyJ`tQ;%%FwWWE_dc!``Jym=)hZttd17F zvsP<#ZD(`s?-{h+1KOd}ObEYs>1RGTSH!Ua_{hw~E*-mFOJr&C+{}oq9r_4g)GD1E zra$?0gz55mOrJT;y7ZQ|Q+4KrH|clF;=wt;W9Lr0{k>6#d*lGO-oOFLmk?b@X20TzGOn7P=nfx zEHIH^am6m76f8VaIV_|h$$N(s{=zvS0(;w^{;{3^ zx;NQJbQ*rERtj4;Z54k}f-#X(4?oX?#5fPsKp)G>V1tXk_t#{2i$xP-Lva*Q93#*T zL2&LPQfA61JR%(Az!d>PgxrAwLFNRkldL4JFgrZ+0S~S$qqyHjr-F{P zCWJqtBjxxF`lLV*8qT+94EhW-z*EI?XnHLw&jiK5WX;cDz%xH80b_~6Aa*lTIDHmS z?aVNk@F4JagD8y-#}6{1B@ai)-CEHgl)QPz$`|Z2-X1+d;7|98PG)M?>L5}_ONwgLk>Xj5(Z_)^P*{#6Q*w}OY%G}ek)5f z!+S@e8KJl zD#8O=?(Wax{VEZ|9^oIdkXvD-0GaS!7q;aI^0)4Gry6e-FyCnxe-*^oWIIKn8;3hk>ZL z=o}fqLS(Bs-md2lJc^+{XmsUeOw7oxycxWbC+EKiizN;NK9*3F$yYVt-$EIT=y0bP z@Ay=WS^!7k2sctl96wN7X%QdZrbj-%UCsM{$RmL#>PHwiVnjoO{5T4}HLeK&_^{Ts zR8$+WvRd>i3&Jx`KI8B6UAN&```5pJpG}^#&^Bo$@EW~gVEUYy>d&2$Z;p3}1_qR{ zAx};-N);rc(~}g%azO)VcsL(I-joaRDhO|AHvvWDR=nTo3p|co3dRAIKp-CJ6m(3a z7I9sON#jMD-}+Y`3Vm)BOaSQ&(<3SiLYx7~K79d-CB{TwLFW!~m| z0lPucykZdMt~W-5aa2M}8l7bi=?eJ2*>p7&>qpulgT|EKd?{BD)Hde=fB3biFXkgJhDl~bT&xJ7w7xF z{kv_!AxosxBL%UiFL|?a-r6W>!Yo69`b<29V{)SuhGrRlb z=h1+XV$xKr_G5YCAJIV7?je1GwSzOXOOK(n$O(Nwb>qx#(tt%K;1zw3r3#;Y7p|Z> zmnS~Bl!gLyJ_|4Mh)}y#tx1c?%v}tq$6}1QlA&KzHY@?fDt)U0t|YKoybdP-r6_)> zA;qu{e3DVx*WAoGEqp|(TXNOep$03AX)^ATuWgmy-*dywzw{;k2mkJUde-l8d*q>q zV=0HiMjr(kPQUMdc~V$1v6v{9>KtWfgc62L6Gow5Nh;6gWx!-&A>*{u>2X8mBjYw zKK-EAzWv)}-t*j1rv}qvs>q!5hD^}Xtr`Jo!!-{iY zuM>gOpLZ7gUfoZsQ{BzJnMvIi|;G& zD%0~*xrC*UqT>*r6dBrIcmoTdce$;DI}ze%m6A|xJ|ga82#VZkhQ z4*Ci-N@L6O!ABmmmQ_GSflf*LHs2w zo45|kdTG^?3PB)13j%>77IQb(xh}L=86t$o_jxNmTh=V8cs2+)Xm;hID>IBPjte~a zW00Q_DJLP289&o*zU^Ll0=1k|17po9VOFPOrUOiqopqFR`hv$OF&;#WT?~MtBYjls z4n9PHkK!LZmGFSemwyru@HMObJ!(JgZ4n&{bzFR|j_3F3fSu2_l+mYi)@$^gemT`JN2jtbw~#keW2~q{d!%5!T}vJbRUz*8+*FJ-uK>jOUba4H|W1? zi1o8qe7#1Nhm0QmEXo2s_0CUmh)uFE*a1?P+7LbhG?!?>pE9JSS-<=@GQIR$(X+i? z>Vq8b1obKH@%P41P7GmC<4?j_J4@E=9=+Xvi$p?$D-nPd>hCknGxZhYSQwyDf$#eAlKseZh{_j$@SxyBkt4!9aOLADbwx`k z4yB%^3taJ#1EjdkR0%?8=BUJ%LYiTB@7ker1}sx}a0_hgw#4%|bZ*e2!7gQlChpY( zg7`#$L3n5n9Y#kXBq*0`W8`6eONa!E^}?PtCLV{hFv<7rJ0L%U28{+9&m*DnosNP} z3|M9Zltm~U*0h+wA#ALj4_m&%c099210;9|(eRU*kGg1;|5eyUKDgbQ(kz=D1&^?- zoS!HrU&{9B(2TGMOco5n0yup5eB|Oiq+HhJwrxC;GN2jfgFyoTL^Bw^Nx1sJ@+ukO97y& zwd*)%-fU)H;4zBETOOv;@|%6cOz7uzC^Jwr6WdWN$ehVo%gkAap|~fpk?~{>4r0p% zX{p>Ct5d<}?4rtEg1|#s4}K40Nh=?4QIN(G46=t?|C2R%2p5D%P=eF0Nw;dk`JH!KcP*O?)cu-ppI#sW zYOej*%i5M*EKr(?V5xcC>hA)%3@?%M^fbSrEC)&@^ITLHEtak(u*;#s2%?#mg~X<0 z7;q&Io-+dVQIpj8D1|9Bvv+b{>L&W?F%XEKOW>tX5i5ilL6oQpr00XU)?)r-J4j$gP+PZ=o+mBiR+iSOhx2-B1+`&X($@HQ4g+I)4u%WFSV1GENM$w!M%I$ zjyRZmE-e!Gf;pu>m8yM;N{#IV9&VQ1N0bSA!!aY)yR&%EnHkceFqAUbKcOqU60I|0 z;sQDqxm^jnZ*h>8tui$a|3g|EtqKrcVd5Lx!xZY>yC5!bvPF~mlvP0&($J_FhQ=0% zvQaEmQK|fG%_*CXpH!L^uW(A9cJM*gF+OMUoMrW(Eoq~IRi3>XC#0N;%xiP(?#8t_ zELe2R(6tlFn#XD;E?J40R^hLFn~iEw6+ZPYJnKE)z3|pOXwO@!6fH-ZWEjxEn#!z- z!|3(hgVJ3PS$HcG8QwyjeN+NqGRZ@wgUFaew4EdVbW2>4POd#G)xN8m*TbEhWf2bS zPI!Q<=`#E9y%KR8f~oK5dYE>OODG5mr(-w!7|@--z~ce>;(mM2&l;v?r=uj2=&4*{ zgdAq7TwHi&8c_fd7;6*P=7<;VAVTwbV=b5l zk%(}7MN1`H8fv1XztXLMDlFD$4u<=7j0s_~D?ohloCY1YFl9UeVVg(y=!`SZq`_t7L3BNgMH&rqWDzzb%Xw1ZPIR z^PO);m-WJ@T*NgT_q3yC&qEp0{Q>{oR49|caXPIRSP-*#_oxtA5;!?Xs zHQC^j0>>;}D-*nmW^dvrT=CQdzP@>^xC-xj8)j&9AMZE(h8qz)f0ah?9}gfC*UMnT zpt|{3xXb8YZoW13CM3)pBH;H>2~=8Y;i=9tkRCLNjN6T|S?^-6iQTSK!`q6Hn6Zb0 z@HT%R0q#Q-9N`BBUBR`saPyz;c6F-D&>Q*=@ICR4DYYeu?; zR~=DAuuCEHm^G3D7{?#-wwCkAO>6lWr$MNk0Xo3J=F?fyZtwV}G{DF0a#$P`)I>m+lmgw$NEdk>`0}2DqJD72gDCFZ?bWY-4F`oC z9VZ2vKc~EBb7;8hQrxHW5Q^q-Hs(29jyEkAXiQ;rkXpPZu`1P8LEwOYR$!U(5C`q? zO(KO)P>k-bH%Q16jc8jX7Owd=q_DHH6ptD(wi~_QJxS2e`-)Vk!7l(sLGSWSl#xlf z?_dcGW9v(9%D+s^^!fsyVX`6#_jHIbXl%YL929cXg&*=MGGkYtqC8=O6AFZac9tJ2 z0O>HIi|{bwZbcBZN~fRrJ08bj;GrLwMb`9>H2DmQ8)z6X0hn>!i%7jN4HHPaVASmS zWhOh@=v~55e!jB+nnsQ}Sfd}tRI^NQT*VE9J_L-`jf7F)EPRf~xDrziJCg2hYHNoq zs1{I_NY5-UTXRZN&2IN-0;jfH3-6%cx|IQ4Yxx0vf&sw@;<&q2W(iN_QiHO&!O>Nu zDhs=5liPiq)Mu02>L)g~p?G4TuA_vjh|Qbh9loozpmzyFq^n?r6m}6wTN;N@DAkzs zm-Yx7D0uzFLrmR!g4+QWuubQ%acjRhvsf()JyeJa=fkvCylcs^hnTXZCF9J6I4QI$ zVlo_QWs3x1#ZUY!q(0gY^@yMDN3huNo_m*vpqtO-_uS9m{kiRdRS!hP5j)bUJhm|X zyn$}%UMh%KUJt!o#i}gW%-_J?rN^9pD!boVg$rz-YB5PCpJ7Y2(l6W;N*8>R9pc$K zv!Z}z;0Q3@=F2W2w2gd|cgagUU-DhKur+6kHM?**uIJ!?l^x&WqA5J5M>$mY?B7B#9*eL!?Q98QyO(?jMy!A*gRE4+Hwh2w{u(rg6)DcTM2OvOt`;LO`_SK*#I*lici&CR1?9j(N(+q(E3JiH zah(by^W{MG>8C7anu_BktON+_V;XLXbc%Z>tBU29G_Hz_kKkA4N7Cr$J9%r1RK=o_ z#gY7{!c?iLXd<2vl;1V@7+N6Mi;zg_#2Ec`E0g za|R2xHY5Crn(JB^d5l8jJ`|^{ol&ssQ&V_mFa~y+5wXTm+^ zzGD;I+Onphr_!ZR(6T9Ot(7%Gv|d2jT0of5x5ZvK>hDIu>BL`k|0>3i*k5E5l}9Dy z?pg70X3O;ggOj<+}-g*SG)48(OcoX`*;?;LUr z#_4;iIqnHMx*a?3`1Us+`AEBx1Gk-W_i7K1+mtO9#z-50p+w|E;FaIH9maATkwxEn#E4FhyCgU0AP)1O~vDFx547-1FidWFH zag4|;WY1O~xe6SLKZ!nggV!i8U7k#Dh~uHs*Ufl_E4u!qa3ep^GhR$n8`+OSz(Bdb zC4(z4ImML)7gFQlBiVj6HJKK}EZEz*GG%7I30EmXv z#X}+VOp%QUJ0S5)Q4HD0FYB?^2ROHzEd3zK8B*AO9}U&^5_i0Rl1HvIb4RYAB2@Z<+s!inCq3aw?e;tGivG7aMH7~E6BEW?Y)+yW z+|6n~U-DV-y=K*xjm%LwnQk%5w5&NC+_hD)Zruhk#4dMWf??y$*bj=p9)p8qF_=f3 zU?^eauVW~l-7?YDW)dAo!<~HcqV_#js(Qz==3$h~A{Mu~ne4>lj%S_6%&2W$QS8~l z*6`Id7S9nKz(ZO%$eAX;bt@_auWU|Xj2HTd?|r1DaKwsK_Ew#|cu~9K?%UflF1@rZ zm_N5YaQ_1_o}^l`C6S7SxBnfD&0`6quzS2rEn6pPBX*}${2nhqy4m$yz-G_o%a^w| zzx566EpL5G>?IQ4nJ8D4x5pmHmpF2RHU7aT@&JXSMdBd-c6MHSB!g?6awdjxCJL#u zQFd2MTUzR`UHKF@<-oT_x>!l5NJ@5HovcWwSSzcxCUT}Q^QLs!(g9%~jIjd(m6+XX zyTYz2H_>RV0>hSu<)>&85&6+wJW2t&xKO32TN&loc%>Y5m($)tigVBhgs4<Kv!#By~1SXhUt22gR5Mh#90-0-hB@R z!RDsnvPtUhRGXH87Ywn`OFZvDQdrgCt^*O*VoutVsbCV!bcL=R>S@$Y?%uVBVe7~m zT!D}A2=R{s*cYg%9ZApG7zcF4%Ytkghf@QK>kbxmIUuaOI8(Hh+I7KvS_}x_UbS4F1kwy^n0jH9jgD^G@21zbKKW&m%2{{7Kx>t?c4gVTNwHn=iX!PM_Ot zQ*mE%(UVb}92hotep|`zUTg5!agTC{vtL*P<1n*R|AtdJ%ZD8tXL{Dzr?=f})_^w) z18Jeno;{O&O|#o+r!I{ysrah=#~bky7ipwin0H&_%B2eqgQi9@(-_05@HKJtg|!VW z*cd48WI{iK8^g-C?>g9J%CVMIGRYhHtNX}6Z(GtariOym$VVS5ppi1bJ(Lk_an{c+ zK2d|uChj3=Ze@84XS{6Y44xURadN`M5XBeI>=9YNQ@NU2Zz`NFiF49QnHX=E=~4yU+EPW4)0yHMtRj8-wdMhGfet3$Zm>MSSjPgEqhEW?_3TAi_W7n?qfgFdd?$(aTU5ismRDBu=* zHTymmW7*%gRpI!?Oj;1xgr&a=IuqEn{NS2(ajl0_)pk*c8Lbx=E2&(nNv$kBLW|0? zd&8adJ;T&OnTHYCM70IQ)HHrJq3>C-A`WDlO3iEE+;M>;SHhGLeZH3l+`%PS47~gjPz=av4-76nx&wuW-+cj7J0KsH^ z4uhoIIPhsMi`GDu&=G~79775P9()lUd6c|T;D&rkzlbe_krElY5ADwEd0xya?w($= zc6D2N$|>!IKlgKS(!FQS?AWy>TBRfcG-wL#_MtRLRuvvML#Rxy_}&kg3EN4la3+Vb zZ{VP*4Q&&x!|gkEw|kc_C(pe6NMwal$~L=2MT;TCj9vLISi&v0 zNTJJEsnQB}h<75CO(qla+h}83J3T{XaQPXw!t0(7jw57B$Xz}?kJ|Nt6)QOu{Oq=R z)vB0Ib?YFHo7%5YpFTPoQkb!oR-7;Jh^aX$?>)Wu(}AMx(%X-;_qYx#XEC=eV4N`Y|G zr87rcHgAjWn_UHk*OT>CFmC$W#1l+0F9@bv4Mt6KzRgbvBetSq35VgTRnbe6vj^_8 zV&IU|`F{E3ztnDFK-GOU9>MS+w`0EG1utY!bTjEXh)ABHr7*`oQM}1)35?XOw6$x- zf2V8ymY)UXXpTnps@~0vqwM59sOLZDc{KMu9nW)ZUE5;Ig>D5cK{tg?Kv9spI8)Xs z?9YGcGImqn5rgBm-?c2R)U|8uCRi^Qn-6@IQOa|!Q?lz-tp(|1;deu7)asNrbSXv! zjZ6Wn#=ERc#JN}QNt+050+v*ZwSrIvC&Swcvv8_h?B?{FRg+f9TU#|&iWor+j5I5H zkKQBZiie|wz(<^j*98ws>0rPz+6%aDsnHWD1wRv0+b1%H$?%4eh`JMw3};xe zH=cg^@G&wOmsSh~c{+vk^wXAdW-Ny(QO2;9laNO+ii zfXPm2d#BNS4m`4^I-C{`nTdjI9&KWq3GHs2bP<(Z?kK!q=bb?g1Gt3VoWyk=Fl;g> zqD{fgv76bP;-*q`2lSDwJ;`Y z@HyBU1F*sHgJ~5+qgxR)>%xSa5E1+m>~l^zl>xsAZPB8W=rZn!JF&gFFbbKoMdYJe zC`EtaXfIjtUH0`RRYBC37;0mW`^6hwb9v zcFzH}ML{WzL%zge)!H@8INi()6Jss&=X37wx;P@j#f`T9j-nfS0_Vi!LF6bW_+cSd zK`5`LZ^8E+g&SUxn<%pCi6C9~t7M`Y;*mb%O`p%?lSjXLq=vi$e54ogka;UOD+b3- zh6BCBR*CuZ5x=rmntoS$;+usVe4&l#dWs!2WXSU#y258a`H39j{jv7cOD|!=BMU|; zf3Xl!wM(9@OjS4mQ)DC0rk^S5u5-S-aFMgjTNf(h^ARA@F>u#fdGH;EKn|cw*Pv!) zNY4r+!3^(rjG{-(9$0>gu%-jt*$W=%c791TVO7o2YeoBb31=(&W==ozET)PXFm*sO zj`mAIQ5odAlDq>+1>=%;jmy9@Ex%HTTu0&EL<;RTPS2lC6X*zpRTG!C;a(%`IdcHf zX-#}VX|=466~hYH zR0dQzTQ6!g7e;v!{RGmrfXFEe_%x=K?bf-5#)46TSTrntlmLjoo;!T z+!k7nD5VEExOyJ9Kboe6$7@S$1?^^>YvU$cWLY8Rj8e`l=@u;sXsn5?CBT<>ku!ea zc(y*2U%sV%D&SNy!+Zz>kb$f3XysV5tF6K)cfvMEInD0~G^2MOuOzk{sX84GZC^~1Cv+@GWJalB?0h1;%|<11dv;SzrjY<4`yX1i@s zv+nNhnZ%g{BDE*R{JWse>t#W!-F)k9Y?j>6W>T|C4+UVWHyp6|OF~;i9!2-*2>gw! z!m^-xahlAsi=@I4Z{K#+%E%wxikT22;#O^IzAZa0zT+U=_70|mzxl22;Pz0ou;wtG z4+^xTScu0+umxD%-19mG!}N43_p(T>|U76SNM`waorJ{`|)W-#pd+ z!Idjx>fQsgUH@X<$#pEYlSbEEcOw_Eaq1moENj+ni~@BOhl6{VmxIDiX>Z!hWqHhy zdD)x-qB4<=rX8p7QFCJ*n;!=L;CV6~B&$vGFzw8Mw{W2xW zB?J+=&p`n*P#>WLI{``@6CO{b$dS z8njx($MrcHm*qz-NnHIs4bSGT1Imso6`dn6VH7S+xmS}~Hz}uk`0*ymtW|+|+LDvo zdZu<4%s&bR`bc}s8D~bpbecb?PFTYa1;p<%B{20}??-c&{s}Kb4(*`Ec8p!^2~T_i z)AZ|5vUB3L!Q+@kL$kCC&;O}V`16={UI!h2aP9S+$FsMsri*M#&y~8K72`cjN6}i` zLuKKOmbPfsr*wknjRj9W+I2ST(j{hU2sEOr0Wn2??J@om z1=Fug-*?i|w;usSXX08hbTIHt*j*YCAcA%79Y1j@-smexML{Lw?T_Zc$%Xx^AK(D> z3)@efdme|2aioQTHKbGVeX9uTt+x#Y=~np~woX(!h9y)yX&0U`)1=!t98GiJA7uoW z5l$7k-j%q(d?ZpPnu(d9?zsj)Fg}TtN~4fS@MHRyM%xr@;Tg z@4vtOJ{P4gWG~A;w*?T$ox+}6=M@!sMg~o03Jsbe{9|1Serj*G+1onWK`j^?*<>`| zt`nHSN??^q2q)d2BRHAf{Vd*R?IXbzV8?u7x*X0rS^@|LgHd9{QHi;^aoO_KNG4aK za)pG`#H3*6u(+0mbveKg54(FCHm+y&s;e!jg#c#%*!4ZC*u*X47VRR>NqE5ZQ=YkQ zN80C_4G%((Rv0)>X57bGYUi$P9PB+m4%l9D@)A(Y8dsPKoJR=Ao1(oa>sM)(U3X1= z*E?PFS2tmGs0Oa-W7j7S6?bLs^Pc})_9K0#olUb|#o^$u_b0pNW!9Xd+jp=0LA#&Y zcrK^x&1Sg)*r0e_PGHyZVQ4%%W*c#)1xiKy~ zClb$=OKkqM`G-&JCMiiu>=26ZnlE zGe`JaP)yGST($tbd)HJ8Z-p$j`9nZ2s^7<23(tF*NLZ8fILQ4RlNhx*LS|u{WYqwE zDl5;Hb>ZGj*5ugAus>}p$!SmzjaJ}Y%J0IlJ&YH4r}QMk`xXarQDyk+AhCnhJ3LMj zS|QCG2+p7-vpP;?dw{kfjigeH_+-|1<)@fufwAu$XXjdr^Qchm(!~*>96PyX*)8q6 zSA45|;ftSdbJ^7R;F=BXhnAzafAfcL4VoZPOymKz?K3Hru2zS(AT(D?DJ zetw9ier)E0X7a$BIi-i=GqX5jcJ}O9C?Pg&QlJw}ai#l!EbQRiUU9Hc6%Cb4AB~lh zT}SCHZu^lVJ4{OBWCm`XF|2$Ue^`)=A23592{R$vViJR(18L9Tcnp_axVqdmCCaM& zR_Vk|p{8$CdCH&Z6|SQ+v|wTyy<^2BUNK8 z-4KE_b3Ke$_Ul@bufZ467H|Fi9&gIc%2wISu!bs1W{gp|4nRN>o*9&Wo%<+*MtHQ$ z>h5E+KTRekyi7=NBankIg;c%u>grcyGZ@T=wpRG6Z<9~O@ICa^fF6k^Fdt9IAN_J`J<$Z2)AF&=dM2`31! zoqOK7(1huHT3azKA1$g5CF~X;m8@_z2{)KBvgIkbSMI#Et(^_YM1;87OJk9f)EqQ~$JHb#j88@Hf# ze6=MS3R+KKxpvF60uSW^nf5jeVVf7%VM%WEBR|IR)faxhN9lITY-)`)g5!Q#^hj?z z{#fpnVj<-`Z_nhm0du4Yes%D~A&rR*m6_j$E&q&{<=1fa-QyAw4)J4pny4(xKLLzz z8fCEjhwowL3z+^EsU(C*3cj99&@hQ`BHPF9{f+OOd-_GLDA-fm1I!$}?JciwcieSv z>=W8+s{?OqiCSsv@^+O8bp%R}S^`FEs(HF)t9SjfoF8Wwq3J$_cQiLS55{hV^tYB& zQ-^@@EnL%a0CMVdZgivzHJh_yJs!Yq1`ZT@w#n*+NR5T6n-^AptSm?%8g(kM7~3#_#!JKMH#MZ1ml zBER<5H@DMHh*r|>Sm7EtL+4Ng#D(g_&lZj86>sWox@F3(-sPTel}FAh z)wk~oD~@&%Rbm^N8TzRwo*ylcr(OC~wpMIzr!8H|!n+miB`Q@=YL1N-Qm~%qj~?u$x?! zUKdc>vX$Dlf~7zI0Wa+tUZr4Of+xf^jBtF}GL(mVIEuqIjdB)zB-|8c%#x?1M@uPV zks9GcrjfxR9eet*^#cV;`-g>yR+Jok&%UEKa;N)+mp;Ay4_f+OIH!zzrjPu!`{g3h zz>$Q6<&){tQls^)$yRGvgFKmLWJuq5Dz2d<;qY6xFwinWXMl1I5Yl#JijbL5I%_Y) zB&142fzc=cy}wDQEDFI4;qTBC>|{*&7{|D&Kz7jGc=ofN)2{j6cR4(XJvGN4A5Fjr zL*ejN02yP!lsQh%x}Yqkmq}mPo}^}N;jxf8r6#VxrO%r`G7qiVmN!)(t-HaiiD5w=xK0yJqq9urJQsR^Sd#BUAyT*&!m*2mV zJR#5)cETe!L`hm3eyC&uBz_7`38eU0c&+SXZNwxN4pMWjTepdm`3?ui32i1Tc}1mGv*XZYe{y)%q{rqRPpIQr@~fiB|)uCaY?yN~Yg zaqKLg#F*G!%a*sFe(HrbB|`z&0`NerUMWUj$RUi!(96dLbsN-eB zLaJVI0jD@fLm$V^9Dj+!qe#cYvR&Sv-A%imJ5UfiLY`v#2o(urlQ{_hIVf0qDDFas zlz}LmgHIhT@yo3z6lgO84COWOA+B%)D(!0)ELzp!-v8uTyxH!WMEbjEkuE-dL0fj` zz3rD?@;8`#<-*0z9xia`QfbNiT0ad0u6 zomh{WL}o+tE4;3h)L4jfy3>VrC@8-DdxX`%3Z<7_%|W@WS-Xk5dbYDChJ&?9YZk|3 zMvkO;hnKj;lYkjp+7pFo*&TO>PRMR?|v3vDVL7 z8e20iP|R5;@;u;0@HFxTWYQD9;u!1227I#hqynscL|HDxtN5C6MI~T%JQyl_{iLmx zs0Cow5nS=I>b|(#?|*&p54hZJjR{9OA*s+ST27%4h=*U9;*o>9;+pbhS&YCD%rF&B zoHTxyov)GqFf5J{wtn)H^b?o>%Io0w7(fH>(!uGk@D(DJsUZEB82ORNsATfdwMWq1 zxA$>z`w1tV*uMJt&$W;K<44;+fATZ!%+t?^`;pyIE55`IaE|^@P%&|~tD4)f25)#w zA=w?rBS^#`5{g8;y;MD>plN>6NhW!fleb1vds538wrZQH3b%x(;j6IBr|@VBJ^4!ooLA90fhq#AI9H8lCD>_yhbgehEx zamuY=l%EtBnygHuhEKG*QW+S*jQ!u30&du}8&72W_=Pwj0%T>#M2F#e7~0hAhG$bC z#N0vOayvEJKmY5;P&A)!pZL`0+Ey-WU$kU#n}a6zx>5yKriU>rDmlJw@zzmJ;$?Q#cA#7^z(Ho!?{gW*mZ%cL!P@ zZclpBliE(kP8Ly-eBrBK*+B}r6Y@BTC5&rn76eFVX$+-i@53XAqvt;+(zq;Le z``zr)UPJfE)<|GuHscY;qIKmHuP}axKVjl@J(0ucZeBIfVzSFd0asC2;4_pQ$W*`( zyNUtX)>XK?%Sac~8M<{q2$IkYYnXcXc0x#dXjVIwu0j~xY0B!5d5iB z-K8$pNw=&p4BzKFTU4n8?szR6a=jU}){B~q~K zo#B#5BLrC6k?s{L-;%h88LYrV;%g7mkO2t8Ulc-wa202${KE5|#ZK$F5Oq!a^yj|R zKK=R2&=Qk5Uh|w#0MW#SxQ>-fXB+>9^;_v4NIb`1I9ibvx0P!mXaGZHkdAP60i`l&I*t$iUndX``Yh$3%tp;}0#+ypN-sSJN zPcUvA!^_>bXWdlGs=_`@i*5RmN4IyqBa4mr(e=0F_yA& z)oNztwsC(p_fRtqG94u%tZ2zlxRo7E(hCcfgkxAMR&sLzU71;QwX*gm92G_?l~e{X zPG{zg*3sB^eFJpl9ty4VGcAqdBd#{i$psv6)+@XLW4;U{9ioEK)@M6DtjlxlkqS1; z2f-pgzQx`6BmA&y?4nyDyfAlsEZnsY)9bu=Nw@3Poql?|`<~?} zn#ip% z$|*!!F?NRxXW!q#?b$Ijnt?lslkgq22R1mmnC{+tmq+Wy6|3_(6UHgwsx^y-mHv48 z)prS<;mQrFjPQ0qTOn3ReB3R*XZ1bp-~Qom+iPF*%J%H%KChh)ZRRhS7c)mL!*_h4 z2L2L{q_glV4c&)n`mJ9IqhH0VK3po3UbzgzW{mvJbb7@z^mAbR{`>B4&;9uqxAV?9 zyPd(!0pGvsns(0FXQU(|2hmNTU@1va{`iSPjf`37rZYZw1RGfoXWdECFH?vxuop^( zgZR0AsLU|`<~^i#ME9KP9`a9Fj4{1vi6|RF<}nU3U02W;F2-RZp-fw0Ha)kgh>@la z;I=s6l{^kFap}Tze!&ak96*scd-&Bae5F12InUt`v8BY#@K$~ik9_u(N%1F=n6@-EM__@XTN>fSGZXH0Tf6M{5b})ej{hlDvjjBqcm%9PrMy-@y1E*(O*uCLf5*G z&S~oXp+8@_U)SW=#e{v#aZ-*`&9*G|jzE*o$_iHJ)Zd zEmM9;$K-*2@f`{Gd@-yu6i(ZE+=J!`7d)Q5J!{*up8cG-HNa)`)3~l=I$<0&aD7jR zR>z0rM@QdIPzu+fpRnsY?Fv%zHx-O9f-HJJs6szY-H)WwDBh!4st}C#?-S^KvISzsGSOI&)M-yK$bsM# zgcODz@sT3xFqLQ?4CT2i?z&xd-#zW#TW{cW{F#iuY;RBh*`GzLGsY0Bj317p5cch1 zgC9$%y~}qF`&%4)ao|qb>p4uZd~BIi}y|hbDIx^ zcOxg_?PQ&U<2p0hR!~!;9>s7J2U&X@gDY!`X3|J|eFq|gAN?y#(o^wDxeUdtb_f>> z6!#I6wr9ZZUvq!Je8+FUqrLI9uWsvUKHJio!Qi!Paw5+`N8lrt1NSZiF=L5aR3a)D!nEJCyD^EGSbhwzU>6;psqvroLlM@u=SVYOlD%IAtG(9YX8f z6~Yv^f)lhsi?3aIfBVP3|C=_Ome)*X*W7k-G;4UK65c{AeIpMcpA>Wwa3&{)AN1$j z0sHjnQ!h!1@P>gFZX5zA_kpE%a*i8WurlKUFg(4_L0ADuXx4F+v{HanzoMJ>9N2P`LmT% z^ekG}w{Y`GJcL&~C_L+}pT_TDIWM>H%#U%_N+a>j^vX^?Mxn9vt&Pld6^?orGWBiT zLZNXmdgCiz8g8eZw3Mdf;au9z z9XqU6^^on26mD1b?qM6deeQh}di%~%dlSo){GEbQvUbQC2|=R?8>@Li$0HjLIQmQ9 z-yPcr=zbZ|St6B^C)hpA0p4-g6irv}v<`zLD73-}gES54q+5NDe`f>|mo6sl6OR6( z{4xMz4k%5|wmot2DeWac_nh|L_r9;a{ADla_{c3>G|%EXYdsX~R0Pjmw|y|`33-=lQIzk5azN0#yvM#`7M?)fz9*RF4q51Z9~>(}4frh}7% z_FJ}WkCnO}hbg@hR|hjum?{&Mm2VXck3@2xj+7IJScB40Q51rnz_E*@ObF9(;WxxP z_!iEiA1jQ^=cL&CrJ}ao6bgq>U=RtA@`%S7S$t5Ap+wRJ@EL}rZBfe`JF&Lx`GOvK zGX@E=sc~{!x9slrf#3f<_HCWkzWn+BY`aQ z)E-sW?!NuT_NF(zslDqxzfG%ZJBrO+v<&K!#~F0}R8W#F1WW-W-Jy~xy69d)SnuQj zcR+~0Yw}<`kBgQ8Z(Lr)wKpZiLtduu*mN8VV>+Dy>07S9uKhB#^X7G{+p)*YYwI~k z3Mz+^F=n)4p!HsqyfjLQ0zP>yd?aCwpQKx+skQAGsk{SU%F9cXTDPg`6vW2}kQbcGS~qc6&-jpmjt=;f&Qv zwoc5atGH|HruM2=y`1s33phk<4YxSbQboZKDDrFA;#JYtx9~=^0f`Kg_zbd1IJ1}T z1t%Q4AKj`&HFW<;_DVPT)D>cqA&z}2pCs;hAcsPr!i@YPY7#u%v=_Ybu=VTEC_ub} zDe+F?d5F+Gtbo1r8P8~IR;*}${D*(o-v6H8W%l9Bb~H0dx7>C+%7s;{P|ovmqcD)9 z@8}kFGcaPYi?c<%jR3C3c!^!2DXi?ZRihG8h+{Ai>61~8Z79fYHjE3}vCl%Gt!J80 zW;?s%H0c3ml=d(N6RahyX+1osz4#m$ea&Y_r;!ie{s+U;PaG!N?b@`a-E`-j?E~+B ze>?ASk86t-o!EA8{mFC|+hvWGib$mg;?Y%9Fl<%z;}GibFup=Dt z&|cpoln0jdOE~3RaVnl~)6WV-x@Na_C$;k@KK9S;TkNc!&PjIL+3o>T$O}&w$1Z^i z-N9d+Vw}ujR~n)5%`a~r$SZ|?#HP|#KKw437uOGj$`8MGc@K| zY0tbDykUrgOZLz=>=M2niKD%L3sko%$l;kGy3AysHIXRgQp~8gnbY1AAQ9&`1ku_h zZ)x1TX-ivzQn~Q_$F@tK_RRL%?|eVUF)rd<+*PckEF;oXspeeBx4l{ouowJ@V(jR@1d)zKZh z3T~n?px1zQ3Z_Q#;ZZ(DY2yYh!ux9@-Bt8Fc7ZZ3Z6#hiD$ zGIkWZ_Qv$AjRT$v1-ebG!AjwFbS!$}G!jVdl0R6`r5QNs!MFB`*SjZgA_zZ`ZUX4+ z<h&mR)0yGFX@*BGK_DV;@G-K1T@b|EL#>$s;Cp-l8%nwhJpEc*G z_UC{2zV@`IUDAH%o$qQVp16pbP-RCh`0>%yI|@96ieon^fCf|nc_)%utCMI+ID6!p7-yF>PQltDD%O~XSgx<9 zS(l-_taZfHTFa($ocAG~e&gY}zPpy+-d^{szuHb(a8$eeYu{|Ie;r*3HVt~arMDqC zpsV7vdq(pu6kXJ2o!}L(0tfSsQDK;W--%G5G~$8k&Ds<+4l)TZo%PQ!k&CdWn?hfL zUGI!j%F3^_XUoeQAa1_y+V-yBeP4UZ6E5Ifm~2VfT{T?P`Y_1!qemf*7JKL>ZCzht zH#gw&Jw(0i#ud{DLs)ldmyATd@bF#6*2YMlI+==U(zL{-3s^7%H)t$v?M~}1Cgtx} z7~;x_NnL(aMus_J))8&>jn}j{vv~4TpZt&Zn%BIFWf`ZkzH1LNpDcec4l?F$erZxl zS{f8TBOiQ6%7eTN>7IVluE&fBBNH^}XjpkPjcn!kmZup!!geu>Rz*{=FqDsE^BHdv zXaXMZm*1IKrl!3TF~gZqN9MvPNLlFxy8u)f<(p<@%_vnA;aUJaWa|D0?rY~f_S|;w z1IybNKlagf;>k%ezB5fUeK&DMQj0@C`jobAUHvI!8jJGE0^F)>cC4Ue~ljcw0 zE)eWZ;_WGS9xvgVnyvTV+Ftf6Z))%SwYRp{y!=(|fBe>OwawhgJP|xX!7yFv5uc;h z3i+u1atTxlqQckwvW8)1~jX-+W!W;)?%jw{xJ9t(Eo=1MEx-d)~4N_!0P#`@^6jabn>bV`6c7 zAn%aDL^2dN4pO@}`gKOdGr4EO%V$na_F<3<={#{AegOw-Y%qt(dOFt`<5-orWI66(?mAqwISSW|H_odNK`W2kJBh%;EGzhdRe_Pn2c0k+Kg``r`KaPy7?Dn+37`-pknvH)4fdMrf?rfgFl!j8#&6*np;p)pc zo-%NCy^LqEa8}LA``aW0z(ba;an`R}A53siQspK6D&Kr`Mw*fr$QM{hMjl;#N-6l| z5fiQ=-g5UX?T`QLFWS2~#QUAU^^W#|-}^mw8*j=n2p01>PUI4CTW4~}wLA)6DU|Vi z@LRv3yX;Iiu}Zu%9JM6jOEG9qBjRaNU@KnIb_lz-SNI-&!4O~bU^mkP+_mpz_72tC zZoc-acKfy0w7DFgY3q^zjJ@!3{DqcU-rXbBAtf1!79t-Wj?MjJW{fOh>2UA!P^r`4 zvuli!_h?T|pF8b*86Ed}B9LyR7qyXBt>a}TnXt@b%DLsyr>A+A z(R3T4S#+teMXzBPsLiKRM&3JmYOgY8MP8=d{7$LpBKBm|xgH5pfQ>TN3==D#LbTrL zE*vr|L&P=UhXs4*7apV=nqC1ioIgn740lVrR>nR*lBgV0w;+(zVitY}5M5z8AQz6=dXa`x zVfJcft6(EDNAsA0;sSGoRAd#@WUiR@rf5WaDZ<6(Ov0P%@y2ZiyBUPuv*OP7$~U~Z z{rW3@vAzFyey6?u^{*ibyLHa2%%DJWCaqm03Z%{DINAW=E1HW((yFIj`Nf+;XdV)` z$uJ^UfJs%0D&>ym~K`Ygp8I-Pe0Sl7Bqf@b8peAo3Cw)&wYG*!Ly#xKKt3vu*T`r zZQ1R2#q6LngwBFG4rr^dluPnBH^G|C>XPa%O15xxPrjzVxf{{G%d3IXO$Q=iB1fIw zIQgg(GOs~b19oQox6bAh>|jbY-9~@}BG4*k0@frVnTURgO!$nD@oTIx@zQEhD+C-7 z7={yGWuV}yjMB~cLpVopEP>{&Z+=6YeazC4-x*6!Ztwlw-)YC6@wj$02NAjH(X(8w z9c_)+{ScPdg?KE4cN4q#s+i_@jB8%p>tl^*&1u#q!!(*S4B~QJA*~B%5T7*A^E?JOp2d$+ewede?6wBwIyuXy!q+gsoI7AVI3 zPRtnDh42Ogg~^tSf>+&*5HN*`bQCg;?@H5m*~6278Lk*n{z>ZyGwvt(F?2Mwia&Hu zyXjT_BYmCAt={1j$OP`vZ#DzGH(Ym3d*O>-+`fMKW$l?9Kz7!}7soLkN6zIAaQ^Hv zct&zAL!@m zc$7)(c5`hBl`)?=o@N)DmM{57WEA7o zqeq#N*n(N^hRtxX#euS-vBdH6(HKAg^+bw#U=-MThH=6(7@|$alt87=xZl8D4O?lJ zziB0c>5_^dGn+2jC6t0Qf8h!3<*#~Od)vF;&!OA2n=$&m=e_T4mw)9eZT;#M9JhH- z)OM);SaYzitKp2F{eNv33Tp|L1>e>|Tq6?ciK~IYj`)X9$pf5DJpMQ?S=$^<*WDgW zq*5VV?S0A^2mg+zjZ|>P$6Fb<-+N~&mrs4REj(&g`_PB}w7u;&-xe#6y}-;tTrYSR z_el=;F(zRxUP2cGe&8=1bSrn2LfOSg|8&zn{FcAzXE;rUO*iAzclz=>VA;@bXdi{u zLV`hqz`?{bjlwT#U6myGd*1F%4EjFfnLpFs{hs%>Td%y5-PR}NQUD8mSHJ}loCJLr z8=AIbWntj0{Eb##r5R}8j*0FiymRY_O2(&nWY!AT64!9k-N+ba!_rdj;TG<_izx}$ zE{^d06GxXkY`*K3_O$1{us!bd)7n+v{Z{+bNB=I4WpK%Z*A%<2O`65MzGCjS> z9<(Azz%>2x>-jZ~Z^Gjdha4<7l2}4ODq?ff^RIG>GbT4Srakf!g~RX}M>i)pe7lW6 ziNf^6$Zvm5F#DzHUrI;DY5(tyi5z6YDG|yvM8QYFD^?k+;`$aB2%@v^2-n(;H{RMl z@#)XT6&KHb@hk9~5rp}vCqKFE*|LrcdA7G7f9Gdy z_BY*kM?2}PbK7k<-N*shH@A;`_#fM^|Hf}b4Xv{Cwu2e8s#Js)3j5?1CWWaU-Gv`b zeT63kPeCFVgYU#?K-W%j=x*5Yri9IRnX(f#Onv(i_7M$Iki(7m)jiBu$~D3-XZa6& zJDhd*doo8(T=T>4v+n5++8_P#2it8|T^Yj}jzjEV1-FaRJRTHP3m*Z(2&^x=nptQv zC0lusW5O1$zRPZ_MY;{g5-KlBO&LIos*LWOsI0&GRb z|Mnm4oget4wwe7#3y(b};2lMm=$fy7neY#_m%aK8?c*Q)`*zj$zTcjF(Nj5bdu}`P zF=w?o?85d`cD1a$_ezP_z(yMTxNBwx{oP#%t|!*-jg4_o3W@bJ`y)Au;qE){Vv!!g zsPY9l`~7yS6iiV~e0lrl2ho#N{`#RndREJ1u5{hq4m`LV_tyUMum5*DXX(=R!>hl` z;O*3Q=_OB%DO3;6it!c{%e2Ed+#8`#K&mDyWs(9=Efp9WiAv{8H-t$H(j(F=d%bmh zGk<#egMKH$NidlYl zcHdR-tklCj{8B;r9TgRCX^<^e0y=wTd5N$c@1=`Ik`Pu!WT$EG%9U-}{JHI=FZ#Lm zFq>B&;>gh7c=NBY)nyxF7G4j_^}bXnp7o+qk#@yDTd&dG0*-c*(@(aBGK-|ZrQ>tH z{l-IsrL18O4}gd(X%&p3M@AXN;4_to=~fzDWcE85b>p4aZW;kt--<~bL%+wZ!QZpDoD+~+=%t4BA+{m7i! zZjp(uWF(j}kZGsgB!_tre_L>6?0$y9smnorM)xSaiXH_giJ)H($1tNjCxoDB(oGzA zvIS$L5~>0saePY2=pMA>w^tOINS|l~8vGQZFlWH&Q0)o*i6Kk6ksNO9VOt_16$Ch9;wNvq`co2w~;y_9cX}8Z2@UoyL zVA9szk~&Z-N&JHByF&t-Jnz4Crx+R?tGMOUDFeP$HqrWk4{j&0WwM*SSC4z*g~WZh zJ>_Z7Xy3o$TWu=iGRGW!3|l;Q(srerL)g$Mwq6*JcZ-L{fqs`BMC&CWz%RV~Hs7Y) z6+MFoKH_K?mp$ZUi0*h+p7}7YtrPR6mvJgT@zDvOq!-cEVU<2iffn6{F`iKcTUhkG(y zk-3*$&hj}2>R573zjqt^TiVvOZNjX1?N8tRj`o6|eRlf<%4rva+#mX@|4kq1Ks#Z{ z$!+P<(+~ttzT;dOS53m)JYS}v&+4o$U!w=^UY7mQbpog~5ZtJkb8CBlz8+=7*{aSQfV*b^ zJI;di#+XY9iF7P`y#-z^m=qovudwNpLRY*f|L}=09j(bzl#`D3`p1BV-xMgIgj4Y* z+;EpiBe%}3TZXPU;SoP2%!!Zw2_Z$ruCh-Gy>O=BGtVT2#}5JCkbHZewF45Eds zLzIBPPtY_9CZVC7api#~Pa`m7Ug_)V?ngL?oc>!o=c0?+lh{9YI9>FQ{>#VP=8YTU z7zPIQ*kgB7yNPp-j$kd!EU(N3o|TKO7+avlW7AgQm=`h4Rt(m_I(eNuHy2|~;TWzV z6oyH;(9L{khO!Y3U0P`$tAZ=e!SNEma38B+Of(ZpfDweB@$LtQ2_{j{l1+*55ZNIz zLN!0;vv)U*bmtfM{MOATtu@cW6OL~`xcd6`oA3GEcFol{wlmLp4B;M%wJ2LS9NgRf zkd6={-Q$9*3Dj5zxK?z{z3pk2{&ail6V7W-zw{EOLFcsZU2|Q#npKilUVU9#$Kcv- z`ujFPk2(JMcIrtdi3Pi6*;_;n0fH-Cfyh8DQ=d ziuli2xVXLWxzA`9qf}1gdX3vTRe#yCr1_!jx+SlYzK04U%v3B|x^PZ66i=e|2F^(77^dgfP+ls%fYha} zy-d&lbjfe|@3*+Zdld#x+-&LW5N`WfW-y(_j!RBGgY#rox1V|Oi`w-+{2`;ehqr~y z$n2z&kT;X)UdDy-#P_TfX95K++zBY2NXDc{a7Y)O0(Zl7aWadU&k9@gvy}>v;M;Z% zC2O13qT!~uX>;ecSFi|l!O`>DS1$V|YkIB<^2|79A$+5&{J`Dq+H0?CJDHTQwRIT# zki@wL^MzmCBJKIudX?|4bLr_`_6j!!N5aK-X3X5hQ*m@Yv{9*OYyqbVt~m0f(lSJ) zS7lqbu8R~_eo8@%$gamYlZcIVtnl?7>+6?^mnlTdWGa$GJcDF7GtLWodBjfZ`b1feOpYwhZG+L>pzKY7pF;C;Gb`Dl@ZOe4F z1cYKiq1bwn0@XB@f!c$q*sWc)SB;bm&KflBy}*fO#OvPDv*PKeDgW-vGNNmK@)3Ra z>I$W&kvjhho8Q7pp81`8EcnIqo~Hv4optC}cHi~5_6V7#z%!lv5M5OGwQ=+McF~hB zrZ7)sz0B9z`~K)d+^}#3qCBM?X^RH4moYR4;}2&AxUCyoo}pZ98G~wcnXouuYg!|m zJG^kr+;o1*mwd>IhNP%mwr%5FAojDN1>5wwv)kFHENvH@dtRG0_sI60?_Algz6#|> z1+nDxGh$$RBi&%n!rRR%aL-TPyLDar$`?M%sde)L?quY^WeMUV&+6eba4tTIYvEgO z0|ZBSYx0F%OH~qG-bQh{?}J|u+zKU*nysOcPFZ#E$Iwg!2WFsPbWMcPe{8@$j$tZX zg{gNRYP_wG@U1apY4uGeAa>tsAq+{V(RFvA@7NO;wRimXyW5w(aYftCAy6K^bmWn< z+DgvH*s+x(5~2p-xG9>zrs3ZNgmB8VS#A3Rx3xFE<=5KFpZ_xy7z#0ro6g3%>C6;u zV4!gOmaVu=ZnIguHB7y1WsD{^o=JQ3+Dy7L zPE{Yj@R+t>-jOJ-g|YI~wH2EfcUigW!R8Ft(o;`ky7@2;soEKvDaFNAnhJ}}VZ|a= zY(krGL$PS2mES@2&Mtwl>KpzQ?oa}wThhBPJQcq9l7eT=DCIgq>J$s9lT7k0*uK*}-}17|Fl@OE-z6u(%M=uN>*6iaLNUbY{U{A5Id^fum~=qHahuEP?(KA=o&0kRSkjIh*o*)^QWHuC@S!|R(#KYi zi$!9~2!6eck}h4KhgB-fWX+g2x6M21NLssl+fhf(ZBIG>{B{d1)!V65Hs8OTU5s>rAn~%s z)NklNL_lS6=!}d-z;Hd>WL`Sx-YcF*=(e2HPGn$o!3ig~Wt>KTBG-;S#6q5BjElIB z#mqWZVlAhMLIRM96KTP$y0cyJ?f+`iC?uX4Bcn`3#pQa6BWR%rW6QQJR6<-ON;hW~ zN@W`YXIPd=s6N-tsgqymW8@FU=m;hGt8g=Z`e=n6o_?SF@|aVUH87MVfj zm5t~!!R|*`Lf|q2TbnakU47b_j}4%A-gZm-;Gh3x`{HGnx6Kbe&?Q8dY2k5g1{IWa ziXHIe*9t^gkcVFC77O)E1LdJYGtUR;LYvLHwC^xlqf`$#u_T_WTW4`S&K!7s$y1)v z{_KB#uuE@RJLi&1ktvjsasnT1L2YDg#&Mv%`#F7)O6ZwC{j~Pszx)vA60e9cqAA>7 zF%d;0&6ERi^-0-~)}Ye4jkgCY@&_+vNnR-N87D0NpMQ*Rx+cKu7ZE5Y$`jNQALpidSI2hGN>iKx^vT*QW%rCijE9?x*)RoAz_{-=L! zpZoNGw$sl&7X>hz)BTsnz^+UFvulJfbcD=Wm_wd9N4KFkmfv!1+r&meTM9F1fy7J? zO;(MJS4>JtxJ+GgC|J8Wi+3{uumi=ji!)+ueZ(qX^5_iHG=yw63d&g@PuM$xgQrwL z?rrgoZO2w(yvCX`25X&F%JCbSW11x>DLe{+HCGA+LE_smntB_y@>*{79)|1f8DG{I zF6pD2PtUIkpDzCP=_Y9vSVNUj$h7l=!cR~-RG_Q@jhmYj36C$_9)%GfyB&{aDxb=P za7N#wmQ1!u6vq1n{DXcf!Fro`jFZ5$-bg?NMIxnwv9++B zwF65|J-sbH?J@1X2RF2{9t$(+W~^SfuB~0WHo7~)uy(V1WYGz*WWj>Hd*$8j{lEA7 z?M*L#d0VsL!FCv<_!<{5$!u})9b(_n$RiQ0t)jr==lDw~0^r%AF^+!jU5Tb4LSl2- zaU%Qp#rRlh8{{IqEf8R-e9U{j0~cUv0v9=l83~c`Fy%L-VcE++0uFwRGcrMx6hzr( z0T16`HMTCOWvP~rSNu#TyK5tOSQ5Md0!YFL8g{^PVT(zj&{YB-{aVi zZ$DsKl36Ej-S{T9CHkn%-)b26{HI+XV8jX zw`n6?I~5^(prYEg;;#19%m0h+Hmk`|c2-=|V?2)5k;(}flpi6J9bdHvm2~giGLzCj zd0?ERS@C2%Rsa8e3$x7lH2U<&+s1XQTZT zo8dB0I=iA_D$Uic_bzJ_+5NoihVO9?GPMrP^%)3>fud`I07R?B+JXP50T9q=-SC!y zF7Q$zI5y!$Zk}!@naqRfo3?fz6(TwWJ3+9-A8Ev5H_~*&WC)bx!#CUw6+!@oi4$@8 z)~y&9p$FgPSClLNE^>!}sbeKxxoeee;S|2clmUTIaulmE(?$P^o-LQeuiO!!QNW>m zL@Z-wz>uA?8$n|0osorEIP`L$<1mhR_)T1W!b`dfL%P{|#g{^ES2N`y&tTr^D&M_c z_wsNY4!`h(g{;c9g@LhawQY0T!lqUE>*Rs)0YLXi-U6LW&SHG-VU%QS*>I)@xwC@V z$aM3D^&8M>F1VD3liIoGo!c(r*oB>YS<*osrZ52QwXW`dcbZ*gu$S)92G(tb43Nmy zl`D}|{I{)d-}uTG+tKsqN0&UOs@WDoYfAYn1rt0}-oQ^1AWc#sc}pcN&W~owFX{Pc zp$_FP(S649I^ihK^2Kz;!%6_WHm-e85_ZsJo{a5`WX}I$aB;oRz%#mj1y5WS(*?8vOT4MLHGD@IA;B|B9an z1$a~k6Z1)aj14BAv!X3`Wm(D$jDdWHCfL(CB#=x*r%I^Ybt}7w{AAN-&@_aVObdcR zB$dnS-uTA$Cx7-=?OktwM|&)TWy@|})~3& zTzDrVQ=yDi9K|F3O`{kt8fA1Vf8D~~c^WK&8ozU^m)*jjWDFm$d83GCpzyxUI&WfwM1KqMb~Xszs^B~o;dHg;Cln%S+?6K>p<~XQ;TfUK%;JaUel|c?NB~L>*6{!5` z`_S)#ZyJ$u7p&4$1}r1;G~EuNV1}Rz&=6Q9G7P7E7-qcR*zd}WM6M=PhA_QE%$9*L zSFT>yuDaIxq#DLUAP>g~MoojrcnSn!P8M!u2v{*7j5x)v;pVvdv zM_h~_zFm6S$KcSpi;I4RSAF|_G*jVAsD^!Yl}I+dhq0wc75d(NfI{y$&Q^IHIuG4a zX$3I}Qtz%(>2hpsohB$U1T`k#L9+;waBLmq%#YtHn^bslClUFPZ4)WT3cowFl?7oq z9ulpQM;IHMI+!Fd0><6$ws_q(B8n3@!$srO!9`1Dbq3v=hZ(@44x^QHfVECXx7F*n zaIMVFHg`U0Q1EQwcdGoL-Al%zmR7B)~bU(}>o{V~!+GIBu!K+-( zW6{-ZS6$K0T6z-G#d~64P6bp0W#%W=njm0~=8H$+BI4SkX6dLD{-70M3`;x$;2@4F zs|>F_zf*x3F5HA?Q`Wd$eEmkxz+HhIrGuT1d?1niPzs^^>Rn;#t$W!Ij$@t=R%FsVP4O|`-B&4zR4@fRBj`6& zJVG+s2x9lmYh;Fg>3A@rqrf2$^<~;2EM1e?wG}hxaMJqf)iDyU*m%u|g0de4vv=M7 zZU4qqR4FstNB-f%?K(CxPCBrst!78{gsFsv>3K+#ec4nB4&s@PWy=B4;MawE4)i-)x0!pj+71uDWOsRgQe=jEm z8`Q>`gxiJmt6~kFd}lnDa;a|E`H}&VKSYue)1&aB&_`I@fgBA6zufx$A>CRx{qxF7cAdFwvj{0 zkFAPah&b|kR7=u5D>UtzR0`=<`7D`99`!P)f92h{2~Yg(2F0& z>)=hjJ3bYU^oy|ajWC`#r;N$R$qd#y#^+&R^Vx!OfTJ0X^4#WK-oDAKljDY@t(d6@ zC(&JU4A1ao+zhGt%;!GWPF}KvVpZJ)~zM|QWm8oBtb7Az1`UQ8D8W{fOXeI3FTezDr|UmKf+Dn zG2>ZnlrZ%O%fvYx^!%wWe5Jkg7k+*SAnd1{d2V|fhxELJ?e9mkGIRCvWo-uw;ifZ~ zYYjo!4W$eem>P951dCm1MaA#Yce?M{zN>cHd>vufBXoHllXSbc&(rXWXP$ zg$0EWn#li%o|R_7A4|KQv4u;ISD#+_MN0l)gp)9Zk-W}uJ0hczVFf)RJ zIX+##&9iA|ngyfBHDlLr(n7izUZF3O`Ak_8rv6!A(k}h$yW(f9C z2R}2xbnkw{Nns#JWIWyd7OveOk7c;+)?3@ZeeyG`JDJ?hKlhw=%rOhv<1b*9CdRXO zT@y2tJ7qjCW+n>88G)>E#3{Q&;$j-9Jd!!a$Eiy{!=@lt{{ByU=ks&jlGXL+-bN(S zNCXWMA|L~igqSD;V#EO&9XKP=fpMTrjDL=C>ez%B6Qd4{fe?wnz+fPN5fUT{2%$j~ z-Cy>yFdr0RY5uB!E`R;{(_$KL1EbI8GW2dcF7>tP2d;5Ddq zLg?)q6fP=4S$e83L;UuZg z2B)6($?w&SPO(!s#Mn z-qFIJ!~CWH@vATYy<(RyZ__yfgLPkg+mVW-2z*M|7>qqrBTYcww}KkFI?2gEYqV)qY4fjqLbf3&2IQCYW6i&amN`V5rAQdw>QO z9;8x6UJ~^;V7u6mLtVy>@;Lh|zv^o?Y!&O;4Ag9H5=VM1`M~)wV zvb(uY(j#+p2uyvbC8j9jgS~#oiz6;}K4htnHmQCx!*qpD6)D%GS9N}){F~|zOa0}) z`Zr#_|9k)S%U}PFzw`1#Kk~!%V)v7Etl*O`zg?5Y&(-OCCJe0pUe%dk-mBla<{ja0 zfBG{of8|^M!plGT$N#8L;q&K0_JGu|90cbxX=aa?`r zJ{Ae`+{MNQiI72f2+={y}F z=jv}r@(o(PA5k-PztbqvB3S`a25vntgsVO{b+nEiP9Pw-s8_pPw67Xnxo}t0os>lp zVrWHxccKDE0)I`BArE};lPE_{bfd0}=tA8f(dNQ|X&ZHu51h1XW$ixF7O6Yh_=??1 zw%wS^OQ`W<|M**fR|P7PGAwH|VA`Q1u3blTfX?qJX>061_D~A<=)LD+qa*Ed`K3E_ zPkh*aV?~&p-bdf)80_n|f-whw?e7&%yLnuc7Cim)eFpvJ`i+`ozPbKvt2X(>%U}DB zzxDFn-}8OdmHO$M`egIHdgS5zS;nR|#2q}wyq4OiT_9CHV`-LQ#Ki1bVKdt9;{;0Qhb+8); zX#*L+-6>vmLWW8G?Z@;*ypMIzrN5=?`Udafehh$-11(8Cy0ivJXn^fy>Lg%~7!mRc z9zJPV$ik;j`R>e@)Nz$xuD`p>p;;!#@BZii?B(0P{oCsk&ze~3do+Bq^x67I`$PVW zXFcBYF*dsw=>4(4mzTf&_x}FNx7Obw{@-=ZjY$pr?cW|p@@~^s^c}a*n}?-m4;P~9xbQpHT4xN z!3#ZC-f6W~$Y49(y04 zRiM2+z9Jtq<+oDk_WVvOzk`vohj!~Ue!Z~$#`+^uq_q7F-|}tsh+k)q>K$V}Pd(c1 zem7l3Y(4rjN&U)C{dnVl;NO1F%U68GSN7uS0-HtD#g(|9*q^q#;oD7Jp(#Wyvh|#> zbkpwY8DG02Zrwh@MmDixbK4d5mW77Wc?oH`TesRlo4|c50CyRPzOlNz)H7mzKmHo2R^#;wSc{^iPPvv?x38(c2xvhq+RVa zcx=if#)W;7FS{_tHY6h_~l1`_=j5%ef*L? z{wH64`agXC%ctwq_GfG7^4s-+M0O_q$H|KZ`}CQq`hp$l-~ZtE_aRMs&IcKL8f#1m zU1-ZkH5YEjnw;udWyaL9SH?kj{R@%GfeW49onlYo&~aVIGnjP~n22C-kdt5tlMWtS z6Fj-CpnG7_82O$e7nluB5bbnyPGz(5p%bw&!Gtk2yzp%63SRw#54ev{7;V>uw%5eb z+rj9Mew0&>PNTQ_r2a5k6OOL(rEk4@Y?GztP5;#;Es@(Fa{KVWt!51t2ajJ+Y_7T? zE4l%@_XF7LguH7?eYY7fuGf9`J4WCb=)5QJ3uw?fi69*xa8Z7pGT=s+B5a>U2N>xO z3j(Rit+xV4tP{C3@iExQ5tDm-l=?j%eP}LrDb=bY);Zaa>{&oin?L*TpMLB|yAQwh zOTX~)o!?o1r2I3#R$mhR+5T2}S)$^X_Z&4DVAEF7i3S~h%E z>1C;n{@S>5oD8lqmA7m4x+553j9^=E6mPR*Km%!v|Ix67W-N)r_H^e2_Tv( zI9tp{hbCG}H^H38G<9--EPdPYC=G7!`;_Se&))3RlGGKNB>A zA@JVG=0$J8Nu&F7n;A1r+4QYgmts@<969ujF9rJNO7DEwV)zso812_%Tm&VTD0hfI zDj|HX8OZR3mySb&1K(1nP!Bnw!`YEh*b<%#Qp)T|nzM1t!q#nic-zUVs)09IB@DfR zV@S#lvI*Ag9<b&EwNndCrE>WhEHjYgQy<#S1+Dxu zx!TtVeAs9KlmQRCxkA0?=&UZU=`v{*=CRYtWWyF6Ihk;vi5%hF1KWKLeA=>K1Eb^) zY3wLAcbiF{&|h7&0d_%V`fX-&9|f&|UrUk>&IU9SYj9`bX+x=1g3d&gAlE zzWL9;{JC%XMm|I9kHH_`{I1jC#F2fWZ`Y*F={pNxY(Va~($2(W{3HJ}`}2p~7Pd0% zrJS+dLU)$7gw;#lpKqBMWL6)LF+2==qOsQ5&`&aX&%RS2OGSiuoP-q;K zyrpWnb|{L+ktyE|WWPqQ&_{#h&-iUBfhc8cWN>QeX%kxLw9itt>gf~k=n`1y15XY- z38CQy4{tZL2*R_&7HS2<=q*ij);`e%92bF?GP31ShtLLIc@0!H8QM0q!H2%YREkZc zg@%B4XVC=fre2Xj?#I;nDe;GF%Crd$^|T)ta1wM3rmH_2Rkzq@WQE^;v3ul;Zsers zms~#Dr#jCHcb#f|0{A`$aEb^Y!0QfR~ql@h|^X{r%v7Sigu+KWp+q zeY3aHxBSI#d-N8H% z4|3s@q^~=EjJbfetiV778Gpt8$dG>eEPYKdzfiC=22kUu6l{562@X0G&tn1jJ;lLM zq{5X0MZPR@uZQ-YL-&k7bl`ahK)>6*52M-^ zec@RC;Owh1F}y*HJZOZEP1QI3rlZf&^i?eM$RL-OPbp^mFO`OS7_WfwNATq8;tpqT zKeE}y`Ip?r5z!xh=t$%VG|K81xdy8`UI#S+d$(=kNx#NF=Cq~HaJ4oCR*83Jtxoid zUkdyfDG-c)%~$gLl|tWVEFq0jS8Yfb=;y^%6=EZ?mRJ&-foSXq;~uy=sXsJ4PJPfP zrvGR?8hzE*eBEOC@a1RfkJ|Il_tjtj^)EmF(?9+4>-GE9?4sc1v8cbI!S0LQ693lD zJ$j`-*FRIb#J4S?BmKm-$R*D%JGA7|7)$Vx@H=T=h_wCP?(1V}8o&TB;4FmVY>Y#h zgp)!CjK;{N6~EUDRmlc3AsB>_B?T}J!_{*hFKW9z!h-C z>~z4P^<4)prq2`f!5h2U0~pD6uM-UY(&_29HXEDDd%f>+(@$X92|rN zP=g{34&6u#(%mR9fJ!4U)X*cHL*sk-e7^7Z{jJ|RYt0|C?yR}zoV}m@>}T(LuE34{ z_2`*K;95>eN>@&WEY(ddTj!O5)`DqZkFJs`4?4MnU}5q8rYr8oi2dm_@w?+}j~G1E z=8O;$YnqVp{FvmhWF=_7FQsj*()65?-}jLmP0COFj5Qoxa@p1t<5!%h7}$Fw0-Nsw zIt2EX+z4ja&_|?I8iiKAR%CK#drkesJGB>lu&jp&%n@g#xC4e~ z)Z5c1lD7`ziTFlA*W-2ZEQf6x;pAI0R*5!-?2{pFBgd~|UQ9@c|A;$Q5mBfQ*p+5##Re#OkH-wF- zGTY&rBsGR`ysGz-<6`hCH6Ji(YQ*xw5K90-DO z9|*}5?A=*CWGfHqtNl{R?shh6;Y=hGsFWy6I!rCPqjCt{5O72;_;1Zt*BP=Dt*!U9 zJ_yW-Sbg>)trTzebFH7wQXYlXWgh96T#g?_Io(c7bk>KaeBf}*=_>lbYog&}Li)N> zjBWmqnwo{4l{tso`+;C_3QsN6tIR8>XmS7InCi#jyw;4I@lnyLLc7t&uIO>by24%@ z`+J@*PH`)A7IqAYIajiri{k_>qNEr9xE!Kw_Z2I-8J-~LFXhsx^PFZ3E~$SvwaI>B_xo_S zP?*rvLeSu0@uFJQ{EI!3>E~8z{;!>1%_U0E6CaNe?!R+pr#9(WH`2bqwK*QjA9%?k z^J#?4G@)}>0pFWZ&>VD#{#f3{tASQEO%0nS8L|wkxa=_@x36A(E(8VM;~{Td!Bv4P zL!FzrMl`v{9=9{b@4K>?@T_&`W5d*BGTkJMeJ>5axV>b2eaow?QLu{SO%W`~eBr)SNY5!0TZ%svgXPrW(#NnBn9oxgy@ypo<^9GkqnkecjM>-0qLq~1B~OuEykaSDSG3J+QvUMJS3<~9Q{EzoEvUjd zpy3j{hVtUTta24+8vRT>k5x=FIoS14-_N_;UmuwJhYb+0 zcbjGVP3kUYtg<*^MwPI#C+xIoSCdavkRJo*n{md#bZprpqiq)xAR!MFdSk>8%t$mR zey9`(X2W(~-0KLD6j*&W)n$M*$V;M!+Ulg$@j|ci8R|jD2jDX!zQl`kucRSqNBG9W zZN-#@=NgcJ5rHVs;n>-YcuGg1#-CGkG5h{l5EyJKsc2%!!g93=zY9;Ic$OJgMN^MD zY5%Ammm){wkh4Q66XNY?nXbZlH+|*UD*z(trt+e(*a0HYn&IlSpP-hFc|zK0w{lm9 zls9efNILmJ{}ioXiYxERH0}n;IFrqd-?bE8*`7EBomyuVc&KunJINigL2>^rlgFY3 zH3PovPI|w$B02L2NP||2)9n*cmcQj)yY_S)hBXaC=0s;zO|o)j0omi+%tWD^0x3wX zN5p&8>q+ooeNrn!&sP3OJWE`T&YB>e6zIYEXy=HA7QW3@iKB{K&?p)H>X;t+j!Oa# zwU|tvV?cq-V6g-8Pr#=m2GVH;YADt0xav%w85%Te)t%X^-p;}&_;kKQa1;_dK6NZ6 zrK%eMe%I@?Mjz^sLZ)Y=0(D_x76>kmG3vT|fo40y#Y^R8h*xL8#Wjb%;;d5HHHF7%zqom^x?M#q<2Swz z9^6+oY%o1-knGmWjeq*eFP~TT(csb(t=a4QJ#u#n1U|d3K7N_=Q<;|D*JTiOBe^5g zwR@EiLSM&UlJ_O&SeeR}4n8;6?ui;~$p7AC?%TOD zx*_RA(Ki}&hSwmy!!6TagC~>O?{X?05ZjU;A;YEhyCxLl3$_1pi??#%YsJl)+af(+ zeo+y>s<}xDg68!{&ul+G*{ONZ1M!k0P1n;VE`LK$Po(P}c$_+*X#TsGXp^5*7 z!@sYLb_&8#V$3QX$9F@;5x?!%<3|@pWD6gZ5`4ml1hCb6ED(TCHX^*b>}+hGat9rQ z09~onbj>8gwXt`1vSU|t+KSU+in{q=w6?OT3FRZ-Tlv?34h1#ypQ;%USmt~KK) zO>a`6i2k62YT`)*-}~j5MH38@JORO+Wq~YmunMt z$-?C9h1xQ&ZE8Sdins7)bmp`|Da)u9S>h%&oLp8R+?DScXdkA;-WJ!qZ_4^7~V1zuiS*;(n zw^*7N98^rQS$U#0Bs`znd6Z}@NlG}ZD*pWU049vZIVCOdWi8DYSq1oEk4wp}uVn$r zajHgaU3V6Eh4~uW*))JlE*Va=j|oE9ARqenVbxW7PMJ&|ku++Es^2+V&L>|n-%l*w zT@6)*zBBaq_xCMm<6BCA$Ku_NKne=U_VngPBQ9BW{{~?KW19KVrS^ zvFoOb8<+%IEJ!PS52f63QR6%ed6q0`{bVRo&;I8R>JzZ2+mSkM@>QPI$+K)bWtJJ4 zM-lBBg+j{CI9m+l8%p}}Vbrk?n*Q<QX7bUiIv>mq-8Bq|5y}Up{`#H@*qIB##D0^%g=DY_!yoWQlF>Uo*b> zw%yvw=`Gx)GzRmYTsW^HJL?bYV71t)M;2$cP!8|*%VE#~#=mk7a<%Ih9N$;Ab$TR$ z9(u8(@pwJ-pn0IiMzDkBXT1xYSW)dx8BrKCxsTl}#h2<)U=IfUT*B1H7(HmawZdu> zazfHQe5kj|L_u6)bpM4Dq92@h=R;a_7^pS`AHiJdy(wQ`a)GtQ|l%Z|=$-DzVjtW?^sR z8cpKR>TCHRHj*b|B4I%$eW3&$rd??F(4-4#P8xrRT=_Wl$rzQ(bN*S&U^$hXDq2&A z4B0{~sMcA@-kQC!^rV=iocv|A;h7`FwzT?1mci-s^lDyLtBB zpXj$}G4yH2_VEf#PmAcD|2oC6>L9P{pN3BN8AsQY(_KHsbcTKSJ(&U5_2_PfL>8_- zweJIk`}`%1({Gy-cdsUt9tfNeCUXkBOSEI5u9|N`onk6H)P8<#B*YbTR?aSbh(7tH zGCRBGTsNe;GwoWjbD$KT{MqE!$w$k0owd=d&n1K;j%m>s&Q)6L`JL>_vY2kz&>xD> zk?e~z8wU!byo?W5*$Y!=0vtD5s7EzJcb-9ZA^ltiqN* z%-iN*dS2&Ic!fLrEWr`7#CVJy=<(hkyl31bJDiBCdS2m!s5q#>AGV;4Mk!aV-{qBp zt2&;PH2@~JyW!=~w~XM-UfxR&5tiS+2oF_ai)hdd5beJi5%big20Lz-s(o+Y7~6~I zOwkFQnd}d)c|>O#dRb}nKpT&y<9m+7cXp*>Q$#ncGi90bh-O%c+0CwB9VvnAa#{7< zi#Dvlugnl(%iXl9dOY;y^zFb^ZuawloyaS3i;W=TzPw?Q0dLTP|GDLLQPpCY>SEQX z+wTSiwBTT_!9}ed4kl0|c9<&sHjm(2@ilrr*dMxaUmLHXJvt!| z_$H<6Wa$&W_h?lxD(Beqn1q^1d)E4-Dzn@5kp(LyT5!$Z4qDIu;)$FhRx7Q(E=q>= z`6Gs}nzr$^wzHh(*^7w#C{IcX`GtXPVd_F5V5FYtVCcS555_ptr`hkvc((H)nGW1U%MhR(da@ip{*x#>VIO8Gq&F}927O7PkukdF5wEE(CQJ&~`2Eb~ z1WrZu*+2B#KAV4RA5M_mW@q?{J!1M-!xhmHnce#wH_N*gYgV~J-9yTiS<9N1Zm&9v z#m{KfjoCSJW6E3Uw>En$?=5g-OEpv*gP{QZC%vWr>aw%yll{}6i)B7Y4bjBjw>H@+ zYKi@xHiMwRWs&K2oZshszdqT?DK%H5&BlYy*qE^j-&u3e{1)9N z!}F8ItgOTi)@Jd7BIj=i{r>4sIISk$XMi&~K499r$v&+8n2FK&qmQ~BM^$oa0zX}T zz8q5jEewMgR)4Cl$sV8J(W?5A#Wv8O$_9xE0!!vE=h6HoEFeT+?4b>(|6_-}a5@uNJ zPE>1~ys)_>eD3g3wrLe)!64=G=^UyVEj{m=5Lzz(k*L@1m>;J-l`4&T6=+?_)$ zDdD_$YBIp5cyUuiZy+>mw>e!LGts?=)$f0QJ2^ysrh6~!vzqW(rcv-CxD@AFo3_Qh zO)7uSJo0AKieocB0WF1<=9^#&!?y46-C?pp zlVA~pX9uX-rj_i%=R6fD=2vI;HhC-uHxn?XvmbBlDeTO1+D$iQghrtIQlVEN5VdRB zpz{=&!yMT|y=CuHASr^1!^(+Y&gZ z)-ay5FI4ZDka+yJ>&&8sas-QuhV?X&_8&v9`vqNJCaexsxkwqyzi5OI!A>`YnHm#( zG$0I)0(sw_O3_clm?ef*P$dNEw4HT+eN=S zRmjZqjAA?+yZc)ksKqa~@@=5a7wcaXSW^}M9t+n^Bn)re=isa*x}GDSJIRrcs3Wfn zb?ouvj^p~EjCk^yR0WY4hLV5l0=ap#uKRKWr=x)uJu7kC{M4!yH|HNN>Yn~^v0UB( zh4?!?6!%G3md0}1lE#)))OWddb(&i0QtOeF@Y1tSJA|E=QrGe9 z^nFG3iQo?kp2I9Gj=2a4H3sh9*wW6VVYk0jy&+6Q^uP#+r8@h3y0t$^Z~{`PkUSx; zmwkfNOE2eZh)?Q&AlLGSB-b;^9sK2@d>UHmKV$@t#{#x6L3NFcQ&^ zzqfe(_N2_!yh!RV?U~FPg-jg>@}l@DKr7&F{;X;_=|J0wPb^vSa|(?|mQ%}4To6r( z0zD@0{&A{m0vVw-^i4?}wCu1|&&)D+9KB8YwLq-1rqbK7V0(Wi1sZ);?di~Z>R<47 zt6f@vMPVKjIBLBaC>1-07H}(GC6zs~%6`p;UnRYxc_XE+eQEyFc|U7>!U26qvyYS@ z6$lU*vfuzajDg%qXcNJn?Z@KfN}7lN}zsGqFtY>4os&YpzYysoN%sVZ`hwU{XTO zcnK-IZ-`CnAM-q`iqMPw&i36{Lv||52#|tXVG-}U%N}jWxMT)vrDO@2$5h?-;&R4) ze~E~JQYkOD2Ev#%`^+%!Lxv!A?UYgTXL@ABhEu?Qz--8#^15!s~O*RV>)U1uK!8%-&C3umEt}y|Df?f!Pr8oPC5{@`{)*G}4c~ zVI-B#p`53jkq|wxG^@Q2z=#aCKvVsJQ`wYNsIEVP;0M^s-&GZNUtZC7U)kPr<>bN6 zw+swtFsX5X-+T=>Qw=)LV;A_@^kcRF44!BD#l=ZLCbazyqiG4S*y4g^&kwzLOupL8 z&{~py09G;RXP4HlGE)6XwbXjD=wpgu2{mX$nN><$io~mp-u?Y;irT2}D52jGTLujP zPznCxWVkiTCBs}y;ZK*e0S;4sYn_H-DGFdl6*WyKhcZPe<_o61UKQ*cB2VI^r&%K& zBBHOGMa%VEQ;rSz& z*cHKG&ASF;G7_&C3+b-cc>~DzX}q9D+!C1fI|ZJXses6Iy`Z^&<*GV3a*ik-a@JmS zJZZ@uaQlU)e%DcP@t4^TU&5%Mm(yuJ1OAEA#->fs;l|LYVz9N#k^*VqCzHr^==Krnt!OD%QfTc(%0BnBnmmue2ypgZFxnwL6Aony&RLaNLjtcpWhP|CuNDQqh? z#^2v(k27L_AZt*>0DffK1y9rnmgN>3Sfi39yG45YoYjwn-b4Kz9mLiy-C}L3I{g*G z)>m&=*XKPmFj`tR_S(8+XYD4lLJ)xiK>euPSI-^@{(U2tU38PAac%wv_8Py~OozDG zqD+&};!jn#tUnzuFR6WyEYAHv*TIOZ_LzP$hGqfKI|Qt?Se()aU(Rl!TfgadDgL{+ z&48g~T>IeeX5nJK>0Bhw<8oGU@pcMz)fd3RYh)%*4|*qUWSkoNXB~_4N!TZhKL|+u zgZ5jNZHV3ah^2hlQPYQ;!xVlY`OZZn$RL;2-8^}*LA~ZF>*-&BjT>xRKO=siVE>FE zIoCZHA%XI`B0uM9m0U?%F{w7fs!QR%GwYc#&*ywsP(?C zuda{YrIg99SXLnx#g-7Q!QIC-Va@igVrwj#O$7wQe9v0?_g^_$4zgs4aCZ9RePGOb zVdHH(%@QX+$|)fk!PMcK3BQ|uZu#d+(5h`E0KK(aT8+ne^pb@)fd4;SyYeVn=*e6x z;xk+oG{Y%V(-9+}sV8i^d*GgaA*9qJTFr#9{M^qPe2rmcfPKd%mofDKwn&|)nhXvm zNK|T7>(=<(HU-1(Qy`l9n?F7w^7RnFmvhH=I3t9QLeOnpxbkuYi?6RS$MUX3%{=+@D? zs|p>m|N_4%t!p}uc)< zETgrZ@8E&9^nmc2r+Z0e$MeKdV{Kt-_Y~lY5hKH_a0JQGvR%*zQkhla_7kb!1u?HM zei&Ou(+}UY@E`nIyU$uxgw{Zez$l@%8foZ9*F6T?kFO1k{9F{iul;Z|Ef{kO(N&&Z zZ4UL$joD?eT@Krr7FoU;7Yn(z-Z-%7n`z+Y_;`GAv z?@cQf@1WPr#NSy`ZeF!hEv zCOB%v(<9RYE0}_b^ORn~zontsB0D8-_`%(i$7b^+CEoAX0Kz3IUR=5-n9`)g7_b~k zBLlcjRvhDSUiz8~bFl}H3o!PB25?S{cQR*icHlmq`Q7 z^6)lgDXwq(!FsN2YaGG?M^w7K{W$4}f&f8&k>!gH>BprYO-91J`9FVPt#3HA0#ENo zM<3&<`yA<~Bbb-mH>$rHID-l+G0$7;5?YIJ}O+AAu|5th_JDCQ@Uh-SIi$LLSqZ)R&h( zP-hk?M+ZN4B0h9jkg@&VmU;BUW~a#K;fD*KHVn^;kgm$NB&^`l5|a=%l_SDX(S|K-@6B zZHp4YD&Z!$MzFa8IK=lYV`|7SZl3C4LE`l{+QU2RMw-nadFqo0AhpC}gx>O$cm@;p z;E;K61`x9tV1!*2iP-bmv?y-$U27q+>C`krAKTz!lU|j(H$dtJ#=>tB?V#Cu{XTbc z;h_6aX~u;9CX}S5yc}zvq%?uMaT}6eXDaZFyWsA@AI~2Z0sWs96DmB^wGrg-m0BPQ z-4A$ZZEc1lxOg>(Q$29UJXBz|4VS)Zt9)TKPIU7UpP?tJW4Td<`{vx*3jfY|_U9>5 zG9KS?F(z)2r_G7(>e|9@coZ7*4#yhItjZ8`W8zm(b#2q-cQb1%R!9l{58*a(f7-&x zsIvDbDT4wtBtJ-;S9eu+?GX@791atwq(vW|n7{ZX475M&a79_18po(qL-MM@HczLG z*{Xk}yXkVhMW!+s$b6$DRq(<-xPS6bZMH)5g2s2`#c$(S&snd=YUZf@(U8fY*|kxd zy~ds{9MkRBV#&(tPs}0RNxBd0Zz;JC&ylP0;h(51nHvJHzanJW`wuWzqEGsSN-R=K zExM$8Uu}rg>!!&ezaHz(5KbrsM=*P`gTeTRZN*CW#_{3w)K(Q~mUA6P9E2S{7qpxn zL=B^2Y6JVPxEv|BlmQ^)5tL{Ez|J49mjgehwSems(REJTfm11~_7dyU1_dDw;|+u2 ze>f>=Aob#Qce~*F>QIGF!QM!`(nRRtf+sejn>v=!RE(bMZALzYyW_7 z_uN11R$_1B%8fQ~+Qo<^#oLuyUJSov1oYy_3LnopC%#vM?Vv$mPql z-p=UuhuiMBMj8+@?LRxgy#OiGYFynLNV^iw_z?bkwK0!1-34h*3j{r}_PH_br=0Fw7hd~a%pZIbz(R&cOuI;W zRy4@*$97i_LdL(-EAYpr_2oumDMSuYosOqKD~B)OgR|?TUy{{JktpZ!!fo|gM>oiN zRXf&bRwQ>!=FCRPCi0Ph>LFFd=jxnmqMshVfJst)V_qX`d@UVO)g-m8Ya8$<6dqC$ zS6v_|AY)Z^_dAnbj-YrJWkW-2)A%Sp#k(s)b$#TIuyrRq<50w2#8-Pd48jW|q_gQ? z*l0bQ*5hU1=`*irH`1vR`R4S8OX&e@VcTS9cU44#d)H>FX zRZw9#KcHTddfmphGy zWGUou>ollzwa{tqZSDZM%HnTk(ft)+2Su}xsaVqFHnF!@7Kje-8JemypT@DDdO2LT zD#!{Bb#|JF^|$Jnkvq34$VYl#%(RNHxwzZjZ3WHzDzhjy$s94UIC#*nguuBSonR^; zguIEhPXLUY!qlnLesL;Tba)Mq3!4A{jBPP6W;08Y{95SdtcP-XvmZ0s_M5 z^V@)cPP_mN$??75P=UB7^Oi;`pIk$ij-VIX;;d^xu*LU%>HB573U*T|T$Sq;{$JO5 zPCRkgt*SGw7hJEc3qQ;PKc3NRHOrtO@)vs5Ltx;t`y#5_^011Eih>?{G#KDE)pf8*!Zf#Sg57kHM{s%DzT~`#Ayxe8fW@6K z9DNkXziq$#1!IMQZGaEpv<VxGj%=jwu0NS&#U=E zR@lf|XmBbjiE9|xXU{j`(j2-5zIuL~Lqwg^N0~*KYDNG0EI&MBewiPEt%Thaw~@k$ z|10KTH$uhh*xxPu@&8IB>wu3{n|FynKAA5`gaLP3{}Xp?UTb($Jy#t^6}PmOMnW)t zLs~5~RrJvISsKybc;S$b{!&^eJ@hS7>Ll$%i)~wWk7jrLFn4ay&G#Jz(tofVTZI5@ zeBzZc=Q!9(D>=|yEn|eV&fc}uTNRTsmonSt9oo=pps9sqA7)#hKlL6R9|8!*(DzjQ zA|Spr=DY7=SC&s!WPM~giojJ5%`xQLREjCTduUIf+tbm>>B|O8F&0{v0*Z56h%&ns zJxBw=l#c1$8^L%VZW+jt`mc}=i^s;VP9cnEKpF?tSb;Em0L-{L#9~QMw+b1Wu=nRm z)RVwG`qRJ4hl%UAu#eEHUorz)!(GGg2#qUHckA$Z3+<6s!Gz9-{Z?8B`Bq2|@=$!K z2)B7i(?1O#0JM7;iTm!r>8}9-icn7!s^f9Exo^JY&HM6>#WZno8y z#v8!%SxH=H9C46bu~|=zC7FKsh=iJ>+*d&2g9;*aK2n)ShS<2FtnR_w%}KK7PLqt0 z-FS;-+v|X}StXR+H?}k9b<5GPVfz6b;1|0X)0V=*U-f^e8TEahM0{!DDgfXvE*GvM zanBBD8&;k(`|P9|zgWn@@~rBy83<{mOYlYQbNmN28IM2jT4-%)KY@#oTH1Q0{ZU-) zudc*!+SKSj&9O{K5Y-0m+w*9HdwOmTTPWx+K(oxfw-G0O`}6!yo$f zd-ie}#j=D0PT=94^6e4UO06JmYJC*%XXn9J>vEjk8c5#&+4y-KuiP=E;ffE&A6ql} z%?O@LcuEvdB;V@4=<$^P16M*5Z_95R6)}lf9mtd!L3!ZqFUBW}tPfftPq!soRPvnu z5DD070fsv3n#!i0s~V~O)%DhF?}LsdU8Vyr4n4PRnV+6Z;pN0|zuLC=7)OtLf_vQG zzluX@l6dgyok`zQl7P-&L5{t}PONNP>788){CiA}*T))A;SmS-93vXQrJm>t_Y#zX z37qBtc3eGRG1mN$w|hPJM{vj=<`!_~WaBxT-`> zghPp7p2fy{KUJw|I)BNfTQKVhPfD)W659uMANSSaG@=DgutsdXos3nu&1xq1Zu}A@ zn%d1)n7PMyD}kJXZtgi3`dSX+(zZ$u+k~eO%F%}G8T}UnP4tvu_4x98l3gl4(2w>fLo$pp6uF%|gg{_-)ek|Ajz+!T+wFLHt_#5w*00 zyxv|G5cm0}r+p=%CS4>^Xc1x&!XE%o?3|>SG#>8R)pDJ{Z~O9&?bEyg4UOea?m0U& z*`7$_J~PaldV`oMC)wfc{tqm54!v*gA9>o?ER=tmX*RMNSY(p7nbP^PZSKqdfx4qV zIEwNOM5=04Z94LB)MC5H3GmguKySSXFD^srxrG-Z$-pM`TnY^$hE|WXJF+-eaHp@w z+j_XGO{RfTjm7=C0`bS5dG2ID>hhZ%xgt}7FqzU~S3$RY*p^$z=_ z)N|%zTq(uRv$eo4mA&o*1~t6R^79`(qskE95C0+TCs7Nr3;~a)gE}C5EtE=(>}Pav zZw5w?<=jLDERHwL$~OXYqZ6lMw7@Il1s)&+)_}B!hAl)N4)}iiav0(LOS25ok_ z@h!&2O9(A2Ie=hj8PN)QA?!l6EKSuFU*n@)#Nepp=#|~T(h+F4N^zs5;K00d(s8;G z$ys4~KEa>-#FmETGv$YT`tJ$$s9S~E*ph*UCf*I_fDe3lD*D)zc5Zy#NoQ$zw=ThJ ztU|r}<1>p+#doDZ`0Ne6{h-%Y3Lvj6B4#BJJ7_>S+R`*7QpAO1_}hp9Zp0sD6w|+Y zA5e*{yMML-?NmKo|G!S00qDe5=B{G73r}Q$Ey0zga9*pW=^1XjgImeKz~k$@Yz7C* zsKi3MwZnZ;FM<9itWUV}Sp@C5zf_itlh;fH4A6Y;aqa!Zz>#CV=050(!aBlApjvc| zjMd9%ulVKm_n|lQzYI4g1rJEOlULGH0SNC&i0k}6hz`$s#NqT`h<&Y z-8i_$ird;QssYXadEcs_OHg&W(l{}9ir7vBgw8MioYxPt=JQ5}rSRu{>k?|d+n8D- zaDN5VOtkhkEWM_}AZI}kp$T3nwqiypFh6b|60VpCT(fiWUmRb5!|{;k=G zr0N4!STj;XBH=aQTQpy^jLiK}RBd6l+O^L_%^zB7qg7!(n~7Muw%Qk#7zu29rcwq1 zoEcaFTzYvMW=Vbld4ae8D$5AD_GF-Kvpw4^v(6SV@T(#BN6%CL<;R0b=?%diXB7im z?J2h)Z5G-U?#N19PYzcmr;zkgHx9CQ4nTzg?6L7aldi#U<#{t{Acc4~V8OJd&X_2i zT5X7vSOX8nE>+uu&6?q-+{(&5gZ)_hp@aXCm1k%}6vgx=M&ipr#UGLoW^#eYiWggn zS#r98de@&$O>`YrCGAS#jz|-H<_lc)nJg-iL5ATqasTwXfc5j4_(T`!2Ob`&l0=*j zWY?45_l5(GH0_hNW?_A}*1IpTBjf5yLl2be3W13*j%SYD$|%$wc<;`K2m4fCocmQH zSJMDVoo}l=OY6|fmA^OOm}a(_3y93Sd^R*q-0vVsUz0hRY|VEvi`YNNq_8dm?oc)F zFpPEZG|v5D3gPZsd%O8$in;=3ZEDF=6i}aW{4Bi-^V|01wW3y>nfcgX8~D+}Ts#Dfh|!%%YB2m?S%})l=>{*kP}(UTy;v68{T~xb>%c zL`Z74q6El|9|nG|?w02sZbL3VfMg;HTiON46;K>$Vk;bmKA$MloH z7!r%d4T)o;xN0rSkewP7Kq4XcC{_u3gcbmN{TwAX82pQ9dqQ|1zL+?c+p|YAD7or1 zi|;A{dm-y1MQqMZ35EElLz3MoD?5z;m6U+ji?lXd8+I{vU1T^joUxAdg}2T`?f@2W z%hm61P_X!UgxSk;;FV^sN%I_@*I(NYl3W4UvdGA;BJZNbBJ2x2{b`Cn?qD@|A(C%z zrPG1XymMnsZ2pde*S8;_>9SUJ-N}hPQcoN%vio8Adij z`|@0*!_F>{jlc{a0w?{aKlmW%GfKd9R6%PH0!66_h^~*b15~=vx(LF>8DfUehD*1mJ0@MhR%~tJVVrfZR zo7}wD;b;QuPZ!z*vZZP#CCjIPSe|A zP?yw3xnT9ii+K^69k_j5m(`&r0q<2y`}&a94n`x>sm1`>5hdAvlfAZ2yW90|x2+66 z5n!Y|i29cRL5pCy?T|2p#EWW3i=K1fkU$jNoXQUeW*GV*E@;)kfeL2LLn>WgOTv6< zMve9Rcf^(amUiPoN3Qq*mZGrhH?66=hDnRTaxrOX1^k;x3i+dg^CajCP``$vM6)t3++^?m|Gj2uC%k?U*ps`9Vg zeB`Y<0j&Ep-gg1{RVa;@@}MByrYd?`LL4x8;C<&eK(Z-+Ry9_myNM4tS{Ac1 + + + google-plus + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/grid.png b/packages/Webkul/Shop/publishable/assets/images/grid.png new file mode 100755 index 0000000000000000000000000000000000000000..93a82db5a73391b753d4fed542514718823a9c25 GIT binary patch literal 206713 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°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
    + @if ($cart) +
    + {{ __('shop::app.checkout.cart.title') }} +
    + +
    +
    +
    + +
    + @csrf + @foreach ($cart->items as $key => $item) + @php + $productBaseImage = $item->product->getTypeInstance()->getBaseImage($item); + @endphp + +
    +
    + +
    + +
    + + {!! view_render_event('bagisto.shop.checkout.cart.item.name.before', ['item' => $item]) !!} + + + + {!! view_render_event('bagisto.shop.checkout.cart.item.name.after', ['item' => $item]) !!} + + + {!! view_render_event('bagisto.shop.checkout.cart.item.price.before', ['item' => $item]) !!} + +
    + {{ core()->currency($item->base_price) }} +
    + + {!! view_render_event('bagisto.shop.checkout.cart.item.price.after', ['item' => $item]) !!} + + + {!! view_render_event('bagisto.shop.checkout.cart.item.options.before', ['item' => $item]) !!} + + @if (isset($item->additional['attributes'])) +
    + + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
    + @endforeach + +
    + @endif + + {!! view_render_event('bagisto.shop.checkout.cart.item.options.after', ['item' => $item]) !!} + + + {!! view_render_event('bagisto.shop.checkout.cart.item.quantity.before', ['item' => $item]) !!} + +
    + + + + + {{ __('shop::app.checkout.cart.remove-link') }} + + @auth('customer') + + @if ($item->parent_id != 'null' ||$item->parent_id != null) + {{ __('shop::app.checkout.cart.move-to-wishlist') }} + @else + {{ __('shop::app.checkout.cart.move-to-wishlist') }} + @endif + + @endauth +
    + + {!! view_render_event('bagisto.shop.checkout.cart.item.quantity.after', ['item' => $item]) !!} + + @if (! cart()->isItemHaveQuantity($item)) +
    + * {{ __('shop::app.checkout.cart.quantity-error') }} +
    + @endif +
    + +
    + @endforeach +
    + + {!! view_render_event('bagisto.shop.checkout.cart.controls.after', ['cart' => $cart]) !!} + +
    + {{ __('shop::app.checkout.cart.continue-shopping') }} + +
    + + + @if (! cart()->hasError()) + + {{ __('shop::app.checkout.cart.proceed-to-checkout') }} + + @endif +
    +
    + + {!! view_render_event('bagisto.shop.checkout.cart.controls.after', ['cart' => $cart]) !!} +
    +
    + +
    + {!! view_render_event('bagisto.shop.checkout.cart.summary.after', ['cart' => $cart]) !!} + + @include('shop::checkout.total.summary', ['cart' => $cart]) + + + + {!! view_render_event('bagisto.shop.checkout.cart.summary.after', ['cart' => $cart]) !!} +
    +
    + + @include ('shop::products.view.cross-sells') + + @else + +
    + {{ __('shop::app.checkout.cart.title') }} +
    + +
    +

    + {{ __('shop::app.checkout.cart.empty') }} +

    + +

    + {{ __('shop::app.checkout.cart.continue-shopping') }} +

    +
    + + @endif +
    + +@endsection + +@push('scripts') + @include('shop::checkout.cart.coupon') + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/mini-cart.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/mini-cart.blade.php new file mode 100755 index 000000000..da7cc9f81 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/mini-cart.blade.php @@ -0,0 +1,105 @@ +@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') + +getCart(); ?> + +@if ($cart) + items; ?> + + + + + +@else + + +@endif \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/onepage.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/onepage.blade.php new file mode 100755 index 000000000..cc440aa88 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/onepage.blade.php @@ -0,0 +1,597 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.checkout.onepage.title') }} +@stop + +@section('content-wrapper') + +@endsection + +@push('scripts') + @include('shop::checkout.cart.coupon') + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/customer-checkout.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/customer-checkout.blade.php new file mode 100644 index 000000000..4ad841c6e --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/customer-checkout.blade.php @@ -0,0 +1,23 @@ +
    +
    + + + +
    + +
    + + + +
    +
    \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/customer-info.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/customer-info.blade.php new file mode 100755 index 000000000..c07fb21cd --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/customer-info.blade.php @@ -0,0 +1,455 @@ +
    + +
    +
    + {{ __('shop::app.checkout.onepage.billing-address') }} + + + {{ __('shop::app.checkout.onepage.new-address') }} + +
    +
    +
    +
    + + +
      +
    • + @{{ allAddress.first_name }} @{{ allAddress.last_name }}, +
    • + +
    • + @{{ addresses.address1 }}, +
    • + +
    • + @{{ addresses.city }}, +
    • + +
    • + @{{ addresses.state }}, +
    • + +
    • + @{{ addresses.country }}. +
    • + +
    • + {{ __('shop::app.customer.account.address.index.contact') }} : @{{ addresses.phone }} +
    • +
    +
    +
    +
    +
    + + @{{ errors.first('address-form.billing[address_id]') }} + +
    +
    + + @if ($cart->haveStockableItems()) +
    + + + + {{ __('shop::app.checkout.onepage.use_for_shipping') }} + +
    + @endif +
    + +
    + +
    +

    {{ __('shop::app.checkout.onepage.billing-address') }}

    + + @auth('customer') + @if(count(auth('customer')->user()->addresses)) + + {{ __('shop::app.checkout.onepage.back') }} + + @endif + @endauth +
    + +
    + + + + + + @{{ errors.first('address-form.billing[email]') }} + +
    + + {{-- for customer login checkout --}} + @if (! auth()->guard('customer')->check()) + @include('shop::checkout.onepage.customer-checkout') + @endif + +
    + + + + + + @{{ errors.first('address-form.billing[first_name]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.billing[last_name]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.billing[address1][]') }} + +
    + + @if (core()->getConfigData('customer.settings.address.street_lines') && core()->getConfigData('customer.settings.address.street_lines') > 1) +
    + @for ($i = 1; $i < core()->getConfigData('customer.settings.address.street_lines'); $i++) + + @endfor +
    + @endif + +
    + + + + + + @{{ errors.first('address-form.billing[city]') }} + +
    + +
    + + + + + + + + @{{ errors.first('address-form.billing[state]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.billing[postcode]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.billing[country]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.billing[phone]') }} + +
    + + @if ($cart->haveStockableItems()) +
    + + + + {{ __('shop::app.checkout.onepage.use_for_shipping') }} + +
    + @endif + + @auth('customer') +
    + + + + {{ __('shop::app.checkout.onepage.save_as_address') }} + +
    + @endauth + +
    + + @if ($cart->haveStockableItems()) +
    +
    + {{ __('shop::app.checkout.onepage.shipping-address') }} + + + {{ __('shop::app.checkout.onepage.new-address') }} + +
    + +
    +
    +
    + + +
      +
    • + @{{ allAddress.first_name }} @{{ allAddress.last_name }}, +
    • + +
    • + @{{ addresses.address1 }}, +
    • + +
    • + @{{ addresses.city }}, +
    • + +
    • + @{{ addresses.state }}, +
    • + +
    • + @{{ addresses.country }}. +
    • + +
    • + {{ __('shop::app.customer.account.address.index.contact') }} : @{{ addresses.phone }} +
    • +
    +
    +
    + +
    + + @{{ errors.first('address-form.shipping[address_id]') }} + +
    + +
    +
    + +
    + +
    +

    {{ __('shop::app.checkout.onepage.shipping-address') }}

    + @auth('customer') + @if(count(auth('customer')->user()->addresses)) + + {{ __('shop::app.checkout.onepage.back') }} + + @endif + @endauth +
    + +
    + + + + + + @{{ errors.first('address-form.shipping[first_name]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.shipping[last_name]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.shipping[email]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.shipping[address1][]') }} + +
    + + @if (core()->getConfigData('customer.settings.address.street_lines') && core()->getConfigData('customer.settings.address.street_lines') > 1) +
    + @for ($i = 1; $i < core()->getConfigData('customer.settings.address.street_lines'); $i++) + + @endfor +
    + @endif + +
    + + + + + + @{{ errors.first('address-form.shipping[city]') }} + +
    + +
    + + + + + + + + + @{{ errors.first('address-form.shipping[state]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.shipping[postcode]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.shipping[country]') }} + +
    + +
    + + + + + + @{{ errors.first('address-form.shipping[phone]') }} + +
    + + @auth('customer') +
    + + + + {{ __('shop::app.checkout.onepage.save_as_address') }} + +
    + @endauth + +
    + @endif + +
    \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/payment.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/payment.blade.php new file mode 100755 index 000000000..ac34652ba --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/payment.blade.php @@ -0,0 +1,44 @@ +
    +
    +
    + {{ __('shop::app.checkout.onepage.payment-methods') }} +
    + +
    + +
    + + @foreach ($paymentMethods as $payment) + + {!! view_render_event('bagisto.shop.checkout.payment-method.before', ['payment' => $payment]) !!} + +
    +
    + +
    + +
    + {{ __($payment['description']) }} +
    +
    + + {!! view_render_event('bagisto.shop.checkout.payment-method.after', ['payment' => $payment]) !!} + + @endforeach + + + @{{ errors.first('payment-form.payment[method]') }} + + +
    +
    +
    +
    \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/review.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/review.blade.php new file mode 100755 index 000000000..3bfab1c95 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/review.blade.php @@ -0,0 +1,164 @@ +
    +
    + {{ __('shop::app.checkout.onepage.summary') }} +
    + +
    + @if ($billingAddress = $cart->billing_address) +
    +
    + {{ __('shop::app.checkout.onepage.billing-address') }} +
    + +
    +
      +
    • + {{ $billingAddress->name }} +
    • +
    • + {{ $billingAddress->address1 }},
      {{ $billingAddress->state }} +
    • +
    • + {{ core()->country_name($billingAddress->country) }} {{ $billingAddress->postcode }} +
    • + + + +
    • + {{ __('shop::app.checkout.onepage.contact') }} : {{ $billingAddress->phone }} +
    • +
    +
    +
    + @endif + + @if ($cart->haveStockableItems() && $shippingAddress = $cart->shipping_address) +
    +
    + {{ __('shop::app.checkout.onepage.shipping-address') }} +
    + +
    +
      +
    • + {{ $shippingAddress->name }} +
    • +
    • + {{ $shippingAddress->address1 }},
      {{ $shippingAddress->state }} +
    • +
    • + {{ core()->country_name($shippingAddress->country) }} {{ $shippingAddress->postcode }} +
    • + + + +
    • + {{ __('shop::app.checkout.onepage.contact') }} : {{ $shippingAddress->phone }} +
    • +
    +
    +
    + @endif + +
    + + @inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') + +
    + @foreach ($cart->items as $item) + @php + $productBaseImage = $item->product->getTypeInstance()->getBaseImage($item); + @endphp + +
    +
    + +
    + +
    + + {!! view_render_event('bagisto.shop.checkout.name.before', ['item' => $item]) !!} + +
    + {{ $item->product->name }} +
    + + {!! view_render_event('bagisto.shop.checkout.name.after', ['item' => $item]) !!} + {!! view_render_event('bagisto.shop.checkout.price.before', ['item' => $item]) !!} + +
    + + {{ __('shop::app.checkout.onepage.price') }} + + + {{ core()->currency($item->base_price) }} + +
    + + {!! view_render_event('bagisto.shop.checkout.price.after', ['item' => $item]) !!} + {!! view_render_event('bagisto.shop.checkout.quantity.before', ['item' => $item]) !!} + +
    + + {{ __('shop::app.checkout.onepage.quantity') }} + + + {{ $item->quantity }} + +
    + + {!! view_render_event('bagisto.shop.checkout.quantity.after', ['item' => $item]) !!} + + {!! view_render_event('bagisto.shop.checkout.options.before', ['item' => $item]) !!} + + @if (isset($item->additional['attributes'])) +
    + + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
    + @endforeach + +
    + @endif + + {!! view_render_event('bagisto.shop.checkout.options.after', ['item' => $item]) !!} +
    +
    + @endforeach +
    + +
    +
    + @if ($cart->haveStockableItems()) +
    +
    + +
    + +
    + {{ core()->currency($cart->selected_shipping_rate->base_price) }} + +
    + {{ $cart->selected_shipping_rate->method_title }} +
    +
    +
    + @endif + +
    +
    + +
    + +
    + {{ core()->getConfigData('sales.paymentmethods.' . $cart->payment->method . '.title') }} +
    +
    + +
    + +
    + +
    +
    +
    \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/shipping.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/shipping.blade.php new file mode 100755 index 000000000..e1a6dbab8 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/shipping.blade.php @@ -0,0 +1,48 @@ +
    +
    +
    + {{ __('shop::app.checkout.onepage.shipping-method') }} +
    + +
    + +
    + + @foreach ($shippingRateGroups as $rateGroup) + {!! view_render_event('bagisto.shop.checkout.shipping-method.before', ['rateGroup' => $rateGroup]) !!} + + + {{ $rateGroup['carrier_title'] }} + + + @foreach ($rateGroup['rates'] as $rate) +
    +
    + + {{-- --}} + {{ core()->currency($rate->base_price) }} +
    + +
    +
    + {{ $rate->method_title }} - {{ __($rate->method_description) }} +
    +
    +
    + + @endforeach + + {!! view_render_event('bagisto.shop.checkout.shipping-method.after', ['rateGroup' => $rateGroup]) !!} + + @endforeach + + + @{{ errors.first('shipping-form.shipping_method') }} + +
    +
    +
    +
    \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/success.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/success.blade.php new file mode 100755 index 000000000..c403360ad --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/success.blade.php @@ -0,0 +1,27 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.checkout.success.title') }} +@stop + +@section('content-wrapper') + +
    +

    {{ __('shop::app.checkout.success.thanks') }}

    + +

    {{ __('shop::app.checkout.success.order-id-info', ['order_id' => $order->increment_id]) }}

    + +

    {{ __('shop::app.checkout.success.info') }}

    + + {{ view_render_event('bagisto.shop.checkout.continue-shopping.before', ['order' => $order]) }} + + + + {{ view_render_event('bagisto.shop.checkout.continue-shopping.after', ['order' => $order]) }} + +
    +@endsection diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/total/summary.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/total/summary.blade.php new file mode 100755 index 000000000..70d5d87d6 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/total/summary.blade.php @@ -0,0 +1,43 @@ +
    +

    {{ __('shop::app.checkout.total.order-summary') }}

    + +
    + + +
    + + @if ($cart->selected_shipping_rate) +
    + + +
    + @endif + + @if ($cart->base_tax_total) +
    + + +
    + @endif + +
    base_discount_amount && $cart->base_discount_amount > 0) style="display: block;" @else style="display: none;" @endif> + + +
    + + +
    + + +
    +
    \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/cms/page.blade.php b/packages/Webkul/Shop/src/Resources/views/cms/page.blade.php new file mode 100644 index 000000000..fe29692bd --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/cms/page.blade.php @@ -0,0 +1,17 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ $page->page_title }} +@endsection + +@section('seo') + + + + + +@endsection + +@section('content-wrapper') + {!! DbView::make($page)->field('html_content')->render() !!} +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/address/country-state.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/address/country-state.blade.php new file mode 100755 index 000000000..c398928f6 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/address/country-state.blade.php @@ -0,0 +1,74 @@ + + +@push('scripts') + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/address/create.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/address/create.blade.php new file mode 100755 index 000000000..99b8948ae --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/address/create.blade.php @@ -0,0 +1,81 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.address.create.page-title') }} +@endsection + +@section('content-wrapper') + + + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/address/edit.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/address/edit.blade.php new file mode 100755 index 000000000..be72566f2 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/address/edit.blade.php @@ -0,0 +1,83 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.address.edit.page-title') }} +@endsection + +@section('content-wrapper') + + + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/address/index.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/address/index.blade.php new file mode 100755 index 000000000..3a397ea24 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/address/index.blade.php @@ -0,0 +1,100 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.address.index.page-title') }} +@endsection + +@section('content-wrapper') + + +@endsection + +@push('scripts') + +@endpush diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/downloadable_products/index.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/downloadable_products/index.blade.php new file mode 100644 index 000000000..07a531267 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/downloadable_products/index.blade.php @@ -0,0 +1,39 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.downloadable_products.title') }} +@endsection + +@section('content-wrapper') + + + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/index.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/index.blade.php new file mode 100755 index 000000000..4097e93df --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/index.blade.php @@ -0,0 +1,9 @@ +@extends('shop::layouts.master') + +@section('content-wrapper') + + +@endsection diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/orders/index.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/orders/index.blade.php new file mode 100755 index 000000000..0baabcd78 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/orders/index.blade.php @@ -0,0 +1,39 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.order.index.page-title') }} +@endsection + +@section('content-wrapper') + + + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/orders/pdf.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/orders/pdf.blade.php new file mode 100755 index 000000000..3ce020082 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/orders/pdf.blade.php @@ -0,0 +1,260 @@ + + + + + + + + + +
    + +
    + +
    + {{ __('shop::app.customer.account.order.view.invoice-id') }} - + #{{ $invoice->id }} +
    + +
    + {{ __('shop::app.customer.account.order.view.order-id') }} - + #{{ $invoice->order->increment_id }} +
    + +
    + {{ __('shop::app.customer.account.order.view.order-date') }} - + {{ core()->formatDate($invoice->order->created_at, 'M d, Y') }} +
    + +
    + + + + + @if ($invoice->order->shipping_address) + + @endif + + + + + + + + @if ($invoice->order->shipping_address) + + @endif + + +
    {{ __('shop::app.customer.account.order.view.bill-to') }}{{ __('shop::app.customer.account.order.view.ship-to') }}
    +

    {{ $invoice->order->billing_address->name }}

    +

    {{ $invoice->order->billing_address->address1 }}

    +

    {{ $invoice->order->billing_address->city }}

    +

    {{ $invoice->order->billing_address->state }}

    +

    + {{ core()->country_name($invoice->order->billing_address->country) }} + {{ $invoice->order->billing_address->postcode }} +

    + {{ __('shop::app.customer.account.order.view.contact') }} : {{ $invoice->order->billing_address->phone }} +
    +

    {{ $invoice->order->shipping_address->name }}

    +

    {{ $invoice->order->shipping_address->address1 }}

    +

    {{ $invoice->order->shipping_address->city }}

    +

    {{ $invoice->order->shipping_address->state }}

    +

    {{ core()->country_name($invoice->order->shipping_address->country) }} {{ $invoice->order->shipping_address->postcode }}

    + {{ __('shop::app.customer.account.order.view.contact') }} : {{ $invoice->order->shipping_address->phone }} +
    +
    + +
    + + + + + + @if ($invoice->order->shipping_address) + + @endif + + + + + + + + @if ($invoice->order->shipping_address) + + @endif + + +
    {{ __('shop::app.customer.account.order.view.payment-method') }}{{ __('shop::app.customer.account.order.view.shipping-method') }}
    + {{ core()->getConfigData('sales.paymentmethods.' . $invoice->order->payment->method . '.title') }} + + {{ $invoice->order->shipping_title }} +
    +
    + +
    + + + + + + + + + + + + + + + + @foreach ($invoice->items as $item) + + + + + + + + + + + + + + + + @endforeach + + +
    {{ __('shop::app.customer.account.order.view.SKU') }}{{ __('shop::app.customer.account.order.view.product-name') }}{{ __('shop::app.customer.account.order.view.price') }}{{ __('shop::app.customer.account.order.view.qty') }}{{ __('shop::app.customer.account.order.view.subtotal') }}{{ __('shop::app.customer.account.order.view.tax-amount') }}{{ __('shop::app.customer.account.order.view.grand-total') }}
    {{ $item->child ? $item->child->sku : $item->sku }} + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
    + + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
    + @endforeach + +
    + @endif +
    {{ core()->formatPrice($item->price, $invoice->order->order_currency_code) }}{{ $item->qty }}{{ core()->formatPrice($item->total, $invoice->order->order_currency_code) }}{{ core()->formatPrice($item->tax_amount, $invoice->order->order_currency_code) }}{{ core()->formatPrice(($item->total + $item->tax_amount), $invoice->order->order_currency_code) }}
    +
    + + + + + + + + + + + + + + + + @if ($invoice->base_discount_amount > 0) + + + + + + @endif + + + + + + + + + + + + +
    {{ __('shop::app.customer.account.order.view.subtotal') }}-{{ core()->formatPrice($invoice->sub_total, $invoice->order->order_currency_code) }}
    {{ __('shop::app.customer.account.order.view.shipping-handling') }}-{{ core()->formatPrice($invoice->shipping_amount, $invoice->order->order_currency_code) }}
    {{ __('shop::app.customer.account.order.view.discount') }}-{{ core()->formatPrice($invoice->discount_amount, $invoice->order_currency_code) }}
    {{ __('shop::app.customer.account.order.view.tax') }}-{{ core()->formatPrice($invoice->tax_amount, $invoice->order->order_currency_code) }}
    {{ __('shop::app.customer.account.order.view.grand-total') }}-{{ core()->formatPrice($invoice->grand_total, $invoice->order->order_currency_code) }}
    + +
    + +
    + + diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/orders/view.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/orders/view.blade.php new file mode 100755 index 000000000..fbaac608e --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/orders/view.blade.php @@ -0,0 +1,519 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.order.view.page-tile', ['order_id' => $order->increment_id]) }} +@endsection + +@section('content-wrapper') + + + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/partials/sidemenu.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/partials/sidemenu.blade.php new file mode 100755 index 000000000..e0c9611dc --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/partials/sidemenu.blade.php @@ -0,0 +1,44 @@ + + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/profile/edit.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/profile/edit.blade.php new file mode 100755 index 000000000..2f2b28a20 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/profile/edit.blade.php @@ -0,0 +1,103 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.profile.edit-profile.page-title') }} +@endsection + +@section('content-wrapper') + +@endsection diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/profile/index.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/profile/index.blade.php new file mode 100755 index 000000000..02abd9341 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/profile/index.blade.php @@ -0,0 +1,106 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.profile.index.title') }} +@endsection + +@section('content-wrapper') + + +@endsection diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php new file mode 100755 index 000000000..06a9d7fce --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php @@ -0,0 +1,82 @@ +@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') + +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.review.index.page-title') }} +@endsection + +@section('content-wrapper') + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/reviews.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/reviews.blade.php new file mode 100755 index 000000000..50340e35b --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/reviews.blade.php @@ -0,0 +1,52 @@ +@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') + +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.review.view.page-title') }} +@endsection + +@section('content-wrapper') + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/wishlist/wishlist.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/wishlist/wishlist.blade.php new file mode 100755 index 000000000..a738302f8 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/wishlist/wishlist.blade.php @@ -0,0 +1,94 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.account.wishlist.page-title') }} +@endsection + +@section('content-wrapper') + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/session/index.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/session/index.blade.php new file mode 100755 index 000000000..38bdbc9b1 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/session/index.blade.php @@ -0,0 +1,57 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.login-form.page-title') }} +@endsection + +@section('content-wrapper') + +
    + + + {!! view_render_event('bagisto.shop.customers.login.before') !!} + +
    + {{ csrf_field() }} + +
    + + {!! view_render_event('bagisto.shop.customers.login.after') !!} +
    + +@stop + diff --git a/packages/Webkul/Shop/src/Resources/views/customers/signup/forgot-password.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/signup/forgot-password.blade.php new file mode 100755 index 000000000..f21a32a6e --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/signup/forgot-password.blade.php @@ -0,0 +1,61 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.forgot-password.page_title') }} +@stop + +@push('css') + +@endpush + +@section('content-wrapper') + +
    + + {!! view_render_event('bagisto.shop.customers.forget_password.before') !!} + +
    + + {{ csrf_field() }} + + +
    + + {!! view_render_event('bagisto.shop.customers.forget_password.before') !!} + +
    +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/customers/signup/index.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/signup/index.blade.php new file mode 100755 index 000000000..60e774254 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/signup/index.blade.php @@ -0,0 +1,85 @@ +@extends('shop::layouts.master') +@section('page_title') + {{ __('shop::app.customer.signup-form.page-title') }} +@endsection +@section('content-wrapper') + +
    + + + + {!! view_render_event('bagisto.shop.customers.signup.before') !!} + +
    + + {{ csrf_field() }} + + +
    + + {!! view_render_event('bagisto.shop.customers.signup.after') !!} +
    +@endsection diff --git a/packages/Webkul/Shop/src/Resources/views/customers/signup/reset-password.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/signup/reset-password.blade.php new file mode 100755 index 000000000..a73ee5c4c --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/customers/signup/reset-password.blade.php @@ -0,0 +1,52 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.customer.reset-password.title') }} +@endsection + +@section('content-wrapper') + +
    + + {!! view_render_event('bagisto.shop.customers.reset_password.before') !!} + +
    + + {{ csrf_field() }} + + +
    + + {!! view_render_event('bagisto.shop.customers.reset_password.before') !!} +
    +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/admin/forget-password.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/admin/forget-password.blade.php new file mode 100755 index 000000000..4e312d436 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/admin/forget-password.blade.php @@ -0,0 +1,38 @@ +@component('shop::emails.layouts.master') + + +
    +
    +

    + {{ __('shop::app.mail.forget-password.dear', ['name' => $user_name]) }}, +

    + +

    + {{ __('shop::app.mail.forget-password.info') }} +

    + +

    + + {{ __('shop::app.mail.forget-password.reset-password') }} + +

    + +

    + {{ __('shop::app.mail.forget-password.final-summary') }} +

    + +

    + {{ __('shop::app.mail.forget-password.thanks') }} +

    + +
    +
    +@endcomponent \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/customer/forget-password.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/customer/forget-password.blade.php new file mode 100755 index 000000000..685346631 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/customer/forget-password.blade.php @@ -0,0 +1,34 @@ +@component('shop::emails.layouts.master') + + +
    +
    +

    + {{ __('shop::app.mail.forget-password.dear', ['name' => $user_name]) }}, +

    + +

    + {{ __('shop::app.mail.forget-password.info') }} +

    + +

    + + {{ __('shop::app.mail.forget-password.reset-password') }} + +

    + +

    + {{ __('shop::app.mail.forget-password.final-summary') }} +

    + +

    + {{ __('shop::app.mail.forget-password.thanks') }} +

    + +
    +
    +@endcomponent \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/customer/new-customer.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/customer/new-customer.blade.php new file mode 100644 index 000000000..8fcbfd931 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/customer/new-customer.blade.php @@ -0,0 +1,30 @@ +@component('shop::emails.layouts.master') + +
    + + +
    + {{ __('shop::app.mail.customer.new.dear', ['customer_name' => $customer['name']]) }}, + +
    + +
    + {!! __('shop::app.mail.customer.new.summary') !!} + +
    + +
    + {!! __('shop::app.mail.customer.new.username-email') !!} - {{ $customer['email'] }}
    + {!! __('shop::app.mail.customer.new.password') !!} - {{ $password}} +
    + +

    + {{ __('shop::app.mail.customer.new.thanks') }} +

    +
    + +@endcomponent \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/customer/registration.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/customer/registration.blade.php new file mode 100644 index 000000000..384fd29e7 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/customer/registration.blade.php @@ -0,0 +1,32 @@ +@component('shop::emails.layouts.master') + +
    + + + +
    +
    +

    + {{ __('shop::app.mail.customer.registration.dear', ['customer_name' => $data['first_name']. ' ' .$data['last_name']]) }}, +

    + +

    + {!! __('shop::app.mail.customer.registration.greeting') !!} +

    +
    + +
    + {{ __('shop::app.mail.customer.registration.summary') }} +
    + +

    + {{ __('shop::app.mail.customer.registration.thanks') }} +

    +
    +
    + +@endcomponent \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/customer/subscription-email.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/customer/subscription-email.blade.php new file mode 100755 index 000000000..b7be2a8d2 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/customer/subscription-email.blade.php @@ -0,0 +1,26 @@ +@component('shop::emails.layouts.master') + +
    + + +
    + {!! __('shop::app.mail.customer.subscription.greeting') !!} +
    + +
    + {!! __('shop::app.mail.customer.subscription.summary') !!} +
    + + +
    + +@endcomponent \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/customer/verification-email.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/customer/verification-email.blade.php new file mode 100755 index 000000000..fda82f400 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/customer/verification-email.blade.php @@ -0,0 +1,26 @@ +@component('shop::emails.layouts.master') + +
    + + +
    + {!! __('shop::app.mail.customer.verification.heading') !!} +
    + +
    + {!! __('shop::app.mail.customer.verification.summary') !!} +
    + + +
    + +@endcomponent \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/layouts/logo.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/layouts/logo.blade.php new file mode 100644 index 000000000..2397fc033 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/layouts/logo.blade.php @@ -0,0 +1,5 @@ +@if ($logo = core()->getCurrentChannel()->logo_url) + {{ config('app.name') }} +@else + +@endif \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/layouts/master.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/layouts/master.blade.php new file mode 100755 index 000000000..9451f8cf1 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/layouts/master.blade.php @@ -0,0 +1,22 @@ + + + + + + + + + +
    +
    + {{ $header ?? '' }} +
    + +
    + {{ $slot }} + + {{ $subcopy ?? '' }} +
    +
    + + diff --git a/packages/Webkul/Shop/src/Resources/views/emails/sales/new-admin-order.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-admin-order.blade.php new file mode 100644 index 000000000..9e913b50b --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-admin-order.blade.php @@ -0,0 +1,202 @@ +@component('shop::emails.layouts.master') + + +
    +
    + + {{ __('shop::app.mail.order.heading') }} +
    + +

    + {{ __('shop::app.mail.order.dear-admin', ['admin_name' => config('mail.from.name')]) }}, +

    + +

    + {!! __('shop::app.mail.order.greeting-admin', [ + 'order_id' => '#' . $order->increment_id . '', + 'created_at' => $order->created_at + ]) + !!} +

    +
    + +
    + {{ __('shop::app.mail.order.summary') }} +
    + +
    +
    +
    + {{ __('shop::app.mail.order.shipping-address') }} +
    + +
    + {{ $order->shipping_address->name }} +
    + +
    + {{ $order->shipping_address->address1 }}, {{ $order->shipping_address->state }} +
    + +
    + {{ core()->country_name($order->shipping_address->country) }} {{ $order->shipping_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->shipping_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.shipping') }} +
    + +
    + {{ $order->shipping_title }} +
    +
    + +
    +
    + {{ __('shop::app.mail.order.billing-address') }} +
    + +
    + {{ $order->billing_address->name }} +
    + +
    + {{ $order->billing_address->address1 }}, {{ $order->billing_address->state }} +
    + +
    + {{ core()->country_name($order->billing_address->country) }} {{ $order->billing_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->billing_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.payment') }} +
    + +
    + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} +
    +
    +
    + +
    +
    + + + + + + + + + + + + @foreach ($order->items as $item) + + + + + + + + + + @endforeach + +
    {{ __('shop::app.customer.account.order.view.SKU') }}{{ __('shop::app.customer.account.order.view.product-name') }}{{ __('shop::app.customer.account.order.view.price') }}{{ __('shop::app.customer.account.order.view.qty') }}
    + {{ $item->getTypeInstance()->getOrderedItem($item)->sku }} + + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
    + + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
    + @endforeach + +
    + @endif +
    + {{ core()->formatPrice($item->price, $order->order_currency_code) }} + + {{ $item->qty_ordered }} +
    +
    +
    + +
    +
    + {{ __('shop::app.mail.order.subtotal') }} + + {{ core()->formatBasePrice($order->base_sub_total) }} + +
    + +
    + {{ __('shop::app.mail.order.shipping-handling') }} + + {{ core()->formatBasePrice($order->base_shipping_amount) }} + +
    + +
    + {{ __('shop::app.mail.order.tax') }} + + {{ core()->formatBasePrice($order->base_tax_amount) }} + +
    + + @if ($order->discount_amount > 0) +
    + {{ __('shop::app.mail.order.discount') }} + + {{ core()->formatBasePrice($order->base_discount_amount) }} + +
    + @endif + +
    + {{ __('shop::app.mail.order.grand-total') }} + + {{ core()->formatBasePrice($order->base_grand_total) }} + +
    +
    + +
    +

    + {!! + __('shop::app.mail.order.help', [ + 'support_email' => '' . config('mail.admin.address') . '' + ]) + !!} +

    + +

    + {{ __('shop::app.mail.order.thanks') }} +

    +
    +
    +@endcomponent diff --git a/packages/Webkul/Shop/src/Resources/views/emails/sales/new-inventorysource-shipment.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-inventorysource-shipment.blade.php new file mode 100644 index 000000000..889124a65 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-inventorysource-shipment.blade.php @@ -0,0 +1,164 @@ +@component('shop::emails.layouts.master') + + + order; ?> + inventory_source; ?> + +
    +
    + + {{ __('shop::app.mail.shipment.inventory-heading', ['order_id' => $order->increment_id, 'shipment_id' => $shipment->id]) }} +
    + +

    + {{ __('shop::app.mail.order.dear', ['customer_name' => $inventory->name]) }}, +

    + +

    + {!! __('shop::app.mail.shipment.greeting', [ + 'order_id' => '#' . $order->increment_id . '', + 'created_at' => $order->created_at + ]) + !!} +

    +
    + + + +
    +
    +
    + {{ __('shop::app.mail.order.shipping-address') }} +
    + +
    + {{ $order->shipping_address->name }} +
    + +
    + {{ $order->shipping_address->address1 }}, {{ $order->shipping_address->state }} +
    + +
    + {{ core()->country_name($order->shipping_address->country) }} {{ $order->shipping_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->shipping_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.shipping') }} +
    + +
    +
    + {{ $order->shipping_title }} +
    + +
    + {{ __('shop::app.mail.shipment.carrier') }} : {{ $shipment->carrier_title }} +
    + +
    + {{ __('shop::app.mail.shipment.tracking-number') }} : {{ $shipment->track_number }} +
    +
    +
    + +
    +
    + {{ __('shop::app.mail.order.billing-address') }} +
    + +
    + {{ $order->billing_address->name }} +
    + +
    + {{ $order->billing_address->address1 }}, {{ $order->billing_address->state }} +
    + +
    + {{ core()->country_name($order->billing_address->country) }} {{ $order->billing_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->billing_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.payment') }} +
    + +
    + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} +
    +
    +
    + +
    +
    + + + + + + + + + + + + @foreach ($shipment->items as $item) + + + + + + + + + + @endforeach + +
    {{ __('shop::app.customer.account.order.view.SKU') }}{{ __('shop::app.customer.account.order.view.product-name') }}{{ __('shop::app.customer.account.order.view.price') }}{{ __('shop::app.customer.account.order.view.qty') }}
    {{ $item->getTypeInstance()->getOrderedItem($item)->sku }} + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
    + + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
    + @endforeach + +
    + @endif +
    {{ core()->formatPrice($item->price, $order->order_currency_code) }}{{ $item->qty }}
    +
    +
    + + {{--
    +

    + {!! + __('shop::app.mail.order.help', [ + 'support_email' => '' . config('mail.from.address'). '' + ]) + !!} +

    +
    --}} +
    +@endcomponent \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/emails/sales/new-invoice.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-invoice.blade.php new file mode 100755 index 000000000..55b0d5264 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-invoice.blade.php @@ -0,0 +1,197 @@ +@component('shop::emails.layouts.master') + + + order; ?> + +
    +
    + + {{ __('shop::app.mail.invoice.heading', ['order_id' => $order->increment_id, 'invoice_id' => $invoice->id]) }} +
    + +

    + {{ __('shop::app.mail.order.dear', ['customer_name' => $order->customer_full_name]) }}, +

    + +

    + {!! __('shop::app.mail.order.greeting', [ + 'order_id' => '#' . $order->increment_id . '', + 'created_at' => $order->created_at + ]) + !!} +

    +
    + +
    + {{ __('shop::app.mail.invoice.summary') }} +
    + +
    + @if ($order->shipping_address) +
    +
    + {{ __('shop::app.mail.order.shipping-address') }} +
    + +
    + {{ $order->shipping_address->name }} +
    + +
    + {{ $order->shipping_address->address1 }}, {{ $order->shipping_address->state }} +
    + +
    + {{ core()->country_name($order->shipping_address->country) }} {{ $order->shipping_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->shipping_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.shipping') }} +
    + +
    + {{ $order->shipping_title }} +
    +
    + @endif + +
    +
    + {{ __('shop::app.mail.order.billing-address') }} +
    + +
    + {{ $order->billing_address->name }} +
    + +
    + {{ $order->billing_address->address1 }}, {{ $order->billing_address->state }} +
    + +
    + {{ core()->country_name($order->billing_address->country) }} {{ $order->billing_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->billing_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.payment') }} +
    + +
    + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} +
    +
    +
    + +
    +
    + + + + + + + + + + + @foreach ($invoice->items as $item) + + + + + + + + + @endforeach + +
    {{ __('shop::app.customer.account.order.view.product-name') }}{{ __('shop::app.customer.account.order.view.price') }}{{ __('shop::app.customer.account.order.view.qty') }}
    + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
    + + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
    + @endforeach + +
    + @endif +
    {{ core()->formatPrice($item->price, $order->order_currency_code) }} + {{ $item->qty }}
    +
    +
    + +
    +
    + {{ __('shop::app.mail.order.subtotal') }} + + {{ core()->formatPrice($invoice->sub_total, $invoice->order_currency_code) }} + +
    + + @if ($order->shipping_address) +
    + {{ __('shop::app.mail.order.shipping-handling') }} + + {{ core()->formatPrice($invoice->shipping_amount, $invoice->order_currency_code) }} + +
    + @endif + +
    + {{ __('shop::app.mail.order.tax') }} + + {{ core()->formatPrice($invoice->tax_amount, $invoice->order_currency_code) }} + +
    + + @if ($invoice->discount_amount > 0) +
    + {{ __('shop::app.mail.order.discount') }} + + {{ core()->formatPrice($invoice->discount_amount, $invoice->order_currency_code) }} + +
    + @endif + +
    + {{ __('shop::app.mail.order.grand-total') }} + + {{ core()->formatPrice($invoice->grand_total, $invoice->order_currency_code) }} + +
    +
    + +
    +

    + {!! + __('shop::app.mail.order.help', [ + 'support_email' => '' . config('mail.from.address'). '' + ]) + !!} +

    + +

    + {{ __('shop::app.mail.order.thanks') }} +

    +
    +
    +@endcomponent diff --git a/packages/Webkul/Shop/src/Resources/views/emails/sales/new-order.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-order.blade.php new file mode 100755 index 000000000..2d848b5ca --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-order.blade.php @@ -0,0 +1,201 @@ +@component('shop::emails.layouts.master') + + +
    +
    + + {{ __('shop::app.mail.order.heading') }} +
    + +

    + {{ __('shop::app.mail.order.dear', ['customer_name' => $order->customer_full_name]) }}, +

    + +

    + {!! __('shop::app.mail.order.greeting', [ + 'order_id' => '#' . $order->increment_id . '', + 'created_at' => $order->created_at + ]) + !!} +

    +
    + +
    + {{ __('shop::app.mail.order.summary') }} +
    + +
    + @if ($order->shipping_address) +
    +
    + {{ __('shop::app.mail.order.shipping-address') }} +
    + +
    + {{ $order->shipping_address->name }} +
    + +
    + {{ $order->shipping_address->address1 }}, {{ $order->shipping_address->state }} +
    + +
    + {{ core()->country_name($order->shipping_address->country) }} {{ $order->shipping_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->shipping_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.shipping') }} +
    + +
    + {{ $order->shipping_title }} +
    +
    + @endif + +
    +
    + {{ __('shop::app.mail.order.billing-address') }} +
    + +
    + {{ $order->billing_address->name }} +
    + +
    + {{ $order->billing_address->address1 }}, {{ $order->billing_address->state }} +
    + +
    + {{ core()->country_name($order->billing_address->country) }} {{ $order->billing_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->billing_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.payment') }} +
    + +
    + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} +
    +
    +
    + +
    +
    + + + + + + + + + + + + @foreach ($order->items as $item) + + + + + + + + + + @endforeach + +
    {{ __('shop::app.customer.account.order.view.SKU') }}{{ __('shop::app.customer.account.order.view.product-name') }}{{ __('shop::app.customer.account.order.view.price') }}{{ __('shop::app.customer.account.order.view.qty') }}
    {{ $item->getTypeInstance()->getOrderedItem($item)->sku }} + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
    + + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
    + @endforeach + +
    + @endif +
    {{ core()->formatPrice($item->price, $order->order_currency_code) }} + {{ $item->qty_ordered }}
    +
    +
    + +
    +
    + {{ __('shop::app.mail.order.subtotal') }} + + {{ core()->formatPrice($order->sub_total, $order->order_currency_code) }} + +
    + + @if ($order->shipping_address) +
    + {{ __('shop::app.mail.order.shipping-handling') }} + + {{ core()->formatPrice($order->shipping_amount, $order->order_currency_code) }} + +
    + @endif + +
    + {{ __('shop::app.mail.order.tax') }} + + {{ core()->formatPrice($order->tax_amount, $order->order_currency_code) }} + +
    + + @if ($order->discount_amount > 0) +
    + {{ __('shop::app.mail.order.discount') }} + + {{ core()->formatPrice($order->discount_amount, $order->order_currency_code) }} + +
    + @endif + +
    + {{ __('shop::app.mail.order.grand-total') }} + + {{ core()->formatPrice($order->grand_total, $order->order_currency_code) }} + +
    +
    + +
    +

    + {{ __('shop::app.mail.order.final-summary') }} +

    + +

    + {!! + __('shop::app.mail.order.help', [ + 'support_email' => '' . config('mail.from.address'). '' + ]) + !!} +

    + +

    + {{ __('shop::app.mail.order.thanks') }} +

    +
    +
    +@endcomponent diff --git a/packages/Webkul/Shop/src/Resources/views/emails/sales/new-refund.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-refund.blade.php new file mode 100644 index 000000000..d80d9937d --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-refund.blade.php @@ -0,0 +1,220 @@ +@component('shop::emails.layouts.master') + + + order; ?> + +
    +
    + + {{ __('shop::app.mail.refund.heading', ['order_id' => $order->increment_id, 'refund_id' => $refund->id]) }} +
    + +

    + {{ __('shop::app.mail.order.dear', ['customer_name' => $order->customer_full_name]) }}, +

    + +

    + {!! __('shop::app.mail.order.greeting', [ + 'order_id' => '#' . $order->increment_id . '', + 'created_at' => $order->created_at + ]) + !!} +

    +
    + +
    + {{ __('shop::app.mail.refund.summary') }} +
    + +
    + @if ($order->shipping_address) +
    +
    + {{ __('shop::app.mail.order.shipping-address') }} +
    + +
    + {{ $order->shipping_address->name }} +
    + +
    + {{ $order->shipping_address->address1 }}, {{ $order->shipping_address->state }} +
    + +
    + {{ core()->country_name($order->shipping_address->country) }} {{ $order->shipping_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->shipping_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.shipping') }} +
    + +
    + {{ $order->shipping_title }} +
    +
    + @endif + +
    +
    + {{ __('shop::app.mail.order.billing-address') }} +
    + +
    + {{ $order->billing_address->name }} +
    + +
    + {{ $order->billing_address->address1 }}, {{ $order->billing_address->state }} +
    + +
    + {{ core()->country_name($order->billing_address->country) }} {{ $order->billing_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->billing_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.payment') }} +
    + +
    + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} +
    +
    +
    + +
    +
    + + + + + + + + + + + @foreach ($refund->items as $item) + + + + + + + + + @endforeach + +
    {{ __('shop::app.customer.account.order.view.product-name') }}{{ __('shop::app.customer.account.order.view.price') }}{{ __('shop::app.customer.account.order.view.qty') }}
    + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
    + + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
    + @endforeach + +
    + @endif +
    + {{ core()->formatPrice($item->price, $order->order_currency_code) }} + + {{ $item->qty }} +
    +
    +
    + +
    +
    + {{ __('shop::app.mail.order.subtotal') }} + + {{ core()->formatPrice($refund->sub_total, $refund->order_currency_code) }} + +
    + + @if ($order->shipping_address) +
    + {{ __('shop::app.mail.order.shipping-handling') }} + + {{ core()->formatPrice($refund->shipping_amount, $refund->order_currency_code) }} + +
    + @endif + + @if ($refund->tax_amount > 0) +
    + {{ __('shop::app.mail.order.tax') }} + + {{ core()->formatPrice($refund->tax_amount, $refund->order_currency_code) }} + +
    + @endif + + @if ($refund->discount_amount > 0) +
    + {{ __('shop::app.mail.order.discount') }} + + {{ core()->formatPrice($refund->discount_amount, $refund->order_currency_code) }} + +
    + @endif + + @if ($refund->adjustment_refund > 0) +
    + {{ __('shop::app.mail.refund.adjustment-refund') }} + + {{ core()->formatPrice($refund->adjustment_refund, $refund->order_currency_code) }} + +
    + @endif + + @if ($refund->adjustment_fee > 0) +
    + {{ __('shop::app.mail.refund.adjustment-fee') }} + + {{ core()->formatPrice($refund->adjustment_fee, $refund->order_currency_code) }} + +
    + @endif + +
    + {{ __('shop::app.mail.order.grand-total') }} + + {{ core()->formatPrice($refund->grand_total, $refund->order_currency_code) }} + +
    +
    + +
    +

    + {!! + __('shop::app.mail.order.help', [ + 'support_email' => '' . config('mail.from.address'). '' + ]) + !!} +

    + +

    + {{ __('shop::app.mail.order.thanks') }} +

    +
    +
    +@endcomponent diff --git a/packages/Webkul/Shop/src/Resources/views/emails/sales/new-shipment.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-shipment.blade.php new file mode 100755 index 000000000..b8d8f946e --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-shipment.blade.php @@ -0,0 +1,166 @@ +@component('shop::emails.layouts.master') + + + order; ?> + +
    +
    + + {{ __('shop::app.mail.shipment.heading', ['order_id' => $order->increment_id, 'shipment_id' => $shipment->id]) }} +
    + +

    + {{ __('shop::app.mail.order.dear', ['customer_name' => $order->customer_full_name]) }}, +

    + +

    + {!! __('shop::app.mail.order.greeting', [ + 'order_id' => '#' . $order->increment_id . '', + 'created_at' => $order->created_at + ]) + !!} +

    +
    + +
    + {{ __('shop::app.mail.shipment.summary') }} +
    + +
    +
    +
    + {{ __('shop::app.mail.order.shipping-address') }} +
    + +
    + {{ $order->shipping_address->name }} +
    + +
    + {{ $order->shipping_address->address1 }}, {{ $order->shipping_address->state }} +
    + +
    + {{ core()->country_name($order->shipping_address->country) }} {{ $order->shipping_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->shipping_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.shipping') }} +
    + +
    +
    + {{ $order->shipping_title }} +
    + +
    + {{ __('shop::app.mail.shipment.carrier') }} : {{ $shipment->carrier_title }} +
    + +
    + {{ __('shop::app.mail.shipment.tracking-number') }} : {{ $shipment->track_number }} +
    +
    +
    + +
    +
    + {{ __('shop::app.mail.order.billing-address') }} +
    + +
    + {{ $order->billing_address->name }} +
    + +
    + {{ $order->billing_address->address1 }}, {{ $order->billing_address->state }} +
    + +
    + {{ core()->country_name($order->billing_address->country) }} {{ $order->billing_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.contact') }} : {{ $order->billing_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.payment') }} +
    + +
    + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} +
    +
    +
    + +
    +
    + + + + + + + + + + + + @foreach ($shipment->items as $item) + + + + + + + + + + + @endforeach + +
    {{ __('shop::app.customer.account.order.view.SKU') }}{{ __('shop::app.customer.account.order.view.product-name') }}{{ __('shop::app.customer.account.order.view.price') }}{{ __('shop::app.customer.account.order.view.qty') }}
    {{ $item->getTypeInstance()->getOrderedItem($item)->sku }} + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
    + + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
    + @endforeach + +
    + @endif +
    {{ core()->formatPrice($item->price, $order->order_currency_code) }}{{ $item->qty }}
    +
    +
    + +
    +

    + {!! + __('shop::app.mail.order.help', [ + 'support_email' => '' . config('mail.from.address'). '' + ]) + !!} +

    + +

    + {{ __('shop::app.mail.order.thanks') }} +

    +
    +
    +@endcomponent diff --git a/packages/Webkul/Shop/src/Resources/views/emails/sales/order-cancel.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/sales/order-cancel.blade.php new file mode 100644 index 000000000..cd6b9600e --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/emails/sales/order-cancel.blade.php @@ -0,0 +1,202 @@ +@component('shop::emails.layouts.master') + + +
    +
    + + {{ __('shop::app.mail.order.cancel.heading') }} +
    + +

    + {{ __('shop::app.mail.order.cancel.dear', ['customer_name' => $order->customer_full_name]) }}, +

    + +

    + {!! __('shop::app.mail.order.cancel.greeting', [ + 'order_id' => '#' . $order->increment_id . '', + 'created_at' => $order->created_at + ]) + !!} +

    +
    + +
    + {{ __('shop::app.mail.order.cancel.summary') }} +
    + +
    +
    +
    + {{ __('shop::app.mail.order.cancel.shipping-address') }} +
    + +
    + {{ $order->shipping_address->name }} +
    + +
    + {{ $order->shipping_address->address1 }}, {{ $order->shipping_address->state }} +
    + +
    + {{ core()->country_name($order->shipping_address->country) }} {{ $order->shipping_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.cancel.contact') }} : {{ $order->shipping_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.cancel.shipping') }} +
    + +
    + {{ $order->shipping_title }} +
    +
    + +
    +
    + {{ __('shop::app.mail.order.cancel.billing-address') }} +
    + +
    + {{ $order->billing_address->name }} +
    + +
    + {{ $order->billing_address->address1 }}, {{ $order->billing_address->state }} +
    + +
    + {{ core()->country_name($order->billing_address->country) }} {{ $order->billing_address->postcode }} +
    + +
    ---
    + +
    + {{ __('shop::app.mail.order.cancel.contact') }} : {{ $order->billing_address->phone }} +
    + +
    + {{ __('shop::app.mail.order.cancel.payment') }} +
    + +
    + {{ core()->getConfigData('sales.paymentmethods.' . $order->payment->method . '.title') }} +
    +
    +
    + +
    +
    + + + + + + + + + + + + @foreach ($order->items as $item) + + + + + + + + + + @endforeach + +
    {{ __('shop::app.customer.account.order.view.SKU') }}{{ __('shop::app.customer.account.order.view.product-name') }}{{ __('shop::app.customer.account.order.view.price') }}{{ __('shop::app.customer.account.order.view.qty') }}
    + {{ $item->child ? $item->child->sku : $item->sku }} + + {{ $item->name }} + + @if (isset($item->additional['attributes'])) +
    + + @foreach ($item->additional['attributes'] as $attribute) + {{ $attribute['attribute_name'] }} : {{ $attribute['option_label'] }}
    + @endforeach + +
    + @endif +
    + {{ core()->formatPrice($item->price, $order->order_currency_code) }} + + {{ $item->qty_canceled }} +
    +
    +
    + +
    +
    + {{ __('shop::app.mail.order.cancel.subtotal') }} + + {{ core()->formatPrice($order->sub_total, $order->order_currency_code) }} + +
    + +
    + {{ __('shop::app.mail.order.cancel.shipping-handling') }} + + {{ core()->formatPrice($order->shipping_amount, $order->order_currency_code) }} + +
    + +
    + {{ __('shop::app.mail.order.cancel.tax') }} + + {{ core()->formatPrice($order->tax_amount, $order->order_currency_code) }} + +
    + + @if ($order->discount_amount > 0) +
    + {{ __('shop::app.mail.order.cancel.discount') }} + + {{ core()->formatPrice($order->discount_amount, $order->order_currency_code) }} + +
    + @endif + +
    + {{ __('shop::app.mail.order.cancel.grand-total') }} + + {{ core()->formatPrice($order->grand_total, $order->order_currency_code) }} + +
    +
    + +
    +

    + {{ __('shop::app.mail.order.cancel.final-summary') }} +

    + +

    + {!! + __('shop::app.mail.order.cancel.help', [ + 'support_email' => '' . config('mail.from.address'). '' + ]) + !!} +

    + +

    + {{ __('shop::app.mail.order.cancel.thanks') }} +

    +
    +
    +@endcomponent diff --git a/packages/Webkul/Shop/src/Resources/views/error.blade.php b/packages/Webkul/Shop/src/Resources/views/error.blade.php new file mode 100755 index 000000000..d78938fdb --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/error.blade.php @@ -0,0 +1,19 @@ +@extends('shop::layouts.master') +@section('content-wrapper') +
    +
    +
    +
    404
    +
    Page Not Found
    +
    + GO TO HOME + {{-- pass the content dynamically --}} + Show the exception here or error message here. +
    + +
    +
    +
    +
    +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/errors/401.blade.php b/packages/Webkul/Shop/src/Resources/views/errors/401.blade.php new file mode 100755 index 000000000..f12e056c3 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/errors/401.blade.php @@ -0,0 +1,38 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('admin::app.error.401.page-title') }} +@stop + +@section('content-wrapper') + +
    + +
    + +
    + +
    {{ __('admin::app.error.401.name') }}
    + +
    + {{ __('admin::app.error.401.title') }} +
    + +
    + {{ __('admin::app.error.401.message') }} +
    + + + {{ __('admin::app.error.go-to-home') }} + + +
    + +
    + +
    + +
    + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/errors/403.blade.php b/packages/Webkul/Shop/src/Resources/views/errors/403.blade.php new file mode 100755 index 000000000..6d61554d5 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/errors/403.blade.php @@ -0,0 +1,38 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('admin::app.error.403.page-title') }} +@stop + +@section('content-wrapper') + +
    + +
    + +
    + +
    {{ __('admin::app.error.403.name') }}
    + +
    + {{ __('admin::app.error.403.title') }} +
    + +
    + {{ __('admin::app.error.403.message') }} +
    + + + {{ __('admin::app.error.go-to-home') }} + + +
    + +
    + +
    + +
    + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/errors/404.blade.php b/packages/Webkul/Shop/src/Resources/views/errors/404.blade.php new file mode 100755 index 000000000..6f34dee9c --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/errors/404.blade.php @@ -0,0 +1,40 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('admin::app.error.404.page-title') }} +@stop + +@section('content-wrapper') + +
    + +
    + +
    + +
    + {{ __('admin::app.error.404.name') }} +
    + +
    + {{ __('admin::app.error.404.title') }} +
    + +
    + {{ __('admin::app.error.404.message') }} +
    + + + {{ __('admin::app.error.go-to-home') }} + + +
    + +
    + +
    + +
    + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/errors/500.blade.php b/packages/Webkul/Shop/src/Resources/views/errors/500.blade.php new file mode 100755 index 000000000..2ae0f5a41 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/errors/500.blade.php @@ -0,0 +1,40 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('admin::app.error.500.page-title') }} +@stop + +@section('content-wrapper') + +
    + +
    + +
    + +
    + {{ __('admin::app.error.500.name') }} +
    + +
    + {{ __('admin::app.error.500.title') }} +
    + +
    + {{ __('admin::app.error.500.message') }} +
    + + + {{ __('admin::app.error.go-to-home') }} + + +
    + +
    + +
    + +
    + +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/errors/503.blade.php b/packages/Webkul/Shop/src/Resources/views/errors/503.blade.php new file mode 100644 index 000000000..7888c1036 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/errors/503.blade.php @@ -0,0 +1,32 @@ + + + + + + + Document + + +
    + +
    + +
    + +
    + {{ __('admin::app.error.in-maitainace') }} +
    + +
    + {{ __('admin::app.error.right-back') }} +
    +
    + +
    + +
    + +
    + + \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/home/featured-products.blade.php b/packages/Webkul/Shop/src/Resources/views/home/featured-products.blade.php new file mode 100755 index 000000000..02f04f0e5 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/home/featured-products.blade.php @@ -0,0 +1,21 @@ +@if (app('Webkul\Product\Repositories\ProductRepository')->getFeaturedProducts()->count()) + +@endif \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/home/index.blade.php b/packages/Webkul/Shop/src/Resources/views/home/index.blade.php new file mode 100755 index 000000000..f25365260 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/home/index.blade.php @@ -0,0 +1,47 @@ +@extends('shop::layouts.master') + +@php + $channel = core()->getCurrentChannel(); + + $homeSEO = $channel->home_seo; + + if (isset($homeSEO)) { + $homeSEO = json_decode($channel->home_seo); + + $metaTitle = $homeSEO->meta_title; + + $metaDescription = $homeSEO->meta_description; + + $metaKeywords = $homeSEO->meta_keywords; + } +@endphp + +@section('page_title') + {{ isset($metaTitle) ? $metaTitle : "" }} +@endsection + +@section('head') + + @if (isset($homeSEO)) + @isset($metaTitle) + + @endisset + + @isset($metaDescription) + + @endisset + + @isset($metaKeywords) + + @endisset + @endif +@endsection + +@section('content-wrapper') + {!! view_render_event('bagisto.shop.home.content.before') !!} + + {!! DbView::make($channel)->field('home_page_content')->with(['sliderData' => $sliderData])->render() !!} + + {{ view_render_event('bagisto.shop.home.content.after') }} + +@endsection diff --git a/packages/Webkul/Shop/src/Resources/views/home/new-products.blade.php b/packages/Webkul/Shop/src/Resources/views/home/new-products.blade.php new file mode 100755 index 000000000..a49b4ebcf --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/home/new-products.blade.php @@ -0,0 +1,21 @@ +@if (app('Webkul\Product\Repositories\ProductRepository')->getNewProducts()->count()) + +@endif diff --git a/packages/Webkul/Shop/src/Resources/views/home/news-updates.blade.php b/packages/Webkul/Shop/src/Resources/views/home/news-updates.blade.php new file mode 100755 index 000000000..4b2183362 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/home/news-updates.blade.php @@ -0,0 +1,15 @@ +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    +
    +
    diff --git a/packages/Webkul/Shop/src/Resources/views/home/slider.blade.php b/packages/Webkul/Shop/src/Resources/views/home/slider.blade.php new file mode 100755 index 000000000..a55569ca1 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/home/slider.blade.php @@ -0,0 +1,3 @@ +
    + +
    \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/index.blade.php b/packages/Webkul/Shop/src/Resources/views/index.blade.php new file mode 100755 index 000000000..5d0687bbe --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/index.blade.php @@ -0,0 +1,13 @@ +@inject('rateHelper' , 'Webkul\Shipping\Helper\Rate') +
    + @foreach ($rateHelper->collectRates() as $key=>$count) +
    + ${{ core()->currency($count) }} {{ $key }} +
    + @endforeach +
    + \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php b/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php new file mode 100755 index 000000000..fd541a7e9 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/layouts/footer/footer.blade.php @@ -0,0 +1,94 @@ + diff --git a/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php b/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php new file mode 100755 index 000000000..a97e90ddc --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/layouts/header/index.blade.php @@ -0,0 +1,217 @@ + + +@push('scripts') + +@endpush diff --git a/packages/Webkul/Shop/src/Resources/views/layouts/header/nav-menu/navmenu.blade.php b/packages/Webkul/Shop/src/Resources/views/layouts/header/nav-menu/navmenu.blade.php new file mode 100755 index 000000000..be48e1767 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/layouts/header/nav-menu/navmenu.blade.php @@ -0,0 +1,137 @@ +{!! view_render_event('bagisto.shop.layout.header.category.before') !!} + +getVisibleCategoryTree(core()->getCurrentChannel()->root_category_id) as $category) { + if ($category->slug) + array_push($categories, $category); +} + +?> + + + +{!! view_render_event('bagisto.shop.layout.header.category.after') !!} + + +@push('scripts') + + + + + + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php b/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php new file mode 100755 index 000000000..b315da0f1 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php @@ -0,0 +1,120 @@ + + + + + + @yield('page_title') + + + + + + + + + + + @if ($favicon = core()->getCurrentChannel()->favicon_url) + + @else + + @endif + + @yield('head') + + @section('seo') + @if (! request()->is('/')) + + @endif + @show + + @stack('css') + + {!! view_render_event('bagisto.shop.layout.head') !!} + + + + +getCurrentLocale()->direction == 'rtl') class="rtl" @endif style="scroll-behavior: smooth;"> + + {!! view_render_event('bagisto.shop.layout.body.before') !!} + +
    + + +
    + + {!! view_render_event('bagisto.shop.layout.header.before') !!} + + @include('shop::layouts.header.index') + + {!! view_render_event('bagisto.shop.layout.header.after') !!} + + @yield('slider') + +
    + + {!! view_render_event('bagisto.shop.layout.content.before') !!} + + @yield('content-wrapper') + + {!! view_render_event('bagisto.shop.layout.content.after') !!} + +
    + +
    + + {!! view_render_event('bagisto.shop.layout.footer.before') !!} + + @include('shop::layouts.footer.footer') + + {!! view_render_event('bagisto.shop.layout.footer.after') !!} + + @if (core()->getConfigData('general.content.footer.footer_toggle')) + + @endif +
    + + + + + + + @stack('scripts') + + {!! view_render_event('bagisto.shop.layout.body.after') !!} + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/partials/pagination.blade.php b/packages/Webkul/Shop/src/Resources/views/partials/pagination.blade.php new file mode 100755 index 000000000..7350ddb24 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/partials/pagination.blade.php @@ -0,0 +1,50 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/packages/Webkul/Shop/src/Resources/views/products/add-buttons.blade.php b/packages/Webkul/Shop/src/Resources/views/products/add-buttons.blade.php new file mode 100644 index 000000000..e54d8e798 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/add-buttons.blade.php @@ -0,0 +1,10 @@ +
    +
    + @csrf + + + +
    + + @include('shop::products.wishlist') +
    \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/add-to-cart.blade.php b/packages/Webkul/Shop/src/Resources/views/products/add-to-cart.blade.php new file mode 100755 index 000000000..cca20b3ba --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/add-to-cart.blade.php @@ -0,0 +1,7 @@ +{!! view_render_event('bagisto.shop.products.add_to_cart.before', ['product' => $product]) !!} + + + +{!! view_render_event('bagisto.shop.products.add_to_cart.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/add-to.blade.php b/packages/Webkul/Shop/src/Resources/views/products/add-to.blade.php new file mode 100755 index 000000000..88af2a27d --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/add-to.blade.php @@ -0,0 +1,9 @@ +{!! view_render_event('bagisto.shop.products.add_to.before', ['product' => $product]) !!} + +
    + @include ('shop::products.add-to-cart', ['product' => $product]) + + @include('shop::products.wishlist') +
    + +{!! view_render_event('bagisto.shop.products.add_to.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/buy-now.blade.php b/packages/Webkul/Shop/src/Resources/views/products/buy-now.blade.php new file mode 100755 index 000000000..74bba5273 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/buy-now.blade.php @@ -0,0 +1,7 @@ +{!! view_render_event('bagisto.shop.products.buy_now.before', ['product' => $product]) !!} + + + +{!! view_render_event('bagisto.shop.products.buy_now.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/index.blade.php b/packages/Webkul/Shop/src/Resources/views/products/index.blade.php new file mode 100755 index 000000000..347e23722 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/index.blade.php @@ -0,0 +1,128 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ $category->meta_title ?? $category->name }} +@stop + +@section('seo') + + +@stop + +@section('content-wrapper') + @inject ('productRepository', 'Webkul\Product\Repositories\ProductRepository') + +
    + {!! view_render_event('bagisto.shop.products.index.before', ['category' => $category]) !!} + +
    + + @if (in_array($category->display_mode, [null, 'products_only', 'products_and_description'])) + @include ('shop::products.list.layered-navigation') + @endif + +
    display_mode == 'description_only') style="width: 100%" @endif> +
    + @if (!is_null($category->image)) + + @endif +
    + + @if (in_array($category->display_mode, [null, 'description_only', 'products_and_description'])) + @if ($category->description) +
    + {!! $category->description !!} +
    + @endif + @endif + + @if (in_array($category->display_mode, [null, 'products_only', 'products_and_description'])) + getAll($category->id); ?> + + @if ($products->count()) + + @include ('shop::products.list.toolbar') + + @inject ('toolbarHelper', 'Webkul\Product\Helpers\Toolbar') + + @if ($toolbarHelper->getCurrentMode() == 'grid') +
    + @foreach ($products as $productFlat) + + @include ('shop::products.list.card', ['product' => $productFlat]) + + @endforeach +
    + @else +
    + @foreach ($products as $productFlat) + + @include ('shop::products.list.card', ['product' => $productFlat]) + + @endforeach +
    + @endif + + {!! view_render_event('bagisto.shop.products.index.pagination.before', ['category' => $category]) !!} + +
    + {{ $products->appends(request()->input())->links() }} +
    + + {!! view_render_event('bagisto.shop.products.index.pagination.after', ['category' => $category]) !!} + + @else + +
    +

    {{ __('shop::app.products.whoops') }}

    + +

    + {{ __('shop::app.products.empty') }} +

    +
    + + @endif + @endif +
    +
    + + {!! view_render_event('bagisto.shop.products.index.after', ['category' => $category]) !!} +
    +@stop + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/list/card.blade.php b/packages/Webkul/Shop/src/Resources/views/products/list/card.blade.php new file mode 100755 index 000000000..6ccb3fdee --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/list/card.blade.php @@ -0,0 +1,38 @@ +{!! view_render_event('bagisto.shop.products.list.card.before', ['product' => $product]) !!} + +
    + + @inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') + + getProductBaseImage($product); ?> + + @if ($product->new) +
    + {{ __('shop::app.products.new') }} +
    + @endif + +
    + + + +
    + +
    + + + + @include ('shop::products.price', ['product' => $product]) + + @include('shop::products.add-buttons', ['product' => $product]) +
    + +
    + +{!! view_render_event('bagisto.shop.products.list.card.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/list/layered-navigation.blade.php b/packages/Webkul/Shop/src/Resources/views/products/list/layered-navigation.blade.php new file mode 100755 index 000000000..05be15dbe --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/list/layered-navigation.blade.php @@ -0,0 +1,228 @@ +@inject ('attributeRepository', 'Webkul\Attribute\Repositories\AttributeRepository') + +@inject ('productFlatRepository', 'Webkul\Product\Repositories\ProductFlatRepository') + +@inject ('productRepository', 'Webkul\Product\Repositories\ProductRepository') + +getAll($category->id); + + if (count($category->filterableAttributes) > 0 && count($products)) { + $filterAttributes = $category->filterableAttributes; + } else { + $categoryProductAttributes = $productFlatRepository->getCategoryProductAttribute($category->id); + + if ($categoryProductAttributes) { + foreach ($attributeRepository->getFilterAttributes() as $filterAttribute) { + if (in_array($filterAttribute->id, $categoryProductAttributes)) { + $filterAttributes[] = $filterAttribute; + } else if ($filterAttribute ['code'] == 'price') { + $filterAttributes[] = $filterAttribute; + } + } + + $filterAttributes = collect($filterAttributes); + } + } + } else { + $filterAttributes = $attributeRepository->getFilterAttributes(); + } +?> + +
    + + {!! view_render_event('bagisto.shop.products.list.layered-nagigation.before') !!} + + + + {!! view_render_event('bagisto.shop.products.list.layered-nagigation.after') !!} + +
    + +@push('scripts') + + + + + +@endpush diff --git a/packages/Webkul/Shop/src/Resources/views/products/list/toolbar.blade.php b/packages/Webkul/Shop/src/Resources/views/products/list/toolbar.blade.php new file mode 100755 index 000000000..f8413fcc4 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/list/toolbar.blade.php @@ -0,0 +1,83 @@ +@inject ('toolbarHelper', 'Webkul\Product\Helpers\Toolbar') + +{!! view_render_event('bagisto.shop.products.list.toolbar.before') !!} + +
    + +
    + + {{ __('shop::app.products.pager-info', ['showing' => $products->firstItem() . '-' . $products->lastItem(), 'total' => $products->total()]) }} + + + + + + +
    + +
    + +
    + @if ($toolbarHelper->isModeActive('grid')) + + + + @else + + + + @endif + + @if ($toolbarHelper->isModeActive('list')) + + + + @else + + + + @endif +
    + +
    + + + +
    + +
    + + + +
    + +
    + +
    + +{!! view_render_event('bagisto.shop.products.list.toolbar.after') !!} + + +
    + +
    \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/price.blade.php b/packages/Webkul/Shop/src/Resources/views/products/price.blade.php new file mode 100755 index 000000000..bed2c056d --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/price.blade.php @@ -0,0 +1,7 @@ +{!! view_render_event('bagisto.shop.products.price.before', ['product' => $product]) !!} + +
    + {!! $product->getTypeInstance()->getPriceHtml() !!} +
    + +{!! view_render_event('bagisto.shop.products.price.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/review.blade.php b/packages/Webkul/Shop/src/Resources/views/products/review.blade.php new file mode 100755 index 000000000..78d401b01 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/review.blade.php @@ -0,0 +1,24 @@ +@inject ('reviewHelper', 'Webkul\Product\Helpers\Review') + +{!! view_render_event('bagisto.shop.products.review.before', ['product' => $product]) !!} + +@if ($total = $reviewHelper->getTotalReviews($product)) +
    + + @for ($i = 1; $i <= round($reviewHelper->getAverageRating($product)); $i++) + + @endfor + + +
    + {{ + __('shop::app.products.total-rating', [ + 'total_rating' => $reviewHelper->getTotalRating($product), + 'total_reviews' => $total, + ]) + }} +
    +
    +@endif + +{!! view_render_event('bagisto.shop.products.review.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php b/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php new file mode 100755 index 000000000..2c1867cfc --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php @@ -0,0 +1,118 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.reviews.add-review-page-title') }} - {{ $product->name }} +@endsection + +@section('content-wrapper') + +
    + +
    +
    + @inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') + + getProductBaseImage($product); ?> + +
    + + + +
    + + + + @include('shop::products.price') + +
    + +
    +
    + @csrf + +
    + {{ __('shop::app.reviews.write-review') }} +
    + +
    + + +
    + + + + + +
    + + + +
    @{{ errors.first('rating') }}
    +
    + +
    + + + @{{ errors.first('title') }} +
    + + @if (core()->getConfigData('catalog.products.review.guest_review') && ! auth()->guard('customer')->user()) +
    + + + @{{ errors.first('name') }} +
    + @endif + +
    + + + @{{ errors.first('comment') }} +
    + + + +
    +
    +
    + +
    + +@endsection + + +@push('scripts') + + + +@endpush diff --git a/packages/Webkul/Shop/src/Resources/views/products/reviews/index.blade.php b/packages/Webkul/Shop/src/Resources/views/products/reviews/index.blade.php new file mode 100755 index 000000000..74b59fe3f --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/reviews/index.blade.php @@ -0,0 +1,157 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.reviews.product-review-page-title') }} - {{ $product->name }} +@endsection + +@section('content-wrapper') + +
    + +
    + @inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') + + @inject ('reviewHelper', 'Webkul\Product\Helpers\Review') + + getProductBaseImage($product); ?> + +
    +
    + + + +
    + + + +
    + @if ($product->getTypeInstance()->haveSpecialPrice()) + {{ core()->currency($product->getTypeInstance()->getSpecialPrice()) }} + @else + {{ core()->currency($product->getTypeInstance()->getMinimalPrice()) }} + @endif +
    +
    + +
    +
    + {{ __('shop::app.reviews.rating-reviews') }} + + @if (core()->getConfigData('catalog.products.review.guest_review') || auth()->guard('customer')->check()) + + {{ __('shop::app.products.write-review-btn') }} + + @endif +
    + +
    +
    + + {{ $reviewHelper->getAverageRating($product) }} + + + + @for ($i = 1; $i <= $reviewHelper->getAverageRating($product); $i++) + + + + @endfor + + +
    + {{ __('shop::app.reviews.ratingreviews', [ + 'rating' => $reviewHelper->getTotalRating($product), + 'review' => $reviewHelper->getTotalReviews($product)]) + }} +
    +
    + +
    + + @foreach ($reviewHelper->getPercentageRating($product) as $key => $count) +
    +
    +
    {{ __('shop::app.reviews.star') }}
    +
    +
    +
    +
    + + {{ __('shop::app.reviews.percentage', ['percentage' => $count]) }} + +
    +
    +
    + @endforeach + +
    +
    + +
    +
    + + @foreach ($reviewHelper->getReviews($product)->paginate(10) as $review) +
    +
    + {{ $review->title }} +
    + + + @for ($i = 1; $i <= $review->rating; $i++) + + + + @endfor + + +
    + {{ $review->comment }} +
    + +
    + + {{ __('shop::app.products.by', ['name' => $review->name]) }}, + + + + {{ core()->formatDate($review->created_at, 'F d, Y') }} + +
    +
    + @endforeach + +
    +
    +
    +
    + +
    + +@endsection + +@push('scripts') + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/sharelinks.blade.php b/packages/Webkul/Shop/src/Resources/views/products/sharelinks.blade.php new file mode 100755 index 000000000..fd0807215 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/sharelinks.blade.php @@ -0,0 +1 @@ + diff --git a/packages/Webkul/Shop/src/Resources/views/products/view.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view.blade.php new file mode 100755 index 000000000..e530edd37 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view.blade.php @@ -0,0 +1,262 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ trim($product->meta_title) != "" ? $product->meta_title : $product->name }} +@stop + +@section('seo') + meta_description : \Illuminate\Support\Str::limit(strip_tags($product->description), 120, '') }}"/> + +@stop + +@section('content-wrapper') + + {!! view_render_event('bagisto.shop.products.view.before', ['product' => $product]) !!} + +
    + +
    + +
    + @csrf() + + + + @include ('shop::products.view.gallery') + +
    + +
    + {{ $product->name }} +
    + + @include ('shop::products.review', ['product' => $product]) + + @include ('shop::products.price', ['product' => $product]) + + @include ('shop::products.view.stock', ['product' => $product]) + + {!! view_render_event('bagisto.shop.products.view.short_description.before', ['product' => $product]) !!} + +
    + {!! $product->short_description !!} +
    + + {!! view_render_event('bagisto.shop.products.view.short_description.after', ['product' => $product]) !!} + + + {!! view_render_event('bagisto.shop.products.view.quantity.before', ['product' => $product]) !!} + + @if ($product->getTypeInstance()->showQuantityBox()) + + @else + + @endif + + + {!! view_render_event('bagisto.shop.products.view.quantity.after', ['product' => $product]) !!} + + @include ('shop::products.view.configurable-options') + + @include ('shop::products.view.downloadable') + + @include ('shop::products.view.grouped-products') + + @include ('shop::products.view.bundle-options') + + {!! view_render_event('bagisto.shop.products.view.description.before', ['product' => $product]) !!} + + +
    + {{ __('shop::app.products.description') }} + +
    + +
    +
    + {!! $product->description !!} +
    +
    +
    + + {!! view_render_event('bagisto.shop.products.view.description.after', ['product' => $product]) !!} + + @include ('shop::products.view.attributes') + + @include ('shop::products.view.reviews') +
    +
    +
    +
    + + @include ('shop::products.view.related-products') + + @include ('shop::products.view.up-sells') + +
    + + {!! view_render_event('bagisto.shop.products.view.after', ['product' => $product]) !!} +@endsection + +@push('scripts') + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/attributes.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/attributes.blade.php new file mode 100755 index 000000000..bd49c0826 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/attributes.blade.php @@ -0,0 +1,45 @@ +@inject ('productViewHelper', 'Webkul\Product\Helpers\View') + +{!! view_render_event('bagisto.shop.products.view.attributes.before', ['product' => $product]) !!} + +@if ($customAttributeValues = $productViewHelper->getAdditionalData($product)) + +
    + {{ __('shop::app.products.specification') }} + +
    + +
    + + + @foreach ($customAttributeValues as $attribute) + + @if ($attribute['label']) + + @else + + @endif + @if ($attribute['type'] == 'file' && $attribute['value']) + + @elseif ($attribute['type'] == 'image' && $attribute['value']) + + @else + + @endif + + @endforeach + +
    {{ $attribute['label'] }}{{ $attribute['admin_name'] }} + + + + + + + + {{ $attribute['value'] }}
    +
    +
    +@endif + +{!! view_render_event('bagisto.shop.products.view.attributes.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/bundle-options.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/bundle-options.blade.php new file mode 100644 index 000000000..cd7d13fbd --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/bundle-options.blade.php @@ -0,0 +1,230 @@ +@if ($product->type == 'bundle') + + {!! view_render_event('bagisto.shop.products.view.bundle-options.before', ['product' => $product]) !!} + + + + {!! view_render_event('bagisto.shop.products.view.bundle-options.after', ['product' => $product]) !!} + + @push('scripts') + + + + + + @endpush +@endif \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/configurable-options.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/configurable-options.blade.php new file mode 100755 index 000000000..3e4b74eca --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/configurable-options.blade.php @@ -0,0 +1,324 @@ +@if (Webkul\Product\Helpers\ProductType::hasVariants($product->type)) + + @inject ('configurableOptionHelper', 'Webkul\Product\Helpers\ConfigurableOption') + + {!! view_render_event('bagisto.shop.products.view.configurable-options.before', ['product' => $product]) !!} + + + + {!! view_render_event('bagisto.shop.products.view.configurable-options.after', ['product' => $product]) !!} + + @push('scripts') + + + + getConfigurationConfig($product) ?> + + + @endpush + +@endif \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/cross-sells.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/cross-sells.blade.php new file mode 100644 index 000000000..f7b3e03b8 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/cross-sells.blade.php @@ -0,0 +1,36 @@ +@foreach ($cart->items as $item) + product; + + if ($product->cross_sells()->count()) { + $products[] = $product; + $products = array_unique($products); + } + ?> +@endforeach + +@if (isset($products)) + +
    + +
    + {{ __('shop::app.products.cross-sell-title') }} + +
    + +
    + @foreach($products as $product) + + @foreach ($product->cross_sells()->paginate(2) as $cross_sell_product) + + @include ('shop::products.list.card', ['product' => $cross_sell_product]) + + @endforeach + + @endforeach + +
    + +
    + +@endif \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/downloadable.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/downloadable.blade.php new file mode 100644 index 000000000..7f41196f7 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/downloadable.blade.php @@ -0,0 +1,50 @@ +@if ($product->type == 'downloadable') + {!! view_render_event('bagisto.shop.products.view.downloadable.before', ['product' => $product]) !!} + +
    + + @if ($product->downloadable_samples->count()) +
    +

    {{ __('shop::app.products.samples') }}

    + + +
    + @endif + + @if ($product->downloadable_links->count()) + + @endif +
    + + {!! view_render_event('bagisto.shop.products.view.downloadable.before', ['product' => $product]) !!} +@endif \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php new file mode 100755 index 000000000..3aaa61567 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php @@ -0,0 +1,185 @@ +@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') +@inject ('wishListHelper', 'Webkul\Customer\Helpers\Wishlist') + +getGalleryImages($product); ?> + +{!! view_render_event('bagisto.shop.products.view.gallery.before', ['product' => $product]) !!} + +
    + +
    +
    + + + + @include ('shop::products.view.product-add') + +
    + +{!! view_render_event('bagisto.shop.products.view.gallery.after', ['product' => $product]) !!} + +@push('scripts') + + + + + + + +@endpush \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/grouped-products.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/grouped-products.blade.php new file mode 100644 index 000000000..e6c2259ea --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/grouped-products.blade.php @@ -0,0 +1,36 @@ +@if ($product->type == 'grouped') + {!! view_render_event('bagisto.shop.products.view.grouped_products.before', ['product' => $product]) !!} + +
    + @if ($product->grouped_products->count()) +
    +
      +
    • + {{ __('shop::app.products.name') }} + {{ __('shop::app.products.qty') }} +
    • + @foreach ($product->grouped_products as $groupedProduct) +
    • + + {{ $groupedProduct->associated_product->name }} + + @include ('shop::products.price', ['product' => $groupedProduct->associated_product]) + + + + + + +
    • + @endforeach +
    +
    + @endif +
    + + {!! view_render_event('bagisto.shop.products.view.grouped_products.before', ['product' => $product]) !!} +@endif \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/product-add.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/product-add.blade.php new file mode 100755 index 000000000..3254792c6 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/product-add.blade.php @@ -0,0 +1,9 @@ +{!! view_render_event('bagisto.shop.products.view.product-add.after', ['product' => $product]) !!} + +
    + @include ('shop::products.add-to-cart', ['product' => $product]) + + @include ('shop::products.buy-now') +
    + +{!! view_render_event('bagisto.shop.products.view.product-add.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/related-products.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/related-products.blade.php new file mode 100644 index 000000000..722b4bf05 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/related-products.blade.php @@ -0,0 +1,24 @@ +related_products()->get(); +?> + +@if ($relatedProducts->count()) +
    + +
    + {{ __('shop::app.products.related-product-title') }} + +
    + +
    + + @foreach ($relatedProducts as $related_product) + + @include ('shop::products.list.card', ['product' => $related_product]) + + @endforeach + +
    + +
    +@endif \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/reviews.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/reviews.blade.php new file mode 100755 index 000000000..e96063243 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/reviews.blade.php @@ -0,0 +1,90 @@ +@inject ('reviewHelper', 'Webkul\Product\Helpers\Review') + +{!! view_render_event('bagisto.shop.products.view.reviews.after', ['product' => $product]) !!} + +@if ($total = $reviewHelper->getTotalReviews($product)) +
    +
    + {{ __('shop::app.products.reviews-title') }} +
    + +
    +
    + + + {{ $reviewHelper->getAverageRating($product) }} + + + + @for ($i = 1; $i <= round($reviewHelper->getAverageRating($product)); $i++) + + + + @endfor + + +
    + {{ __('shop::app.products.total-reviews', ['total' => $total]) }} +
    + +
    + + @if (core()->getConfigData('catalog.products.review.guest_review') || auth()->guard('customer')->check()) + + {{ __('shop::app.products.write-review-btn') }} + + @endif + +
    + +
    + + @foreach ($reviewHelper->getReviews($product)->paginate(10) as $review) +
    +
    + {{ $review->title }} +
    + + + @for ($i = 1; $i <= $review->rating; $i++) + + + + @endfor + + +
    + {{ $review->comment }} +
    + +
    + + {{ __('shop::app.products.by', ['name' => $review->name]) }}, + + + + {{ core()->formatDate($review->created_at, 'F d, Y') }} + +
    +
    + @endforeach + + + {{ __('shop::app.products.view-all') }} + + +
    +
    +@else + @if (core()->getConfigData('catalog.products.review.guest_review') || auth()->guard('customer')->check()) + + @endif +@endif + +{!! view_render_event('bagisto.shop.products.view.reviews.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/stock.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/stock.blade.php new file mode 100755 index 000000000..758f4d022 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/stock.blade.php @@ -0,0 +1,7 @@ +{!! view_render_event('bagisto.shop.products.view.stock.before', ['product' => $product]) !!} + +
    + {{ $product->haveSufficientQuantity(1) ? __('shop::app.products.in-stock') : __('shop::app.products.out-of-stock') }} +
    + +{!! view_render_event('bagisto.shop.products.view.stock.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/up-sells.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/up-sells.blade.php new file mode 100755 index 000000000..0f85e80e2 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/view/up-sells.blade.php @@ -0,0 +1,28 @@ +{!! view_render_event('bagisto.shop.products.view.up-sells.after', ['product' => $product]) !!} + +up_sells()->get(); +?> + +@if ($productUpSells->count()) +
    + +
    + {{ __('shop::app.products.up-sell-title') }} + +
    + +
    + + @foreach ($productUpSells as $up_sell_product) + + @include ('shop::products.list.card', ['product' => $up_sell_product]) + + @endforeach + +
    + +
    +@endif + +{!! view_render_event('bagisto.shop.products.view.up-sells.after', ['product' => $product]) !!} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/products/wishlist.blade.php b/packages/Webkul/Shop/src/Resources/views/products/wishlist.blade.php new file mode 100755 index 000000000..313f9c8da --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/products/wishlist.blade.php @@ -0,0 +1,11 @@ +@inject ('wishListHelper', 'Webkul\Customer\Helpers\Wishlist') + +@auth('customer') + {!! view_render_event('bagisto.shop.products.wishlist.before') !!} + + getWishlistProduct($product)) class="add-to-wishlist already" @else class="add-to-wishlist" @endif href="{{ route('customer.wishlist.add', $product->product_id) }}" id="wishlist-changer"> + + + + {!! view_render_event('bagisto.shop.products.wishlist.after') !!} +@endauth diff --git a/packages/Webkul/Shop/src/Resources/views/search/search.blade.php b/packages/Webkul/Shop/src/Resources/views/search/search.blade.php new file mode 100755 index 000000000..6474628e8 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/search/search.blade.php @@ -0,0 +1,42 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.search.page-title') }} +@endsection + +@section('content-wrapper') + @if (! $results) + {{ __('shop::app.search.no-results') }} + @endif + + @if ($results) +
    + @if ($results->isEmpty()) +
    +

    {{ __('shop::app.products.whoops') }}

    + {{ __('shop::app.search.no-results') }} +
    + @else + @if ($results->total() == 1) +
    + {{ $results->total() }} {{ __('shop::app.search.found-result') }} +
    + @else +
    + {{ $results->total() }} {{ __('shop::app.search.found-results') }} +
    + @endif + +
    + @foreach ($results as $productFlat) + + @include('shop::products.list.card', ['product' => $productFlat->product]) + + @endforeach +
    + + @include('ui::datagrid.pagination') + @endif +
    + @endif +@endsection \ No newline at end of file diff --git a/packages/Webkul/Shop/webpack.mix.js b/packages/Webkul/Shop/webpack.mix.js new file mode 100755 index 000000000..3554980f1 --- /dev/null +++ b/packages/Webkul/Shop/webpack.mix.js @@ -0,0 +1,31 @@ +const mix = require("laravel-mix"); + +if (mix == 'undefined') { + const { mix } = require("laravel-mix"); +} + +require("laravel-mix-merge-manifest"); + +if (mix.inProduction()) { + var publicPath = 'publishable/assets'; +} else { + var publicPath = "../../../public/themes/default/assets"; +} + +mix.setPublicPath(publicPath).mergeManifest(); +mix.disableNotifications(); + +mix.js([__dirname + "/src/Resources/assets/js/app.js"], "js/shop.js") + .copyDirectory(__dirname + "/src/Resources/assets/images", publicPath + "/images") + .sass(__dirname + "/src/Resources/assets/sass/app.scss", "css/shop.css") + .options({ + processCssUrls: false + }); + +if (!mix.inProduction()) { + mix.sourceMaps(); +} + +if (mix.inProduction()) { + mix.version(); +} diff --git a/packages/Webkul/Tax/.gitignore b/packages/Webkul/Tax/.gitignore new file mode 100755 index 000000000..e69de29bb diff --git a/packages/Webkul/Tax/composer.json b/packages/Webkul/Tax/composer.json new file mode 100755 index 000000000..f621973ae --- /dev/null +++ b/packages/Webkul/Tax/composer.json @@ -0,0 +1,26 @@ +{ + "name": "bagisto/laravel-tax", + "license": "MIT", + "description" : "Tax package for store front and customers", + "authors": [ + { + "name": "Prashant Singh", + "email": "prashant.singh852@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\Tax\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Tax\\Providers\\TaxServiceProvider" + ], + "aliases": {} + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Tax/src/Contracts/TaxCategory.php b/packages/Webkul/Tax/src/Contracts/TaxCategory.php new file mode 100644 index 000000000..7366a8c63 --- /dev/null +++ b/packages/Webkul/Tax/src/Contracts/TaxCategory.php @@ -0,0 +1,7 @@ +increments('id'); + + $table->integer('channel_id')->unsigned(); + + $table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade'); + + $table->string('code')->unique(); + + $table->string('name')->unique(); + + $table->longtext('description'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('tax_categories'); + } +} diff --git a/packages/Webkul/Tax/src/Database/Migrations/2018_08_30_065042_create_tax_rates_table.php b/packages/Webkul/Tax/src/Database/Migrations/2018_08_30_065042_create_tax_rates_table.php new file mode 100755 index 000000000..c0e06517c --- /dev/null +++ b/packages/Webkul/Tax/src/Database/Migrations/2018_08_30_065042_create_tax_rates_table.php @@ -0,0 +1,48 @@ +increments('id'); + + $table->string('identifier')->unique(); + + $table->boolean('is_zip')->default(0); + + $table->string('zip_code')->nullable(); + + $table->string('zip_from')->nullable(); + + $table->string('zip_to')->nullable(); + + $table->string('state'); + + $table->string('country'); + + $table->decimal('tax_rate', 12, 4); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('tax_rates'); + } +} diff --git a/packages/Webkul/Tax/src/Database/Migrations/2018_08_30_065840_create_tax_mappings_table.php b/packages/Webkul/Tax/src/Database/Migrations/2018_08_30_065840_create_tax_mappings_table.php new file mode 100755 index 000000000..86d295355 --- /dev/null +++ b/packages/Webkul/Tax/src/Database/Migrations/2018_08_30_065840_create_tax_mappings_table.php @@ -0,0 +1,42 @@ +increments('id'); + + $table->integer('tax_category_id')->unsigned(); + + $table->foreign('tax_category_id')->references('id')->on('tax_categories')->onDelete('cascade'); + + $table->integer('tax_rate_id')->unsigned(); + + $table->foreign('tax_rate_id')->references('id')->on('tax_rates')->onDelete('cascade'); + + $table->unique(['tax_category_id', 'tax_rate_id'], 'tax_map_index_unique'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('tax_categories_tax_rates'); + } +} diff --git a/packages/Webkul/Tax/src/Http/Controllers/Controller.php b/packages/Webkul/Tax/src/Http/Controllers/Controller.php new file mode 100755 index 000000000..9e99940ed --- /dev/null +++ b/packages/Webkul/Tax/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class TaxCategoryController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * TaxCategoryRepository + * + * @var Object + */ + protected $taxCategoryRepository; + + /** + * TaxRateRepository + * + * @var Object + */ + protected $taxRateRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Tax\Repositories\TaxCategoryRepository $taxCategoryRepository + * @param \Webkul\Tax\Repositories\TaxRateRepository $taxRateRepository + * @return void + */ + public function __construct( + TaxCategoryRepository $taxCategoryRepository, + TaxRateRepository $taxRateRepository + ) + { + $this->taxCategoryRepository = $taxCategoryRepository; + + $this->taxRateRepository = $taxRateRepository; + + $this->_config = request('_config'); + } + + /** + * Function to show the tax category form + * + * @return \Illuminate\View\View + */ + public function show() + { + return view($this->_config['view'])->with('taxRates', $this->taxRateRepository->all()); + } + + /** + * Function to create + * the tax category. + * + * @return view + */ + public function create() + { + $data = request()->input(); + + $this->validate(request(), [ + 'channel_id' => 'required|numeric', + 'code' => 'required|string|unique:tax_categories,code', + 'name' => 'required|string', + 'description' => 'required|string', + 'taxrates' => 'array|required' + ]); + + Event::dispatch('tax.tax_category.create.before'); + + $taxCategory = $this->taxCategoryRepository->create($data); + + //attach the categories in the tax map table + $this->taxCategoryRepository->attachOrDetach($taxCategory, $data['taxrates']); + + Event::dispatch('tax.tax_category.create.after', $taxCategory); + + session()->flash('success', trans('admin::app.settings.tax-categories.create-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * To show the edit form form the tax category + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $taxCategory = $this->taxCategoryRepository->findOrFail($id); + + return view($this->_config['view'], compact('taxCategory')); + } + + /** + * To update the tax category + * + * @param int $id + * @return Response + */ + public function update($id) + { + $this->validate(request(), [ + 'channel_id' => 'required|numeric', + 'code' => 'required|string|unique:tax_categories,code,' . $id, + 'name' => 'required|string', + 'description' => 'required|string', + 'taxrates' => 'array|required' + ]); + + $data = request()->input(); + + Event::dispatch('tax.tax_category.update.before', $id); + + $taxCategory = $this->taxCategoryRepository->update($data, $id); + + Event::dispatch('tax.tax_category.update.after', $taxCategory); + + if (! $taxCategory) { + session()->flash('error', trans('admin::app.settings.tax-categories.update-error')); + + return redirect()->back(); + } + + $taxRates = $data['taxrates']; + + //attach the categories in the tax map table + $this->taxCategoryRepository->attachOrDetach($taxCategory, $taxRates); + + session()->flash('success', trans('admin::app.settings.tax-categories.update-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $taxCategory = $this->taxCategoryRepository->findOrFail($id); + + try { + Event::dispatch('tax.tax_category.delete.before', $id); + + $this->taxCategoryRepository->delete($id); + + Event::dispatch('tax.tax_category.delete.after', $id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Tax Category'])); + + return response()->json(['message' => true], 200); + } catch(Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Tax Category'])); + } + + return response()->json(['message' => false], 400); + } +} diff --git a/packages/Webkul/Tax/src/Http/Controllers/TaxController.php b/packages/Webkul/Tax/src/Http/Controllers/TaxController.php new file mode 100755 index 000000000..6f3a8d82d --- /dev/null +++ b/packages/Webkul/Tax/src/Http/Controllers/TaxController.php @@ -0,0 +1,41 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class TaxController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->middleware('admin'); + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } +} \ No newline at end of file diff --git a/packages/Webkul/Tax/src/Http/Controllers/TaxRateController.php b/packages/Webkul/Tax/src/Http/Controllers/TaxRateController.php new file mode 100755 index 000000000..0e321a40e --- /dev/null +++ b/packages/Webkul/Tax/src/Http/Controllers/TaxRateController.php @@ -0,0 +1,293 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class TaxRateController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * TaxRateRepository object + * + * @var Object + */ + protected $taxRateRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\Tax\Repositories\TaxRateRepository $taxRateRepository + * @return void + */ + public function __construct(TaxRateRepository $taxRateRepository) + { + $this->taxRateRepository = $taxRateRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing resource for the available tax rates. + * + * @return \Illuminate\View\View + */ + + public function index() { + return view($this->_config['view']); + } + + /** + * Display a create form for tax rate + * + * @return \Illuminate\View\View + */ + public function show() + { + return view($this->_config['view']); + } + + /** + * Create the tax rate + * + * @return mixed + */ + public function create() + { + $this->validate(request(), [ + 'identifier' => 'required|string|unique:tax_rates,identifier', + 'is_zip' => 'sometimes', + 'zip_code' => 'sometimes|required_without:is_zip', + 'zip_from' => 'nullable|required_with:is_zip', + 'zip_to' => 'nullable|required_with:is_zip,zip_from', + 'country' => 'required|string', + 'tax_rate' => 'required|numeric|min:0.0001' + ]); + + $data = request()->all(); + + if (isset($data['is_zip'])) { + $data['is_zip'] = 1; + unset($data['zip_code']); + } + + Event::dispatch('tax.tax_rate.create.before'); + + $taxRate = $this->taxRateRepository->create($data); + + Event::dispatch('tax.tax_rate.create.after', $taxRate); + + session()->flash('success', trans('admin::app.settings.tax-rates.create-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the edit form for the previously created tax rates. + * + * @return \Illuminate\View\View + */ + public function edit($id) + { + $taxRate = $this->taxRateRepository->findOrFail($id); + + return view($this->_config['view'])->with('taxRate', $taxRate); + } + + /** + * Edit the previous + * tax rate + * + * @return mixed + */ + public function update($id) + { + $this->validate(request(), [ + 'identifier' => 'required|string|unique:tax_rates,identifier,'.$id, + 'is_zip' => 'sometimes', + 'zip_from' => 'nullable|required_with:is_zip', + 'zip_to' => 'nullable|required_with:is_zip,zip_from', + 'country' => 'required|string', + 'tax_rate' => 'required|numeric|min:0.0001' + ]); + + Event::dispatch('tax.tax_rate.update.before', $id); + + $taxRate = $this->taxRateRepository->update(request()->input(), $id); + + Event::dispatch('tax.tax_rate.update.after', $taxRate); + + session()->flash('success', trans('admin::app.settings.tax-rates.update-success')); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $taxRate = $this->taxRateRepository->findOrFail($id); + + try { + Event::dispatch('tax.tax_rate.delete.before', $id); + + $this->taxRateRepository->delete($id); + + Event::dispatch('tax.tax_rate.delete.after', $id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Tax Rate'])); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Tax Rate'])); + } + + return response()->json(['message' => false], 400); + } + + /** + * import function for the upload + * + * @return \Illuminate\Http\Response + */ + public function import() { + + $valid_extension = ['xlsx', 'csv', 'xls']; + + if (! in_array(request()->file('file')->getClientOriginalExtension(), $valid_extension)) { + session()->flash('error', trans('admin::app.export.upload-error')); + } else { + try { + $excelData = (new DataGridImport)->toArray(request()->file('file')); + + foreach ($excelData as $data) { + foreach ($data as $column => $uploadData) { + + if (!is_null($uploadData['zip_from']) && !is_null($uploadData['zip_to'])) { + $uploadData['is_zip'] = 1; + } + + $validator = Validator::make($uploadData, [ + 'identifier' => 'required|string', + 'state' => 'required|string', + 'country' => 'required|string', + 'tax_rate' => 'required|numeric|min:0.0001', + 'is_zip' => 'sometimes', + 'zip_code' => 'sometimes|required_without:is_zip', + 'zip_from' => 'nullable|required_with:is_zip', + 'zip_to' => 'nullable|required_with:is_zip,zip_from', + ]); + + if ($validator->fails()) { + $failedRules[$column+1] = $validator->errors(); + } + + $identiFier[$column+1] = $uploadData['identifier']; + } + + $identiFierCount = array_count_values($identiFier); + + $filtered = array_filter($identiFier, function ($value) use ($identiFierCount) { + return $identiFierCount[$value] > 1; + }); + } + + if ($filtered) { + foreach ($filtered as $position => $identifier) { + $message[] = trans('admin::app.export.duplicate-error', ['identifier' => $identifier, 'position' => $position]); + } + + $finalMsg = implode(" ", $message); + + session()->flash('error', $finalMsg); + } else { + $errorMsg = []; + + if (isset($failedRules)) { + foreach ($failedRules as $coulmn => $fail) { + if ($fail->first('identifier')){ + $errorMsg[$coulmn] = $fail->first('identifier'); + } else if ($fail->first('tax_rate')) { + $errorMsg[$coulmn] = $fail->first('tax_rate'); + } else if ($fail->first('country')) { + $errorMsg[$coulmn] = $fail->first('country'); + } else if ($fail->first('state')) { + $errorMsg[$coulmn] = $fail->first('state'); + } else if ($fail->first('zip_code')) { + $errorMsg[$coulmn] = $fail->first('zip_code'); + } else if ($fail->first('zip_from')) { + $errorMsg[$coulmn] = $fail->first('zip_from'); + } else if ($fail->first('zip_to')) { + $errorMsg[$coulmn] = $fail->first('zip_to'); + } + } + + foreach ($errorMsg as $key => $msg) { + $msg = str_replace(".", "", $msg); + $message[] = $msg. ' at Row ' .$key . '.'; + } + + $finalMsg = implode(" ", $message); + + session()->flash('error', $finalMsg); + } else { + $taxRate = $this->taxRateRepository->get()->toArray(); + + foreach ($taxRate as $rate) { + $rateIdentifier[$rate['id']] = $rate['identifier']; + } + + foreach ($excelData as $data) { + foreach ($data as $column => $uploadData) { + if (!is_null($uploadData['zip_from']) && !is_null($uploadData['zip_to'])) { + $uploadData['is_zip'] = 1; + $uploadData['zip_code'] = NULL; + } + + if (isset($rateIdentifier)) { + $id = array_search($uploadData['identifier'], $rateIdentifier); + if ($id) { + $this->taxRateRepository->update($uploadData, $id); + } else { + $this->taxRateRepository->create($uploadData); + } + } else { + $this->taxRateRepository->create($uploadData); + } + } + } + + session()->flash('success', trans('admin::app.response.upload-success', ['name' => 'Tax Rate'])); + } + } + } catch (\Exception $e) { + $failure = new Failure(1, 'rows', [0 => trans('admin::app.export.enough-row-error')]); + + session()->flash('error', $failure->errors()[0]); + } + } + + return redirect()->route($this->_config['redirect']); + } +} \ No newline at end of file diff --git a/packages/Webkul/Tax/src/Models/TaxCategory.php b/packages/Webkul/Tax/src/Models/TaxCategory.php new file mode 100755 index 000000000..c38a98010 --- /dev/null +++ b/packages/Webkul/Tax/src/Models/TaxCategory.php @@ -0,0 +1,26 @@ +belongsToMany(TaxRateProxy::modelClass(), 'tax_categories_tax_rates', 'tax_category_id')->withPivot('id'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Tax/src/Models/TaxCategoryProxy.php b/packages/Webkul/Tax/src/Models/TaxCategoryProxy.php new file mode 100644 index 000000000..8465734fd --- /dev/null +++ b/packages/Webkul/Tax/src/Models/TaxCategoryProxy.php @@ -0,0 +1,10 @@ +belongsToMany(TaxCategoryProxy::modelClass(), 'tax_categories_tax_rates', 'tax_rate_id', 'id'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Tax/src/Models/TaxRateProxy.php b/packages/Webkul/Tax/src/Models/TaxRateProxy.php new file mode 100644 index 000000000..db3c4c7f7 --- /dev/null +++ b/packages/Webkul/Tax/src/Models/TaxRateProxy.php @@ -0,0 +1,10 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + } +} \ No newline at end of file diff --git a/packages/Webkul/Tax/src/Repositories/TaxCategoryRepository.php b/packages/Webkul/Tax/src/Repositories/TaxCategoryRepository.php new file mode 100755 index 000000000..04773a7e5 --- /dev/null +++ b/packages/Webkul/Tax/src/Repositories/TaxCategoryRepository.php @@ -0,0 +1,33 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class TaxCategoryRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Tax\Contracts\TaxCategory'; + } + + public function attachOrDetach($taxCategory, $data) + { + $taxRates = $taxCategory->tax_rates; + + $this->model->findOrFail($taxCategory->id)->tax_rates()->sync($data); + + return true; + } +} \ No newline at end of file diff --git a/packages/Webkul/Tax/src/Repositories/TaxMapRepository.php b/packages/Webkul/Tax/src/Repositories/TaxMapRepository.php new file mode 100755 index 000000000..da7e40d0f --- /dev/null +++ b/packages/Webkul/Tax/src/Repositories/TaxMapRepository.php @@ -0,0 +1,50 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class TaxMapRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Tax\Contracts\TaxMap'; + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + $taxMap = $this->model->create($data); + + return $taxMap; + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute = "id") + { + $taxMap = $this->find($id); + + $taxMap->update($data); + + return $taxMap; + } +} \ No newline at end of file diff --git a/packages/Webkul/Tax/src/Repositories/TaxRateRepository.php b/packages/Webkul/Tax/src/Repositories/TaxRateRepository.php new file mode 100755 index 000000000..f3eee77d1 --- /dev/null +++ b/packages/Webkul/Tax/src/Repositories/TaxRateRepository.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class TaxRateRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\Tax\Contracts\TaxRate'; + } +} \ No newline at end of file diff --git a/packages/Webkul/Tax/src/resources/manifest.php b/packages/Webkul/Tax/src/resources/manifest.php new file mode 100644 index 000000000..4d0ec1557 --- /dev/null +++ b/packages/Webkul/Tax/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto Tax', + 'version' => '0.0.1' + ]; diff --git a/packages/Webkul/Theme/composer.json b/packages/Webkul/Theme/composer.json new file mode 100755 index 000000000..cf2e1f809 --- /dev/null +++ b/packages/Webkul/Theme/composer.json @@ -0,0 +1,25 @@ +{ + "name": "bagisto/laravel-theme", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\Theme\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Theme\\ThemeServiceProvider" + ], + "aliases": {} + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Theme/src/Exceptions/ThemeAlreadyExists.php b/packages/Webkul/Theme/src/Exceptions/ThemeAlreadyExists.php new file mode 100755 index 000000000..d2d27f433 --- /dev/null +++ b/packages/Webkul/Theme/src/Exceptions/ThemeAlreadyExists.php @@ -0,0 +1,10 @@ +name} already exists", 1); + } +} \ No newline at end of file diff --git a/packages/Webkul/Theme/src/Exceptions/ThemeNotFound.php b/packages/Webkul/Theme/src/Exceptions/ThemeNotFound.php new file mode 100755 index 000000000..a8aceca61 --- /dev/null +++ b/packages/Webkul/Theme/src/Exceptions/ThemeNotFound.php @@ -0,0 +1,8 @@ +make('themes'); + } +} + +if (! function_exists('bagisto_asset')) { + function bagisto_asset($path, $secure = null) + { + return themes()->url($path, $secure); + } +} + +if (! function_exists('view_render_event')) { + function view_render_event($eventName, $params = null) + { + app()->singleton(ViewRenderEventManager::class); + + $viewEventManager = app()->make(ViewRenderEventManager::class); + + $viewEventManager->handleRenderEvent($eventName, $params); + + return $viewEventManager->render(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Theme/src/Providers/.gitkeep b/packages/Webkul/Theme/src/Providers/.gitkeep new file mode 100755 index 000000000..e69de29bb diff --git a/packages/Webkul/Theme/src/Providers/ThemeServiceProvider.php b/packages/Webkul/Theme/src/Providers/ThemeServiceProvider.php new file mode 100755 index 000000000..a04a2fb18 --- /dev/null +++ b/packages/Webkul/Theme/src/Providers/ThemeServiceProvider.php @@ -0,0 +1,40 @@ +app->singleton('themes', function () { + return new Themes(); + }); + + $this->app->singleton('view.finder', function ($app) { + return new \Webkul\Theme\ThemeViewFinder( + $app['files'], + $app['config']['view.paths'], + null + ); + }); + } +} diff --git a/packages/Webkul/Theme/src/Theme.php b/packages/Webkul/Theme/src/Theme.php new file mode 100755 index 000000000..22d7e1fdc --- /dev/null +++ b/packages/Webkul/Theme/src/Theme.php @@ -0,0 +1,140 @@ +code = $code; + + $this->name = $name; + + $this->assetsPath = $assetsPath === null ? $code : $assetsPath; + + $this->viewsPath = $viewsPath === null ? $code : $viewsPath; + } + + /** + * Sets the parent + * + * @return void + */ + public function setParent(Theme $parent) + { + $this->parent = $parent; + } + + /** + * Return the parent + * + * @return mixed + */ + public function getParent() + { + return $this->parent; + } + + /** + * Return all the possible view paths + * + * @return array + */ + public function getViewPaths() + { + $paths = []; + + $theme = $this; + + do { + if (substr($theme->viewsPath, 0, 1) === DIRECTORY_SEPARATOR) { + $path = base_path(substr($theme->viewsPath, 1)); + } else { + $path = $theme->viewsPath; + } + + if (! in_array($path, $paths)) { + $paths[] = $path; + } + } while ($theme = $theme->parent); + + return $paths; + } + + /** + * Convert to asset url based on current theme + * + * @return mixed + */ + public function url($url, $secure = null) + { + $url = ltrim($url, '/'); + + if (preg_match('/^((http(s?):)?\/\/)/i', $url)) { + return $url; + } + + if (preg_match('/^((http(s?):)?\/\/)/i', $this->assetsPath)) { + return $this->assetsPath . '/' . $url; + } + + $fullUrl = str_replace("public/", "", $this->assetsPath) . '/' . $url; + + if (file_exists(public_path($fullUrl))) { + return asset($fullUrl, $secure); + } + + if ($parentTheme = $this->getParent()) { + return $parentTheme->url($url); + } + + return asset($url, $secure); + } +} \ No newline at end of file diff --git a/packages/Webkul/Theme/src/ThemeViewFinder.php b/packages/Webkul/Theme/src/ThemeViewFinder.php new file mode 100755 index 000000000..20d160aec --- /dev/null +++ b/packages/Webkul/Theme/src/ThemeViewFinder.php @@ -0,0 +1,85 @@ +parseNamespaceSegments($name); + + if ($namespace != 'admin') { + $paths = $this->addThemeNamespacePaths($namespace); + + // Find and return the view + return $this->findInPaths($view, $paths); + } else { + return $this->findInPaths($view, $this->hints[$namespace]); + } + } + + public function addThemeNamespacePaths($namespace) + { + if (! isset($this->hints[$namespace])) { + return []; + } + + $paths = $this->hints[$namespace]; + + $searchPaths = array_diff($this->paths, Themes::getLaravelViewPaths()); + + foreach (array_reverse($searchPaths) as $path) { + $newPath = base_path() . '/' . $path; + + $paths = Arr::prepend($paths, $newPath); + + } + + return $paths; + } + + /** + * Override replaceNamespace() to add path for custom error pages "resources/themes/theme_name/views/errors/..." + * + * @param string $namespace + * @param string|array $hints + * @return void + */ + public function replaceNamespace($namespace, $hints) + { + $this->hints[$namespace] = (array) $hints; + + // Overide Error Pages + if ($namespace == 'errors' || $namespace == 'mails') { + $searchPaths = array_diff($this->paths, Themes::getLaravelViewPaths()); + + $addPaths = array_map(function ($path) use ($namespace) { + return base_path() . '/' . "$path/$namespace"; + }, $searchPaths); + + $this->prependNamespace($namespace, $addPaths); + } + } + + /** + * Set the array of paths where the views are being searched. + * + * @param array $paths + */ + public function setPaths($paths) + { + $this->paths = $paths; + $this->flush(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Theme/src/Themes.php b/packages/Webkul/Theme/src/Themes.php new file mode 100755 index 000000000..a5b42e003 --- /dev/null +++ b/packages/Webkul/Theme/src/Themes.php @@ -0,0 +1,207 @@ +laravelViewsPath = Config::get('view.paths'); + + $this->defaultThemeCode = Config::get('themes.default', null); + + $this->loadThemes(); + } + + /** + * Return list of registered themes + * + * @return array + */ + public function all() + { + return $this->themes; + } + + /** + * Check if specified exists + * + * @return bool + */ + public function exists($themeName) + { + foreach ($this->themes as $theme) { + if ($theme->code == $themeName) { + return true; + } + } + + return false; + } + + + /** + * Prepare all themes + * + * @return Theme + */ + public function loadThemes() + { + $parentThemes = []; + $themes = config('themes.themes', []); + + foreach ($themes as $code => $data) { + $this->themes[] = new Theme( + $code, + isset($data['name']) ? $data['name'] : '', + isset($data['assets_path']) ? $data['assets_path'] : '', + isset($data['views_path']) ? $data['views_path'] : '' + ); + + if (isset($data['parent']) && $data['parent']) { + $parentThemes[$code] = $data['parent']; + } + } + + foreach ($parentThemes as $childCode => $parentCode) { + $child = $this->find($childCode); + + if ($this->exists($parentCode)) { + $parent = $this->find($parentCode); + } else { + $parent = new Theme($parentCode); + } + + $child->setParent($parent); + } + } + + /** + * Enable theme + * + * @return Theme + */ + public function set($themeName) + { + if ($this->exists($themeName)) { + $theme = $this->find($themeName); + } else { + $theme = new Theme($themeName); + } + + $this->activeTheme = $theme; + + $paths = $theme->getViewPaths(); + + foreach ($this->laravelViewsPath as $path) { + if (! in_array($path, $paths)) { + $paths[] = $path; + } + } + + Config::set('view.paths', $paths); + + $themeViewFinder = app('view.finder'); + $themeViewFinder->setPaths($paths); + + return $theme; + } + + /** + * Get current theme + * + * @return Theme + */ + public function current() + { + return $this->activeTheme ? $this->activeTheme : null; + } + + /** + * Get current theme's name + * + * @return string + */ + public function getName() + { + return $this->current() ? $this->current()->name : ''; + } + + /** + * Find a theme by it's name + * + * @return Theme + */ + public function find($themeName) + { + foreach ($this->themes as $theme) { + if ($theme->code == $themeName) { + return $theme; + } + } + + throw new Exceptions\ThemeNotFound($themeName); + } + + + /** + * Original view paths defined in config.view.php + * + * @return array + */ + public function getLaravelViewPaths() + { + return $this->laravelViewsPath; + } + + /** + * Return asset url of current theme + * + * @return string + */ + public function url($filename, $secure = null) + { + if (! $this->current()) { + return asset($filename, $secure); + } + + return $this->current()->url($filename, $secure); + } +} \ No newline at end of file diff --git a/packages/Webkul/Theme/src/ViewRenderEventManager.php b/packages/Webkul/Theme/src/ViewRenderEventManager.php new file mode 100755 index 000000000..50cc8aa12 --- /dev/null +++ b/packages/Webkul/Theme/src/ViewRenderEventManager.php @@ -0,0 +1,92 @@ +params = $params ?? []; + + Event::dispatch($eventName, $this); + + return $this->templates; + } + + /** + * get params + * + * @return array + */ + public function getParams() + { + return $this->params; + } + + /** + * get param + * + * @param $name + * + * @return mixed + */ + public function getParam($name) + { + return optional($this->params)[$name]; + } + + /** + * Add templates for render + * + * @param string $template + * @return void + */ + public function addTemplate($template) + { + array_push($this->templates, $template); + } + + /** + * Renders templates + * + * @return string + */ + public function render() + { + $string = ""; + + foreach ($this->templates as $template) { + if (view()->exists($template)) { + $string .= view($template , $this->params)->render(); + } + elseif (is_string($template)) { + $string .= $template; + } + } + + return $string; + } +} diff --git a/packages/Webkul/Ui/.gitignore b/packages/Webkul/Ui/.gitignore new file mode 100755 index 000000000..6376db975 --- /dev/null +++ b/packages/Webkul/Ui/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/package-lock.json +npm-debug.log \ No newline at end of file diff --git a/packages/Webkul/Ui/composer.json b/packages/Webkul/Ui/composer.json new file mode 100755 index 000000000..d4fee0754 --- /dev/null +++ b/packages/Webkul/Ui/composer.json @@ -0,0 +1,25 @@ +{ + "name": "bagisto/laravel-ui", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\Ui\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Ui\\Providers\\UiServiceProvider" + ], + "aliases": {} + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Ui/package.json b/packages/Webkul/Ui/package.json new file mode 100755 index 000000000..5afcb9705 --- /dev/null +++ b/packages/Webkul/Ui/package.json @@ -0,0 +1,29 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch-poll": "npm run watch -- --watch-poll", + "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", + "prod": "npm run production", + "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" + }, + "devDependencies": { + "axios": "^0.19.0", + "cross-env": "^6.0.3", + "flatpickr": "^4.6.3", + "jquery": "^3.4.1", + "laravel-mix": "^5.0.0", + "laravel-mix-merge-manifest": "^0.1.2", + "vue": "^2.6.10" + }, + "dependencies": { + "@babel/polyfill": "^7.7.0", + "tooltip.js": "^1.3.1", + "url-polyfill": "^1.1.5", + "url-search-params-polyfill": "^6.0.0", + "vue-multiselect": "^2.1.6", + "vue-swatches": "^1.0.3" + } +} diff --git a/packages/Webkul/Ui/publishable/assets/css/ui.css b/packages/Webkul/Ui/publishable/assets/css/ui.css new file mode 100644 index 000000000..3078a0825 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/css/ui.css @@ -0,0 +1 @@ +.active .cms-icon,.active.configuration-icon,.catalog-icon,.cms-icon,.configuration-icon,.customer-icon,.dashboard-icon,.promotion-icon,.sales-icon,.settings-icon{width:48px;height:48px;display:inline-block;background-size:cover}.icon{display:inline-block;background-size:cover}.dashboard-icon{background-image:url(../images/Icon-Dashboard.svg)}.sales-icon{background-image:url(../images/Icon-Sales.svg)}.catalog-icon{background-image:url(../images/Icon-Catalog.svg)}.customer-icon{background-image:url(../images/Icon-Customers.svg)}.configuration-icon{background-image:url(../images/Icon-Configure.svg)}.settings-icon{background-image:url(../images/Icon-Settings.svg)}.promotion-icon{background-image:url(../images/icon-promotion.svg)}.cms-icon{background-image:url(../images/Icon-CMS.svg)}.angle-right-icon{background-image:url(../images/Angle-Right.svg);width:17px;height:17px}.angle-left-icon{background-image:url(../images/Angle-Left.svg);width:17px;height:17px}.arrow-down-icon{background-image:url(../images/Arrow-Down-Light.svg);width:14px;height:8px}.arrow-right-icon{background-image:url(../images/Arrow-Right.svg);width:18px;height:18px}.white-cross-sm-icon{background-image:url(../images/Icon-Sm-Cross-White.svg);width:18px;height:18px}.accordian-up-icon{background-image:url(../images/Accordion-Arrow-Up.svg);width:24px;height:24px}.accordian-down-icon{background-image:url(../images/Accordion-Arrow-Down.svg);width:24px;height:24px}.cross-icon{background-image:url(../images/Icon-Crossed.svg);width:18px;height:18px}.trash-icon{background-image:url(../images/Icon-Trash.svg);width:24px;height:24px}.remove-icon{background-image:url(../images/Icon-remove.svg);width:24px;height:24px}.pencil-lg-icon{background-image:url(../images/Icon-Pencil-Large.svg);width:24px;height:24px}.eye-icon{background-image:url(../images/Icon-eye.svg);width:24px;height:24px}.search-icon{background-image:url(../images/icon-search.svg);width:24px;height:24px}.sortable-icon{background-image:url(../images/Icon-Sortable.svg);width:24px;height:24px}.sort-down-icon,.sort-up-icon{background-image:url(../images/Icon-Sort-Down.svg);width:18px;height:18px}.sort-up-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.primary-back-icon{background-image:url(../images/Icon-Back-Primary.svg);width:24px;height:24px}.checkbox-dash-icon{background-image:url(../images/Checkbox-Dash.svg);width:24px;height:24px}.account-icon{background-image:url(../images/icon-account.svg);width:24px;height:24px}.expand-icon{background-image:url(../images/Expand-Light.svg);width:18px;height:18px}.expand-on-icon{background-image:url(../images/Expand-Light-On.svg);width:18px;height:18px}.dark-left-icon{background-image:url(../images/arrow-left-dark.svg);width:18px;height:18px}.light-right-icon{background-image:url(../images/arrow-right-light.svg);width:18px;height:18px}.folder-icon{background-image:url(../images/Folder-Icon.svg);width:24px;height:24px}.star-icon{background-image:url(../images/Star-Icon.svg);width:24px;height:24px}.arrow-down-white-icon{background-image:url(../images/down-arrow-white.svg);width:17px;height:13px}.arrow-up-white-icon{background-image:url(../images/up-arrow-white.svg);width:17px;height:13px}.profile-pic-icon{background-image:url(../images/Profile-Pic.svg);width:60px;height:60px}.graph-up-icon{background-image:url(../images/Icon-Graph-Green.svg);width:24px;height:24px}.graph-down-icon{background-image:url(../images/Icon-Graph-Red.svg);width:24px;height:24px}.no-result-icon{background-image:url(../images/limited-icon.svg);width:52px;height:47px}.note-icon{background-image:url(../images/icon-note.svg)}.list-icon,.note-icon{width:24px;height:24px}.list-icon{background-image:url(../images/Icon-Listing.svg)}.active .dashboard-icon{background-image:url(../images/Icon-Dashboard-Active.svg)}.active .sales-icon{background-image:url(../images/Icon-Sales-Active.svg)}.active .catalog-icon{background-image:url(../images/Icon-Catalog-Active.svg)}.active .customer-icon{background-image:url(../images/Icon-Customers-Active.svg)}.active .settings-icon{background-image:url(../images/Icon-Settings-Active.svg)}.active .configuration-icon{background-image:url(../images/Icon-Configure-Active.svg)}.active .promotion-icon{background-image:url(../images/icon-promotion-active.svg)}.active .cms-icon{background-image:url(../images/Icon-CMS-Active.svg)}.active>.arrow-down-icon{background-image:url(../images/Arrow-Down.svg);width:14px;height:8px}.active>.expand-icon{background-image:url(../images/Expand-Light-On.svg)}.active.dashboard-icon{background-image:url(../images/Icon-Dashboard-Active.svg)}.active.customer-icon{background-image:url(../images/Icon-Customers-Active.svg)}.active.sales-icon{background-image:url(../images/Icon-Sales-Active.svg)}.active.settings-icon{background-image:url(../images/Icon-Settings-Active.svg)}.active.configuration-icon{background-image:url(../images/Icon-Configure-Active.svg)}.active.arrow-down-icon{background-image:url(../images/Arrow-Down.svg);width:14px;height:8px}.active.expand-icon{background-image:url(../images/Expand-Light-On.svg)}.icon-404{background-image:url(../images/404-image.svg);width:255px;height:255px}.export-icon{background-image:url(../images/Icon-Export.svg);width:32px;height:32px}.import-icon{background-image:url(../images/Icon-Import.svg);width:32px;height:32px}.star-blue-icon{width:17px;height:17px;background-image:url(../images/Icon-star.svg)}.grid-container{display:block;width:100%}.filter-row-one{display:-webkit-inline-box;display:inline-flex;width:100%;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center;margin-bottom:20px}.filter-row-one .dropdown-filters{position:absolute;right:25px}.filter-row-one .per-page{right:250px}.filter-row-one .per-page .per-page-label{position:absolute;right:120px;width:100%;top:8px}.filter-row-two{-webkit-box-align:start;align-items:flex-start;flex-wrap:wrap;margin-bottom:10px}.filter-row-two,.search-filter{display:-webkit-inline-box;display:inline-flex}.search-filter .control{font-size:15px;border:2px solid #c7c7c7;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-radius:3px;height:36px;width:280px;padding-left:10px}.search-filter .contorl:focus{border-color:#0041ff}.search-filter .icon-wrapper{border:2px solid #c7c7c7;border-radius:3px;border-top-left-radius:0;border-bottom-left-radius:0;height:36px;width:36px;margin-left:-1px}.search-filter .icon-wrapper .search-icon{margin-top:3px;margin-left:3px}.grid-dropdown-header{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center;height:36px;width:200px;border:2px solid #c7c7c7;border-radius:3px;color:#8e8e8e;padding:0 5px}.grid-dropdown-header .arrow-icon-down{float:right}.dropdown-list.dropdown-container{padding:15px;width:100%;top:43px}.dropdown-list.dropdown-container ul li .control-group{margin-bottom:15px}.dropdown-list.dropdown-container .apply-filter{padding:10px;width:100%}.filter-tag{-webkit-box-pack:justify;justify-content:space-between;margin-right:20px}.filter-tag,.filter-tag .wrapper{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center;font-size:14px;height:28px;border-radius:2px}.filter-tag .wrapper{margin-left:10px;padding:5px 10px;background:#e7e7e7;color:#000311;letter-spacing:-.22px}.filter-tag .wrapper .icon.cross-icon{margin-left:10px;cursor:pointer}@-webkit-keyframes jelly{0%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}70%{-webkit-transform:translateY(5px) scale(1.05);transform:translateY(5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}}@keyframes jelly{0%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}70%{-webkit-transform:translateY(5px) scale(1.05);transform:translateY(5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}}@-webkit-keyframes jelly-out{0%{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}30%{-webkit-transform:translateY(-5px) scale(1.05);transform:translateY(-5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}}@keyframes jelly-out{0%{-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1);opacity:1}30%{-webkit-transform:translateY(-5px) scale(1.05);transform:translateY(-5px) scale(1.05);opacity:1}to{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:0}}*{box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:focus{outline:none}.mb-10{margin-bottom:10px}.mb-15{margin-bottom:15px}.mb-20{margin-bottom:20px}.mb-25{margin-bottom:25px}.mb-30{margin-bottom:30px}.mb-35{margin-bottom:35px}.mb-40{margin-bottom:40px}.mb-45{margin-bottom:45px}.mb-50{margin-bottom:50px}.mb-60{margin-bottom:60px}.mb-70{margin-bottom:70px}.mb-80{margin-bottom:80px}.mb-90{margin-bottom:90px}.mt-5{margin-top:5px}.mt-10{margin-top:10px}.mt-15{margin-top:15px}.mt-20{margin-top:20px}.mt-25{margin-top:25px}.mt-30{margin-top:30px}.mt-35{margin-top:35px}.mt-40{margin-top:40px}.mt-45{margin-top:45px}.mt-50{margin-top:50px}.mt-60{margin-top:60px}.mt-70{margin-top:70px}.mt-80{margin-top:80px}.mt-90{margin-top:90px}body{letter-spacing:-.26px;line-height:19px}a:active,a:focus,a:hover,a:link,a:visited{text-decoration:none;color:#0041ff}::-moz-selection{background-color:rgba(0,64,255,.6);color:#fff}::selection{background-color:rgba(0,64,255,.6);color:#fff}textarea{resize:none}ul{margin:0;padding:0;list-style:none}h1{font-size:28px;margin-top:0}h1,h2{color:#3a3a3a}h2{font-size:24px}h3{font-size:20px}h3,h4{color:#3a3a3a}h4{font-size:16px}h5{font-size:12px;color:#3a3a3a}.hide{display:none!important}.row{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center}.btn{box-shadow:0 1px 4px 0 rgba(0,0,0,.2),0 0 8px 0 rgba(0,0,0,.1);border-radius:3px;border:none;color:#fff;cursor:pointer;-webkit-transition:.2s cubic-bezier(.4,0,.2,1);transition:.2s cubic-bezier(.4,0,.2,1);font:inherit;display:inline-block}.btn:active,.btn:focus,.btn:hover{opacity:.75;border:none}.btn.btn-sm{padding:6px 12px}.btn.btn-md{padding:8px 16px}.btn.btn-lg{padding:10px 20px}.btn.btn-xl{padding:12px 24px;font-size:16px}.btn.btn-primary{background:#0041ff;color:#fff}.btn.btn-black{background:#000;color:#fff}.btn.btn-white{background:#fff;color:#000}.btn:disabled,.btn[disabled=disabled],.btn[disabled=disabled]:active,.btn[disabled=disabled]:hover{cursor:not-allowed;background:#b1b1ae;box-shadow:none;opacity:1}.dropdown-btn{min-width:150px;text-align:left;background:#fff;border:2px solid #c7c7c7;border-radius:3px;font-size:14px;padding:8px 35px 8px 10px;cursor:pointer;position:relative}.dropdown-btn:active,.dropdown-btn:focus,.dropdown-btn:hover{opacity:.75;border:2px solid #c7c7c7}.dropdown-btn .icon{position:absolute;right:10px;top:50%;margin-top:-4px}.dropdown-toggle{cursor:pointer}.dropdown-open{position:relative}.dropdown-list{width:200px;margin-bottom:20px;box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 0 9px 0 rgba(0,0,0,.16);border-radius:3px;background-color:#fff;position:absolute;display:none;z-index:10;text-align:left}.dropdown-list.bottom-left{top:42px;left:0}.dropdown-list.bottom-right{top:42px;right:0}.dropdown-list.top-left{bottom:0;left:42px}.dropdown-list.top-right{bottom:0;right:42px}.dropdown-list .search-box{padding:20px;border-bottom:1px solid #e8e8e8}.dropdown-list .search-box .control{background:#fff;border:2px solid #c7c7c7;border-radius:3px;width:100%;height:36px;display:inline-block;vertical-align:middle;-webkit-transition:.2s cubic-bezier(.4,0,.2,1);transition:.2s cubic-bezier(.4,0,.2,1);padding:0 10px;font-size:15px}.dropdown-list .search-box .control:focus{border-color:#0041ff}.dropdown-list .dropdown-container{padding:20px;overflow-y:auto}.dropdown-list .dropdown-container label{font-size:15px;display:inline-block;text-transform:uppercase;color:#9e9e9e;font-weight:700;padding-bottom:5px}.dropdown-list .dropdown-container ul{margin:0;list-style-type:none;padding:0}.dropdown-list .dropdown-container ul li{padding:5px 0}.dropdown-list .dropdown-container ul li a:active,.dropdown-list .dropdown-container ul li a:focus,.dropdown-list .dropdown-container ul li a:link,.dropdown-list .dropdown-container ul li a:visited{color:#333;display:block}.dropdown-list .dropdown-container ul li a:hover{color:#0041ff}.dropdown-list .dropdown-container ul li .checkbox{margin:0}.dropdown-list .dropdown-container ul li .control-group label{color:#3a3a3a;font-size:15px;font-weight:500;text-transform:capitalize;width:100%}.dropdown-list .dropdown-container .btn{width:100%;margin-top:10px}.section .secton-title{font-size:18px;color:#8e8e8e;padding:15px 0;border-bottom:1px solid #e8e8e8}.section .section-content{display:block;padding:20px 0}.section .section-content .row{display:block;padding:7px 0}.section .section-content .row .title{width:200px}.section .section-content .row .title,.section .section-content .row .value{color:#3a3a3a;letter-spacing:-.26px;display:inline-block}.table{width:100%}.table table{border-collapse:collapse;text-align:left;width:100%}.table table thead th{font-weight:700;padding:12px 10px;background:#f8f9fa;color:#3a3a3a}.table table tbody td{padding:10px;border-bottom:1px solid #d3d3d3;color:#3a3a3a;vertical-align:top}.table table tbody td.actions .action{display:-webkit-inline-box;display:inline-flex}.table table tbody td.actions .icon{cursor:pointer;vertical-align:middle}.table table tbody td.empty{text-align:center}.table table tbody tr:last-child td{border-bottom:none}.table .control-group{width:100%;margin-bottom:0;min-width:140px}.table .control-group .control{width:100%;margin:0}.pagination .page-item{background:#fff;border:2px solid #c7c7c7;border-radius:3px;padding:7px 14px;margin-right:5px;font-size:16px;display:inline-block;color:#8e8e8e;vertical-align:middle;text-decoration:none}.pagination .page-item.next,.pagination .page-item.previous{padding:6px 9px}.pagination .page-item.active{background:#0041ff;color:#fff;border-color:#0041ff}.pagination .page-item .icon{vertical-align:middle;margin-bottom:3px}.checkbox{position:relative;display:block}.checkbox input{left:0;opacity:0;position:absolute;top:0;height:24px;width:24px;z-index:100}.checkbox .checkbox-view{background-image:url(../images/Checkbox.svg);height:24px;width:24px;display:inline-block!important;vertical-align:middle;margin:0 5px 0 0}.checkbox input:checked+.checkbox-view{background-image:url(../images/Checkbox-Checked.svg)}.checkbox input:disabled+.checkbox-view{opacity:.5;cursor:not-allowed}.radio{position:relative;display:block;margin:10px 5px 5px 0}.radio input{left:0;opacity:0;position:absolute;top:0;z-index:100}.radio .radio-view{background-image:url(../images/controls.svg);background-position:-21px 0;height:20px;width:20px;display:inline-block!important;vertical-align:middle;margin:0 5px 0 0}.radio input:checked+.radio-view{background-position:-21px -21px}.radio input:disabled+.radio-view{opacity:.5;cursor:not-allowed}.control-group{display:block;margin-bottom:25px;font-size:15px;color:#333;width:750px;max-width:100%;position:relative}.control-group label{display:block;color:#3a3a3a}.control-group label.required:after{content:"*";color:#fc6868;font-weight:700;display:inline-block}.control-group textarea.control{height:100px;padding:10px}.control-group .control{background:#fff;border:2px solid #c7c7c7;border-radius:3px;width:70%;height:36px;display:inline-block;vertical-align:middle;-webkit-transition:.2s cubic-bezier(.4,0,.2,1);transition:.2s cubic-bezier(.4,0,.2,1);padding:0 10px;font-size:15px;margin-top:10px;margin-bottom:5px}.control-group .control:focus{border-color:#0041ff}.control-group .control[disabled=disabled]{border-color:#d3d3d3;background-color:#d3d3d3;cursor:not-allowed}.control-group .control[multiple]{height:100px}.control-group.date:after,.control-group.datetime:after{background-image:url(../images/Icon-Calendar.svg);width:24px;height:24px;content:"";display:inline-block;vertical-align:middle;margin-left:-34px;margin-top:2px;pointer-events:none}.control-group .control-info{display:block;font-size:14px;color:#6f6f6f;font-style:italic}.control-group .control-error{display:none;color:#ff5656;margin-top:5px}.control-group.has-error .control{border-color:#fc6868}.control-group.has-error .control-error{display:block}.control-group.price .currency-code{vertical-align:middle;display:inline-block}.control-group .switch{position:relative;display:inline-block;width:60px;height:34px;margin-top:10px;margin-bottom:5px}.control-group .switch input{opacity:0;width:0;height:0}.control-group .slider{cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#8e8e8e}.control-group .slider,.control-group .slider:before{position:absolute;-webkit-transition:.2s;transition:.2s}.control-group .slider:before{content:"";height:26px;width:26px;left:4px;bottom:4px;background-color:#fff}.control-group input:checked+.slider{background-color:#0041ff}.control-group input:focus+.slider{box-shadow:0 0 1px #0041ff}.control-group input:checked+.slider:before{-webkit-transform:translateX(26px);transform:translateX(26px)}.control-group .slider.round{border-radius:34px}.control-group .slider.round:before{border-radius:50%}.button-group{margin-top:20px;margin-bottom:20px}.alert-wrapper{width:300px;top:10px;right:10px;position:fixed;z-index:100;text-align:left}.alert-wrapper .alert{width:300px;padding:15px;border-radius:3px;display:inline-block;box-shadow:0 4px 15.36px .64px rgba(0,0,0,.1),0 2px 6px 0 rgba(0,0,0,.12);position:relative;-webkit-animation:jelly .5s ease-in-out;animation:jelly .5s ease-in-out;-webkit-transform-origin:center top;transform-origin:center top;z-index:500;margin-bottom:10px}.alert-wrapper .alert.alert-error{background:#fc6868}.alert-wrapper .alert.alert-info{background:#204d74}.alert-wrapper .alert.alert-success{background:#4caf50}.alert-wrapper .alert.alert-warning{background:#ffc107}.alert-wrapper .alert .icon{position:absolute;right:10px;top:10px;cursor:pointer}.alert-wrapper .alert p{color:#fff;margin:0;padding:0;font-size:15px}.tabs ul{border-bottom:1px solid #e8e8e8}.tabs ul li{display:inline-block}.tabs ul li a{padding:15px 20px;cursor:pointer;margin:0 2px;text-align:center;color:#000311;display:block}.tabs ul li.active a{border-bottom:3px solid #0041ff}.accordian,accordian{display:inline-block;width:100%}.accordian .accordian-header,.accordian div[slot*=header],accordian .accordian-header,accordian div[slot*=header]{width:100%;display:inline-block;font-size:18px;color:#3a3a3a;border-top:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8;padding:20px 15px;cursor:pointer;margin-top:-1px}.accordian .accordian-header .expand-icon,.accordian div[slot*=header] .expand-icon,accordian .accordian-header .expand-icon,accordian div[slot*=header] .expand-icon{background-image:url(../images/Expand-Light.svg);margin-right:10px;margin-top:3px}.accordian .accordian-header h1,.accordian div[slot*=header] h1,accordian .accordian-header h1,accordian div[slot*=header] h1{margin:0;font-size:20px;font-weight:500;display:inline-block}.accordian .accordian-header .icon,.accordian div[slot*=header] .icon,accordian .accordian-header .icon,accordian div[slot*=header] .icon{float:right}.accordian .accordian-header .icon.left,.accordian div[slot*=header] .icon.left,accordian .accordian-header .icon.left,accordian div[slot*=header] .icon.left{float:left}.accordian.error .accordian-header,accordian.error .accordian-header{color:#ff5656}.accordian .accordian-content,.accordian div[slot*=body],accordian .accordian-content,accordian div[slot*=body]{width:100%;padding:20px 15px;display:none;-webkit-transition:all .3s ease;transition:all .3s ease}.accordian.active>.accordian-content,accordian.active>.accordian-content{display:inline-block}.accordian.active>.accordian-header .expand-icon,accordian.active>.accordian-header .expand-icon{background-image:url(../images/Expand-Light-On.svg)}.tree-container .tree-item{padding-left:30px;display:inline-block;margin-top:10px;width:100%}.tree-container .tree-item>.tree-item{display:none}.tree-container .tree-item.active>.tree-item{display:inline-block}.tree-container .tree-item .checkbox,.tree-container .tree-item .radio{margin:0;display:inline-block}.tree-container .tree-item .expand-icon{display:inline-block;margin-right:10px;cursor:pointer;background-image:url(../images/Expand-Light.svg);width:18px;height:18px;vertical-align:middle}.tree-container .tree-item .folder-icon{vertical-align:middle;margin-right:10px}.tree-container .tree-item.active>.expand-icon{background-image:url(../images/Expand-Light-On.svg)}.tree-container>.tree-item{padding-left:0}.panel{box-shadow:0 2px 25px 0 rgba(0,0,0,.15);border-radius:5px;background:#fff}.panel .panel-content{padding:20px}modal{display:none}.modal-open{overflow:hidden}.modal-overlay{display:none;overflow-y:auto;z-index:10;top:0;right:0;bottom:0;left:0;position:fixed;background:#000;opacity:.7}.modal-open .modal-overlay{display:block}.modal-container{background:#fff;top:100px;width:600px;max-width:80%;left:50%;margin-left:-300px;position:fixed;z-index:11;box-shadow:0 15px 25px 0 rgba(0,0,0,.03),0 20px 45px 5px rgba(0,0,0,.2);-webkit-animation:fade-in-white .3s ease-in-out;animation:fade-in-white .3s ease-in-out;-webkit-animation:jelly .5s ease-in-out;animation:jelly .5s ease-in-out;border-radius:5px;overflow-y:auto;max-height:80%}.modal-container .modal-header{padding:20px}.modal-container .modal-header h3{display:inline-block;font-size:20px;color:#3a3a3a;margin:0}.modal-container .modal-header .icon{float:right;cursor:pointer}.modal-container .modal-body{padding:20px}.modal-container .modal-body .control-group .control{width:100%}@media only screen and (max-width:770px){.modal-container{max-width:80%;left:10%;margin-left:0}}.label{background:#e7e7e7;border-radius:2px;padding:8px;color:#000311;display:inline-block}.label.label-sm{padding:5px}.label.label-md{padding:8px}.label.label-lg{padding:11px}.label.label-xl{padding:14px}.badge{border-radius:50px;color:#fff;padding:8px;white-space:nowrap}.badge.badge-sm{padding:5px}.badge.badge-md{padding:3px 10px}.badge.badge-lg{padding:11px}.badge.badge-xl{padding:14px}.badge.badge-success{background-color:#4caf50}.badge.badge-info{background-color:#0041ff}.badge.badge-danger{background-color:#fc6868}.badge.badge-warning{background-color:#ffc107}.image-wrapper{margin-bottom:20px;margin-top:10px;display:inline-block;width:100%}.image-wrapper .image-item{width:200px;height:200px;margin-right:20px;background:#f8f9fa;border-radius:3px;display:inline-block;position:relative;background-image:url(../images/placeholder-icon.svg);background-repeat:no-repeat;background-position:50%;margin-bottom:20px;float:left}.image-wrapper .image-item img.preview{width:100%;height:100%}.image-wrapper .image-item input{display:none}.image-wrapper .image-item .remove-image{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.08)),to(rgba(0,0,0,.24)));background-image:linear-gradient(-180deg,rgba(0,0,0,.08),rgba(0,0,0,.24));border-radius:0 0 4px 4px;position:absolute;bottom:0;width:100%;padding:10px;text-align:center;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.24);margin-right:20px;cursor:pointer}.image-wrapper .image-item:hover .remove-image{display:block}.image-wrapper .image-item.has-image{background-image:none}.vue-swatches__trigger{border:1px solid #d3d3d3}.helper-container{display:block}.helper-container .group code{font-weight:700} \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/404-image.svg b/packages/Webkul/Ui/publishable/assets/images/404-image.svg new file mode 100755 index 000000000..8b7106715 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/404-image.svg @@ -0,0 +1,26 @@ + + + + 404-image + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Accordion-Arrow-Down.svg b/packages/Webkul/Ui/publishable/assets/images/Accordion-Arrow-Down.svg new file mode 100755 index 000000000..89a62ef4b --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Accordion-Arrow-Down.svg @@ -0,0 +1,11 @@ + + + + Accordion-Arrow-Down + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Accordion-Arrow-Up.svg b/packages/Webkul/Ui/publishable/assets/images/Accordion-Arrow-Up.svg new file mode 100755 index 000000000..e324e7362 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Accordion-Arrow-Up.svg @@ -0,0 +1,11 @@ + + + + Accordion-Arrow-Up + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Angle-Down-Light.svg b/packages/Webkul/Ui/publishable/assets/images/Angle-Down-Light.svg new file mode 100755 index 000000000..7b38bfe7f --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Angle-Down-Light.svg @@ -0,0 +1,12 @@ + + + + Expand-Light-On + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Angle-Left.svg b/packages/Webkul/Ui/publishable/assets/images/Angle-Left.svg new file mode 100755 index 000000000..b8dce0f2b --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Angle-Left.svg @@ -0,0 +1,12 @@ + + + + Angle-Left + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Angle-Right-Light.svg b/packages/Webkul/Ui/publishable/assets/images/Angle-Right-Light.svg new file mode 100755 index 000000000..7b38bfe7f --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Angle-Right-Light.svg @@ -0,0 +1,12 @@ + + + + Expand-Light-On + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Angle-Right.svg b/packages/Webkul/Ui/publishable/assets/images/Angle-Right.svg new file mode 100755 index 000000000..52fbccde3 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Angle-Right.svg @@ -0,0 +1,10 @@ + + + + Angle-Right + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Arrow-Down-Light.png b/packages/Webkul/Ui/publishable/assets/images/Arrow-Down-Light.png new file mode 100755 index 0000000000000000000000000000000000000000..5070f117d5044a3feaadc8390e84bc39b64bfef0 GIT binary patch literal 264 zcmV+j0r&oiP)+9=cU|=W(Vq(E%Mn*^XVzqykWv0U@104G)0W zv9Pf44HJ;@-@w2i1*mBYK8-+iubG&b+<=;%gVZsB2uDZ9KQb~hVL-{FAU+oG8K}uK zKR^FAOb)CO#0d)v`_9hJ?hDj>1ttlle=##N2Ld&nMHYu^1PNwkWxZ!%VQ~jCA3_!V z1KJb=)U+4Mhf^pTL87_2xzE_x*xW#V0^*#4f`Zj>)x + + + Arrow-Down-Light + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Arrow-Down.svg b/packages/Webkul/Ui/publishable/assets/images/Arrow-Down.svg new file mode 100755 index 000000000..e409b8f2f --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Arrow-Down.svg @@ -0,0 +1,10 @@ + + + + Arrow-Down + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Arrow-Right.svg b/packages/Webkul/Ui/publishable/assets/images/Arrow-Right.svg new file mode 100755 index 000000000..745e57d6e --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Arrow-Right.svg @@ -0,0 +1,12 @@ + + + + Expand-Light + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Checkbox-Checked.svg b/packages/Webkul/Ui/publishable/assets/images/Checkbox-Checked.svg new file mode 100755 index 000000000..914ad34cd --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Checkbox-Checked.svg @@ -0,0 +1,13 @@ + + + + Checkbox-Checked + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Checkbox-Dash.svg b/packages/Webkul/Ui/publishable/assets/images/Checkbox-Dash.svg new file mode 100755 index 000000000..ada6ecac7 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Checkbox-Dash.svg @@ -0,0 +1,11 @@ + + + + Checkbox-Dash + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Checkbox.svg b/packages/Webkul/Ui/publishable/assets/images/Checkbox.svg new file mode 100755 index 000000000..a096458fa --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Checkbox.svg @@ -0,0 +1,10 @@ + + + + Checkbox + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Expand-Light-On.svg b/packages/Webkul/Ui/publishable/assets/images/Expand-Light-On.svg new file mode 100755 index 000000000..7b38bfe7f --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Expand-Light-On.svg @@ -0,0 +1,12 @@ + + + + Expand-Light-On + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Expand-Light.svg b/packages/Webkul/Ui/publishable/assets/images/Expand-Light.svg new file mode 100755 index 000000000..745e57d6e --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Expand-Light.svg @@ -0,0 +1,12 @@ + + + + Expand-Light + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Folder-Icon.svg b/packages/Webkul/Ui/publishable/assets/images/Folder-Icon.svg new file mode 100755 index 000000000..48717d78b --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Folder-Icon.svg @@ -0,0 +1,10 @@ + + + + Folder-Icon + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Back-Primary.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Back-Primary.svg new file mode 100755 index 000000000..dffb85643 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Back-Primary.svg @@ -0,0 +1,13 @@ + + + + Icon-Back-Primary + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-CMS-Active.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-CMS-Active.svg new file mode 100644 index 000000000..3434819bc --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-CMS-Active.svg @@ -0,0 +1,15 @@ + + + + Icon-CMS-Active + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-CMS.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-CMS.svg new file mode 100644 index 000000000..347509b21 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-CMS.svg @@ -0,0 +1,14 @@ + + + + Icon-CMS + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Calendar.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Calendar.svg new file mode 100755 index 000000000..1d5ab01f3 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Calendar.svg @@ -0,0 +1,16 @@ + + + + Icon-Calendar + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Catalog-Active.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Catalog-Active.svg new file mode 100755 index 000000000..ba35b9621 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Catalog-Active.svg @@ -0,0 +1,16 @@ + + + + Icon-Catalog-Active + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Catalog.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Catalog.svg new file mode 100755 index 000000000..f7453ca83 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Catalog.svg @@ -0,0 +1,16 @@ + + + + Icon-Catalog + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Configure-Active.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Configure-Active.svg new file mode 100755 index 000000000..dde090ee9 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Configure-Active.svg @@ -0,0 +1,13 @@ + + + + Icon-Configure-Active + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Configure.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Configure.svg new file mode 100755 index 000000000..57526d0bc --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Configure.svg @@ -0,0 +1,13 @@ + + + + Icon-Configure + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Crossed.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Crossed.svg new file mode 100755 index 000000000..038759b1b --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Crossed.svg @@ -0,0 +1,10 @@ + + + + Icon-Crossed + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Customers-Active.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Customers-Active.svg new file mode 100755 index 000000000..1ace763d9 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Customers-Active.svg @@ -0,0 +1,12 @@ + + + + Icon-Customers-Active + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Customers.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Customers.svg new file mode 100755 index 000000000..1e67c6ba3 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Customers.svg @@ -0,0 +1,12 @@ + + + + Icon-Customers + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Dashboard-Active.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Dashboard-Active.svg new file mode 100755 index 000000000..555a5b166 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Dashboard-Active.svg @@ -0,0 +1,15 @@ + + + + Icon-Dashboard-Active + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Dashboard.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Dashboard.svg new file mode 100755 index 000000000..0878093a7 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Dashboard.svg @@ -0,0 +1,15 @@ + + + + Icon-Dashboard + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Export.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Export.svg new file mode 100755 index 000000000..2d10a5d73 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Export.svg @@ -0,0 +1,14 @@ + + + + Icon-Export + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Graph-Green.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Graph-Green.svg new file mode 100755 index 000000000..ba589b67d --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Graph-Green.svg @@ -0,0 +1,14 @@ + + + + Icon-Graph-Green + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Graph-Red.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Graph-Red.svg new file mode 100755 index 000000000..5458a660f --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Graph-Red.svg @@ -0,0 +1,14 @@ + + + + Icon-Graph-Red + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Import.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Import.svg new file mode 100644 index 000000000..713ec6486 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Import.svg @@ -0,0 +1,14 @@ + + + + Icon-Import + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Listing.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Listing.svg new file mode 100644 index 000000000..d8cd8fd27 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Listing.svg @@ -0,0 +1,27 @@ + + + + Listing + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Pencil-Large.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Pencil-Large.svg new file mode 100755 index 000000000..3c9ee9a97 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Pencil-Large.svg @@ -0,0 +1,13 @@ + + + + Icon-Pencil-Large + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Sales-Active.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Sales-Active.svg new file mode 100755 index 000000000..b0f56bbfc --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Sales-Active.svg @@ -0,0 +1,14 @@ + + + + Icon-Sales-Active + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Sales.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Sales.svg new file mode 100755 index 000000000..1b69ab694 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Sales.svg @@ -0,0 +1,14 @@ + + + + Icon-Sales + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Settings-Active.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Settings-Active.svg new file mode 100755 index 000000000..57a15c450 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Settings-Active.svg @@ -0,0 +1,13 @@ + + + + Icon-Settings-Active + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Settings.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Settings.svg new file mode 100755 index 000000000..8a40b3144 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Settings.svg @@ -0,0 +1,13 @@ + + + + Icon-Settings + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Sm-Cross-White.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Sm-Cross-White.svg new file mode 100755 index 000000000..77c8ff3cf --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Sm-Cross-White.svg @@ -0,0 +1,13 @@ + + + + Icon-Sm-Cross + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Sm-White-Cross.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Sm-White-Cross.svg new file mode 100755 index 000000000..77c8ff3cf --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Sm-White-Cross.svg @@ -0,0 +1,13 @@ + + + + Icon-Sm-Cross + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Sort-Down.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Sort-Down.svg new file mode 100755 index 000000000..614a36b20 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Sort-Down.svg @@ -0,0 +1,13 @@ + + + + Icon-Sort-Down + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Sort-Up.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Sort-Up.svg new file mode 100755 index 000000000..1c9462c2b --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Sort-Up.svg @@ -0,0 +1,23 @@ + + + + Icon-Sort-Down + Created with Sketch. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Sortable.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Sortable.svg new file mode 100755 index 000000000..ba23da4ab --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Sortable.svg @@ -0,0 +1,14 @@ + + + + Icon-Sortable + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-Trash.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-Trash.svg new file mode 100755 index 000000000..0267d04ce --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-Trash.svg @@ -0,0 +1,14 @@ + + + + Icon-Trash + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-eye.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-eye.svg new file mode 100755 index 000000000..04b228c94 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-eye.svg @@ -0,0 +1,11 @@ + + + + Icon-Delete + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-remove.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-remove.svg new file mode 100755 index 000000000..30faa6d06 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-remove.svg @@ -0,0 +1,14 @@ + + + + Icon-remove + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Icon-star.svg b/packages/Webkul/Ui/publishable/assets/images/Icon-star.svg new file mode 100644 index 000000000..441bc282d --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Icon-star.svg @@ -0,0 +1,10 @@ + + + + Icon-star + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Profile-Pic.svg b/packages/Webkul/Ui/publishable/assets/images/Profile-Pic.svg new file mode 100755 index 000000000..737ae019a --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Profile-Pic.svg @@ -0,0 +1,15 @@ + + + + Profile-Pic + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/Star-Icon.svg b/packages/Webkul/Ui/publishable/assets/images/Star-Icon.svg new file mode 100755 index 000000000..89c223721 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/Star-Icon.svg @@ -0,0 +1,10 @@ + + + + star + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/arrow-left-dark.svg b/packages/Webkul/Ui/publishable/assets/images/arrow-left-dark.svg new file mode 100755 index 000000000..fcc05f15b --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/arrow-left-dark.svg @@ -0,0 +1,12 @@ + + + + arrow-left-dark + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/arrow-right-light.svg b/packages/Webkul/Ui/publishable/assets/images/arrow-right-light.svg new file mode 100755 index 000000000..7dd02995b --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/arrow-right-light.svg @@ -0,0 +1,12 @@ + + + + arrow-right-light + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/check-accent.svg b/packages/Webkul/Ui/publishable/assets/images/check-accent.svg new file mode 100755 index 000000000..8334c776f --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/check-accent.svg @@ -0,0 +1,10 @@ + + + + Check-Accent + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/controls.svg b/packages/Webkul/Ui/publishable/assets/images/controls.svg new file mode 100755 index 000000000..53127ff1c --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/controls.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/Webkul/Ui/publishable/assets/images/cross-accent.svg b/packages/Webkul/Ui/publishable/assets/images/cross-accent.svg new file mode 100755 index 000000000..be351129d --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/cross-accent.svg @@ -0,0 +1,11 @@ + + + + Cross-Accent + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/cross-icon-adj.svg b/packages/Webkul/Ui/publishable/assets/images/cross-icon-adj.svg new file mode 100755 index 000000000..d62bc542c --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/cross-icon-adj.svg @@ -0,0 +1,11 @@ + + + + Artboard + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/cross-icon.svg b/packages/Webkul/Ui/publishable/assets/images/cross-icon.svg new file mode 100755 index 000000000..cf00c5a56 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/cross-icon.svg @@ -0,0 +1,16 @@ + + + + Icon-Cross + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/down-arrow-white.svg b/packages/Webkul/Ui/publishable/assets/images/down-arrow-white.svg new file mode 100755 index 000000000..b80e0ae72 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/down-arrow-white.svg @@ -0,0 +1,10 @@ + + + + down-arrow + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/favicon.ico b/packages/Webkul/Ui/publishable/assets/images/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..e9c217bb395c0bd8eb3ea6755633f62b0781ff2c GIT binary patch literal 5430 zcmeHLJx?1!6dYm`qwwj&1+tKE1*sww=zrc()9%jBd$XQfpS=f6;0+cQz_y3|Ca?;i*BgwFiT@z> zo*27i3~)BVtKEQD!Y^jYRj!{eI}l6M`NIxayi@LQHZZRItvSf2+5Elq@iP5vANlL? z@p0#8^{DfpTAfKOWmwX}QmX%uVP!3OXDRnMVGRwAPg3lxEHA^`O{|l9pYq-B|Hze#QLvzu)5?*ZN@x#_hLXFRX6=z47bE#Sdpod2}%>-pmt->UEbzwq_^ag1NIyJdAPIBV;f)pqt{ zjzuHHZMQMUHC$C*gL0V@s%f3;bTE_K3k9AiN4eJeRr!4Xu}L2exd;AI>+U7kS4`)s i*2#D`!2D~5%-_gMwE807e~WyZ5IJv%^jjj2EAkA9Xf6r> literal 0 HcmV?d00001 diff --git a/packages/Webkul/Ui/publishable/assets/images/icon-account.svg b/packages/Webkul/Ui/publishable/assets/images/icon-account.svg new file mode 100755 index 000000000..59e9f0803 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/icon-account.svg @@ -0,0 +1,13 @@ + + + + icon-account + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/icon-note.svg b/packages/Webkul/Ui/publishable/assets/images/icon-note.svg new file mode 100644 index 000000000..fb6fbbfef --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/icon-note.svg @@ -0,0 +1,13 @@ + + + + Icon-Note-Large + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/icon-promotion-active.svg b/packages/Webkul/Ui/publishable/assets/images/icon-promotion-active.svg new file mode 100644 index 000000000..f3543efd0 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/icon-promotion-active.svg @@ -0,0 +1,18 @@ + + + + Icon-Promition-Active + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/icon-promotion.svg b/packages/Webkul/Ui/publishable/assets/images/icon-promotion.svg new file mode 100644 index 000000000..f3329e941 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/icon-promotion.svg @@ -0,0 +1,18 @@ + + + + Icon-Promition + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/icon-search-dark.svg b/packages/Webkul/Ui/publishable/assets/images/icon-search-dark.svg new file mode 100755 index 000000000..5bdeb0082 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/icon-search-dark.svg @@ -0,0 +1,11 @@ + + + + icon-search + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/icon-search.svg b/packages/Webkul/Ui/publishable/assets/images/icon-search.svg new file mode 100755 index 000000000..0129f7120 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/icon-search.svg @@ -0,0 +1,11 @@ + + + + icon-search + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/limited-icon.svg b/packages/Webkul/Ui/publishable/assets/images/limited-icon.svg new file mode 100755 index 000000000..f58960031 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/limited-icon.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/Webkul/Ui/publishable/assets/images/logo.png b/packages/Webkul/Ui/publishable/assets/images/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..f4d547c3fa0ba7840fa2ecc096506b395c28f8e3 GIT binary patch literal 2404 zcmV-q37htbP)1j92=$^;Wr0cs#w zQBR|-qVaUjAQ-{Mw9hoqv&SUMuZPB5_UMoZy&6o+Bse8Iklwj00zQWHQ3JURn5?*# z#=DtqD6bu*-iK1Nkx1Oncs}!2F&@NNj3*@6dN`%qklwM}>ZN;P1S@r13d(Zx;&?A> zAX)yd=S9iN>Ah}E>bPDgvSQk68pz^-IKpdDr{DAVs7$bq4##QaD6Wtn4a5e_kKXrKtI0hkX@3%w(#LYR=b|58z(Tb)pF=Nf4;-T>a*zHX z6K3R7QC{0kT6DIUZ^XA@7hXk^&Z`sTwQ)}=*_Z^%k;afraqq7)+2r;me+7QP>hgFm zREalH#(0xSMfr@?N23!}2CDHXTGhHJ)v{r__rOG{k9PvRpPQQt)(OhWU8^`so7EO} z^cse@k-#)8P|=MiBkaW0oRmvU(3m1weWC6>@TePrb+>SSH2|eQ>b-oabI3)&hGw8T z`ZH?p8_H9SRyB()OUOHQZ@{YG0uuT{L+j z3U&HO&h*QO`3cLb84qCj#|+P56dpvA>evlmLys6o>}X=wGrWwSVJ7|L6%Ut0171?! zpiw*6fVM9Al2NPApp4&JkEW=zrju!hGM zm)v|SXP%oKiWS<~#wpBO9m)?T6qn^zb-T%`)xXY+d-py`@#hTnoV2SXk!_GtR#>EQ zCY3OhYJP_udz$h8Ob5kK8jm2QN11e*-eZmT6*2M`1G5>wZ_4avG`_+w4O^#ch<$*( zRg}V)Mq zrT;+V-9_Fto~#^;nc8g1fy2o!##nulq>IOZwzoHNmX6@;yAVmp=KQ*3(+K_fz0&Y) zN=~cesIVUrdp@yOF&@T2KVi!4=S&l&aRFnyjVL_I<>^S`C-YlHycj{tJ(;@u@L=rV^&q96WoYCy+RVLEyr^dytB24yhZ>-aw}b{%N}KdT zwUK4wnU)kr3)B4}#zG3~tGNfxS9Y0kdzQqDoQamSIS?GoLDpj%4XY7&ktf8e!D1Cn zFQj1&Df{R^gzuS2rv07H*30!x;`f{)vJZ>Qew00)@pzi@3mS4Fy{t7?byL=f(>#pk zB;5UqlEAaK@*9G{+Z>MahHKDmw62fA5VV}*YO z%6{DCl}A$tE-6lp=hgONGGG~(#S7j3Lu)a@WG}6FTvs@i>5@#|Go1C)xqr;#e)KTQ zkO{RdlQ)=0m2*PnG8tXcJWZ2|X9<>>a35#=oxEiC=M~|f%sGh|S-M^_@yjBPmy?v?0dr)W*Ttt$OJ6o4sE^N!QW`?ox}_v zR`%&>8T{FdAK-=mNqz?9N5 zP<<77@N&M3Y8=l2HZ$0Zy4<@IJy!*mTLaE~TGSU@W=~~#6=h9gXrS7vSo%=_wjPW4 z29%BDY0cq_33$i=7kc-|B=+89@W|38# z2F#_D-j=2G3L5ICG}3a$e`hRjnDPoE%C(e0BPW7f5eklqX%F1<%B$5U&{Iw@g5}W| z=HWQl&bKt^ltMM0baekVV2k>Y*M@2?VpmfaDF%6-D`${P{aZBNlQiCP@&!xr5?ZjP ziPo`VI)z3X(SC-C4Orv`=K-4kK9&#a++;7)`Dpul)Mo5~MQ+U4fUyCKTmwbk{qF$p W)RE+h%z(Q90000 + + + placeholder-icon + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/product/large-product-placeholder.png b/packages/Webkul/Ui/publishable/assets/images/product/large-product-placeholder.png new file mode 100755 index 0000000000000000000000000000000000000000..e839910ccb43d249c2259100efa6929803ad7bd1 GIT binary patch literal 12914 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 S0sln8pnuWm!uxX$_x=N20pnc& literal 0 HcmV?d00001 diff --git a/packages/Webkul/Ui/publishable/assets/images/product/meduim-product-placeholder.png b/packages/Webkul/Ui/publishable/assets/images/product/meduim-product-placeholder.png new file mode 100755 index 0000000000000000000000000000000000000000..0aa66dc5200c0a9b9e96da022f344e7db1004be2 GIT binary patch literal 7119 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 VR;Si}W&EK7=xP~hR;Xj~{|2acysrQN literal 0 HcmV?d00001 diff --git a/packages/Webkul/Ui/publishable/assets/images/product/small-product-placeholder.png b/packages/Webkul/Ui/publishable/assets/images/product/small-product-placeholder.png new file mode 100755 index 0000000000000000000000000000000000000000..8526a85f5f5735a9ce2894e304d9ae3dc4fdc259 GIT binary patch literal 2412 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 literal 0 HcmV?d00001 diff --git a/packages/Webkul/Ui/publishable/assets/images/sort-up-icon.png b/packages/Webkul/Ui/publishable/assets/images/sort-up-icon.png new file mode 100755 index 0000000000000000000000000000000000000000..2578e18db0abc03e96405daef64f19e5d29f42ad GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!AzYEKT2e9!N2j1o;Is y1bzPY_W_V6=;`7Z!f`!$flz{7gI@qU1H-3h%)A#rtP%%GGI+ZBxvX + + + up-arrow + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/publishable/assets/images/uvdesk-controls.svg b/packages/Webkul/Ui/publishable/assets/images/uvdesk-controls.svg new file mode 100755 index 000000000..53127ff1c --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/images/uvdesk-controls.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/Webkul/Ui/publishable/assets/js/ui.js b/packages/Webkul/Ui/publishable/assets/js/ui.js new file mode 100644 index 000000000..dedd23f01 --- /dev/null +++ b/packages/Webkul/Ui/publishable/assets/js/ui.js @@ -0,0 +1,2 @@ +/*! For license information please see ui.js.LICENSE */ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s=0)}({"+Xmh":function(t,e,n){n("jm62"),t.exports=n("g3g5").Object.getOwnPropertyDescriptors},"+auO":function(t,e,n){var r=n("XKFU"),i=n("lvtm");r(r.S,"Math",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},"+lvF":function(t,e,n){t.exports=n("VTer")("native-function-to-string",Function.toString)},"+oPb":function(t,e,n){"use strict";n("OGtf")("blink",(function(t){return function(){return t(this,"blink","","")}}))},"+rLv":function(t,e,n){var r=n("dyZX").document;t.exports=r&&r.documentElement},"/8Fb":function(t,e,n){var r=n("XKFU"),i=n("UExd")(!0);r(r.S,"Object",{entries:function(t){return i(t)}})},"/KAi":function(t,e,n){var r=n("XKFU"),i=n("dyZX").isFinite;r(r.S,"Number",{isFinite:function(t){return"number"==typeof t&&i(t)}})},"/SS/":function(t,e,n){var r=n("XKFU");r(r.S,"Object",{setPrototypeOf:n("i5dc").set})},"/e88":function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},0:function(t,e,n){n("uPOf"),n("qg2B"),t.exports=n("w/dW")},"0/R4":function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"0E+W":function(t,e,n){n("elZq")("Array")},"0LDn":function(t,e,n){"use strict";n("OGtf")("italics",(function(t){return function(){return t(this,"i","","")}}))},"0YWM":function(t,e,n){var r=n("EemH"),i=n("OP3Y"),o=n("aagx"),a=n("XKFU"),s=n("0/R4"),c=n("y3w9");a(a.S,"Reflect",{get:function t(e,n){var a,u,l=arguments.length<3?e:arguments[2];return c(e)===l?e[n]:(a=r.f(e,n))?o(a,"value")?a.value:void 0!==a.get?a.get.call(l):void 0:s(u=i(e))?t(u,n,l):void 0}})},"0l/t":function(t,e,n){"use strict";var r=n("XKFU"),i=n("CkkT")(2);r(r.P+r.F*!n("LyE8")([].filter,!0),"Array",{filter:function(t){return i(this,t,arguments[1])}})},"0mN4":function(t,e,n){"use strict";n("OGtf")("fixed",(function(t){return function(){return t(this,"tt","","")}}))},"0sh+":function(t,e,n){var r=n("quPj"),i=n("vhPU");t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(i(t))}},"11IZ":function(t,e,n){var r=n("dyZX").parseFloat,i=n("qncB").trim;t.exports=1/r(n("/e88")+"-0")!=-1/0?function(t){var e=i(String(t),3),n=r(e);return 0===n&&"-"==e.charAt(0)?-0:n}:r},"1MBn":function(t,e,n){var r=n("DVgA"),i=n("JiEa"),o=n("UqcF");t.exports=function(t){var e=r(t),n=i.f;if(n)for(var a,s=n(t),c=o.f,u=0;s.length>u;)c.call(t,a=s[u++])&&e.push(a);return e}},"1TsA":function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},"1sa7":function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},"25dN":function(t,e,n){var r=n("XKFU");r(r.S,"Object",{is:n("g6HL")})},"2GTP":function(t,e,n){var r=n("eaoh");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},"2OiF":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"2Spj":function(t,e,n){var r=n("XKFU");r(r.P,"Function",{bind:n("8MEG")})},"2atp":function(t,e,n){var r=n("XKFU"),i=Math.atanh;r(r.S+r.F*!(i&&1/i(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},"2faE":function(t,e,n){var r=n("5K7Z"),i=n("eUtF"),o=n("G8Mo"),a=Object.defineProperty;e.f=n("jmDH")?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},"3Lyj":function(t,e,n){var r=n("KroJ");t.exports=function(t,e,n){for(var i in e)r(t,i,e[i],n);return t}},"3xty":function(t,e,n){var r=n("XKFU"),i=n("2OiF"),o=n("y3w9"),a=(n("dyZX").Reflect||{}).apply,s=Function.apply;r(r.S+r.F*!n("eeVq")((function(){a((function(){}))})),"Reflect",{apply:function(t,e,n){var r=i(t),c=o(n);return a?a(r,e,c):s.call(r,e,c)}})},"4LiD":function(t,e,n){"use strict";var r=n("dyZX"),i=n("XKFU"),o=n("KroJ"),a=n("3Lyj"),s=n("Z6vF"),c=n("SlkY"),u=n("9gX7"),l=n("0/R4"),f=n("eeVq"),p=n("XMVh"),d=n("fyDq"),h=n("Xbzi");t.exports=function(t,e,n,g,v,m){var y=r[t],b=y,w=v?"set":"add",x=b&&b.prototype,_={},k=function(t){var e=x[t];o(x,t,"delete"==t?function(t){return!(m&&!l(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(m&&!l(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!l(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof b&&(m||x.forEach&&!f((function(){(new b).entries().next()})))){var S=new b,C=S[w](m?{}:-0,1)!=S,E=f((function(){S.has(1)})),F=p((function(t){new b(t)})),D=!m&&f((function(){for(var t=new b,e=5;e--;)t[w](e,e);return!t.has(-0)}));F||((b=e((function(e,n){u(e,b,t);var r=h(new y,e,b);return null!=n&&c(n,v,r[w],r),r}))).prototype=x,x.constructor=b),(E||D)&&(k("delete"),k("has"),v&&k("get")),(D||C)&&k(w),m&&x.clear&&delete x.clear}else b=g.getConstructor(e,t,v,w),a(b.prototype,n),s.NEED=!0;return d(b,t),_[t]=b,i(i.G+i.W+i.F*(b!=y),_),m||g.setStrong(b,t,v),b}},"4R4u":function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"55Il":function(t,e,n){"use strict";n("g2aq");var r,i=(r=n("VsWn"))&&r.__esModule?r:{default:r};i.default._babelPolyfill&&"undefined"!=typeof console&&console.warn&&console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning."),i.default._babelPolyfill=!0},"5K7Z":function(t,e,n){var r=n("93I4");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},"5Pf0":function(t,e,n){var r=n("S/j/"),i=n("OP3Y");n("Xtr8")("getPrototypeOf",(function(){return function(t){return i(r(t))}}))},"5T2Y":function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"5gfu":function(t,e,n){var r=n("IsTG");"string"==typeof r&&(r=[[t.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(t.exports=r.locals)},"694e":function(t,e,n){var r=n("EemH"),i=n("XKFU"),o=n("y3w9");i(i.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return r.f(o(t),e)}})},"69bn":function(t,e,n){var r=n("y3w9"),i=n("2OiF"),o=n("K0xU")("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[o])?e:i(n)}},"6AQ9":function(t,e,n){"use strict";var r=n("XKFU"),i=n("8a7r");r(r.S+r.F*n("eeVq")((function(){function t(){}return!(Array.of.call(t)instanceof t)})),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)i(n,t,arguments[t++]);return n.length=e,n}})},"6FMO":function(t,e,n){var r=n("0/R4"),i=n("EWmC"),o=n("K0xU")("species");t.exports=function(t){var e;return i(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!i(e.prototype)||(e=void 0),r(e)&&null===(e=e[o])&&(e=void 0)),void 0===e?Array:e}},"6VaU":function(t,e,n){"use strict";var r=n("XKFU"),i=n("xF/b"),o=n("S/j/"),a=n("ne8i"),s=n("2OiF"),c=n("zRwo");r(r.P,"Array",{flatMap:function(t){var e,n,r=o(this);return s(t),e=a(r.length),n=c(r,0),i(n,r,r,e,0,1,t,arguments[1]),n}}),n("nGyu")("flatMap")},"7DDg":function(t,e,n){"use strict";if(n("nh4g")){var r=n("LQAc"),i=n("dyZX"),o=n("eeVq"),a=n("XKFU"),s=n("D4iV"),c=n("7Qtz"),u=n("m0Pp"),l=n("9gX7"),f=n("RjD/"),p=n("Mukb"),d=n("3Lyj"),h=n("RYi7"),g=n("ne8i"),v=n("Cfrj"),m=n("d/Gc"),y=n("apmT"),b=n("aagx"),w=n("I8a+"),x=n("0/R4"),_=n("S/j/"),k=n("M6Qj"),S=n("Kuth"),C=n("OP3Y"),E=n("kJMx").f,F=n("J+6e"),D=n("ylqs"),M=n("K0xU"),O=n("CkkT"),T=n("w2a5"),P=n("69bn"),I=n("yt8O"),A=n("hPIQ"),j=n("XMVh"),L=n("elZq"),R=n("Nr18"),N=n("upKx"),U=n("hswa"),V=n("EemH"),B=U.f,K=V.f,X=i.RangeError,z=i.TypeError,Y=i.Uint8Array,q=Array.prototype,W=c.ArrayBuffer,H=c.DataView,$=O(0),G=O(2),Z=O(3),J=O(4),Q=O(5),tt=O(6),et=T(!0),nt=T(!1),rt=I.values,it=I.keys,ot=I.entries,at=q.lastIndexOf,st=q.reduce,ct=q.reduceRight,ut=q.join,lt=q.sort,ft=q.slice,pt=q.toString,dt=q.toLocaleString,ht=M("iterator"),gt=M("toStringTag"),vt=D("typed_constructor"),mt=D("def_constructor"),yt=s.CONSTR,bt=s.TYPED,wt=s.VIEW,xt=O(1,(function(t,e){return Et(P(t,t[mt]),e)})),_t=o((function(){return 1===new Y(new Uint16Array([1]).buffer)[0]})),kt=!!Y&&!!Y.prototype.set&&o((function(){new Y(1).set({})})),St=function(t,e){var n=h(t);if(n<0||n%e)throw X("Wrong offset!");return n},Ct=function(t){if(x(t)&&bt in t)return t;throw z(t+" is not a typed array!")},Et=function(t,e){if(!(x(t)&&vt in t))throw z("It is not a typed array constructor!");return new t(e)},Ft=function(t,e){return Dt(P(t,t[mt]),e)},Dt=function(t,e){for(var n=0,r=e.length,i=Et(t,r);r>n;)i[n]=e[n++];return i},Mt=function(t,e,n){B(t,e,{get:function(){return this._d[n]}})},Ot=function(t){var e,n,r,i,o,a,s=_(t),c=arguments.length,l=c>1?arguments[1]:void 0,f=void 0!==l,p=F(s);if(null!=p&&!k(p)){for(a=p.call(s),r=[],e=0;!(o=a.next()).done;e++)r.push(o.value);s=r}for(f&&c>2&&(l=u(l,arguments[2],2)),e=0,n=g(s.length),i=Et(this,n);n>e;e++)i[e]=f?l(s[e],e):s[e];return i},Tt=function(){for(var t=0,e=arguments.length,n=Et(this,e);e>t;)n[t]=arguments[t++];return n},Pt=!!Y&&o((function(){dt.call(new Y(1))})),It=function(){return dt.apply(Pt?ft.call(Ct(this)):Ct(this),arguments)},At={copyWithin:function(t,e){return N.call(Ct(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return J(Ct(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return R.apply(Ct(this),arguments)},filter:function(t){return Ft(this,G(Ct(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Q(Ct(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(Ct(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){$(Ct(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return nt(Ct(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return et(Ct(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return ut.apply(Ct(this),arguments)},lastIndexOf:function(t){return at.apply(Ct(this),arguments)},map:function(t){return xt(Ct(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return st.apply(Ct(this),arguments)},reduceRight:function(t){return ct.apply(Ct(this),arguments)},reverse:function(){for(var t,e=Ct(this).length,n=Math.floor(e/2),r=0;r1?arguments[1]:void 0)},sort:function(t){return lt.call(Ct(this),t)},subarray:function(t,e){var n=Ct(this),r=n.length,i=m(t,r);return new(P(n,n[mt]))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,g((void 0===e?r:m(e,r))-i))}},jt=function(t,e){return Ft(this,ft.call(Ct(this),t,e))},Lt=function(t){Ct(this);var e=St(arguments[1],1),n=this.length,r=_(t),i=g(r.length),o=0;if(i+e>n)throw X("Wrong length!");for(;o255?255:255&r),i.v[d](n*e+i.o,r,_t)}(this,n,t)},enumerable:!0})};b?(h=n((function(t,n,r,i){l(t,h,u,"_d");var o,a,s,c,f=0,d=0;if(x(n)){if(!(n instanceof W||"ArrayBuffer"==(c=w(n))||"SharedArrayBuffer"==c))return bt in n?Dt(h,n):Ot.call(h,n);o=n,d=St(r,e);var m=n.byteLength;if(void 0===i){if(m%e)throw X("Wrong length!");if((a=m-d)<0)throw X("Wrong length!")}else if((a=g(i)*e)+d>m)throw X("Wrong length!");s=a/e}else s=v(n),o=new W(a=s*e);for(p(t,"_d",{b:o,o:d,l:a,e:s,v:new H(o)});f>1,l=23===e?F(2,-24)-F(2,-77):0,f=0,p=t<0||0===t&&1/t<0?1:0;for((t=E(t))!=t||t===S?(i=t!=t?1:0,r=c):(r=D(M(t)/O),t*(o=F(2,-r))<1&&(r--,o*=2),(t+=r+u>=1?l/o:l*F(2,1-u))*o>=2&&(r++,o/=2),r+u>=c?(i=0,r=c):r+u>=1?(i=(t*o-1)*F(2,e),r+=u):(i=t*F(2,u-1)*F(2,e),r=0));e>=8;a[f++]=255&i,i/=256,e-=8);for(r=r<0;a[f++]=255&r,r/=256,s-=8);return a[--f]|=128*p,a}function j(t,e,n){var r,i=8*n-e-1,o=(1<>1,s=i-7,c=n-1,u=t[c--],l=127&u;for(u>>=7;s>0;l=256*l+t[c],c--,s-=8);for(r=l&(1<<-s)-1,l>>=-s,s+=e;s>0;r=256*r+t[c],c--,s-=8);if(0===l)l=1-a;else{if(l===o)return r?NaN:u?-S:S;r+=F(2,e),l-=a}return(u?-1:1)*r*F(2,l-e)}function L(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function R(t){return[255&t]}function N(t){return[255&t,t>>8&255]}function U(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function V(t){return A(t,52,8)}function B(t){return A(t,23,4)}function K(t,e,n){g(t[y],e,{get:function(){return this[n]}})}function X(t,e,n,r){var i=d(+n);if(i+e>t[P])throw k(b);var o=t[T]._b,a=i+t[I],s=o.slice(a,a+e);return r?s:s.reverse()}function z(t,e,n,r,i,o){var a=d(+n);if(a+e>t[P])throw k(b);for(var s=t[T]._b,c=a+t[I],u=r(+i),l=0;lH;)(Y=W[H++])in w||s(w,Y,C[Y]);o||(q.constructor=w)}var $=new x(new w(2)),G=x[y].setInt8;$.setInt8(0,2147483648),$.setInt8(1,2147483649),!$.getInt8(0)&&$.getInt8(1)||c(x[y],{setInt8:function(t,e){G.call(this,t,e<<24>>24)},setUint8:function(t,e){G.call(this,t,e<<24>>24)}},!0)}else w=function(t){l(this,w,"ArrayBuffer");var e=d(t);this._b=v.call(new Array(e),0),this[P]=e},x=function(t,e,n){l(this,x,"DataView"),l(t,w,"DataView");var r=t[P],i=f(e);if(i<0||i>r)throw k("Wrong offset!");if(i+(n=void 0===n?r-i:p(n))>r)throw k("Wrong length!");this[T]=t,this[I]=i,this[P]=n},i&&(K(w,"byteLength","_l"),K(x,"buffer","_b"),K(x,"byteLength","_l"),K(x,"byteOffset","_o")),c(x[y],{getInt8:function(t){return X(this,1,t)[0]<<24>>24},getUint8:function(t){return X(this,1,t)[0]},getInt16:function(t){var e=X(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=X(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return L(X(this,4,t,arguments[1]))},getUint32:function(t){return L(X(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return j(X(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return j(X(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){z(this,1,t,R,e)},setUint8:function(t,e){z(this,1,t,R,e)},setInt16:function(t,e){z(this,2,t,N,e,arguments[2])},setUint16:function(t,e){z(this,2,t,N,e,arguments[2])},setInt32:function(t,e){z(this,4,t,U,e,arguments[2])},setUint32:function(t,e){z(this,4,t,U,e,arguments[2])},setFloat32:function(t,e){z(this,4,t,B,e,arguments[2])},setFloat64:function(t,e){z(this,8,t,V,e,arguments[2])}});m(w,"ArrayBuffer"),m(x,"DataView"),s(x[y],a.VIEW,!0),e.ArrayBuffer=w,e.DataView=x},"7VC1":function(t,e,n){"use strict";var r=n("XKFU"),i=n("Lgjv"),o=n("ol8x"),a=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);r(r.P+r.F*a,"String",{padEnd:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},"7h0T":function(t,e,n){var r=n("XKFU");r(r.S,"Number",{isNaN:function(t){return t!=t}})},"8+KV":function(t,e,n){"use strict";var r=n("XKFU"),i=n("CkkT")(0),o=n("LyE8")([].forEach,!0);r(r.P+r.F*!o,"Array",{forEach:function(t){return i(this,t,arguments[1])}})},"84bF":function(t,e,n){"use strict";n("OGtf")("small",(function(t){return function(){return t(this,"small","","")}}))},"8MEG":function(t,e,n){"use strict";var r=n("2OiF"),i=n("0/R4"),o=n("MfQN"),a=[].slice,s={},c=function(t,e,n){if(!(e in s)){for(var r=[],i=0;i0?arguments[0]:void 0)}}),{get:function(t){var e=r.getEntry(i(this,"Map"),t);return e&&e.v},set:function(t,e){return r.def(i(this,"Map"),0===t?0:t,e)}},r,!0)},"9P93":function(t,e,n){var r=n("XKFU"),i=Math.imul;r(r.S+r.F*n("eeVq")((function(){return-5!=i(4294967295,5)||2!=i.length})),"Math",{imul:function(t,e){var n=+t,r=+e,i=65535&n,o=65535&r;return 0|i*o+((65535&n>>>16)*o+i*(65535&r>>>16)<<16>>>0)}})},"9VmF":function(t,e,n){"use strict";var r=n("XKFU"),i=n("ne8i"),o=n("0sh+"),a="".startsWith;r(r.P+r.F*n("UUeW")("startsWith"),"String",{startsWith:function(t){var e=o(this,t,"startsWith"),n=i(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return a?a.call(e,r,n):e.slice(n,n+r.length)===r}})},"9XZr":function(t,e,n){"use strict";var r=n("XKFU"),i=n("Lgjv"),o=n("ol8x"),a=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);r(r.P+r.F*a,"String",{padStart:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},"9gX7":function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},"9rMk":function(t,e,n){var r=n("XKFU");r(r.S,"Reflect",{has:function(t,e){return e in t}})},"9tPo":function(t,e){t.exports=function(t){var e="undefined"!=typeof window&&window.location;if(!e)throw new Error("fixUrls requires window.location");if(!t||"string"!=typeof t)return t;var n=e.protocol+"//"+e.host,r=n+e.pathname.replace(/\/[^\/]*$/,"/");return t.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,(function(t,e){var i,o=e.trim().replace(/^"(.*)"$/,(function(t,e){return e})).replace(/^'(.*)'$/,(function(t,e){return e}));return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(o)?t:(i=0===o.indexOf("//")?o:0===o.indexOf("/")?n+o:r+o.replace(/^\.\//,""),"url("+JSON.stringify(i)+")")}))}},A2zW:function(t,e,n){"use strict";var r=n("XKFU"),i=n("RYi7"),o=n("vvmO"),a=n("l0Rn"),s=1..toFixed,c=Math.floor,u=[0,0,0,0,0,0],l="Number.toFixed: incorrect invocation!",f=function(t,e){for(var n=-1,r=e;++n<6;)r+=t*u[n],u[n]=r%1e7,r=c(r/1e7)},p=function(t){for(var e=6,n=0;--e>=0;)n+=u[e],u[e]=c(n/t),n=n%t*1e7},d=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==u[t]){var n=String(u[t]);e=""===e?n:e+a.call("0",7-n.length)+n}return e},h=function(t,e,n){return 0===e?n:e%2==1?h(t,e-1,n*t):h(t*t,e/2,n)};r(r.P+r.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!n("eeVq")((function(){s.call({})}))),"Number",{toFixed:function(t){var e,n,r,s,c=o(this,l),u=i(t),g="",v="0";if(u<0||u>20)throw RangeError(l);if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(g="-",c=-c),c>1e-21)if(n=(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*h(2,69,1))-69)<0?c*h(2,-e,1):c/h(2,e,1),n*=4503599627370496,(e=52-e)>0){for(f(0,n),r=u;r>=7;)f(1e7,0),r-=7;for(f(h(10,r,1),0),r=e-1;r>=23;)p(1<<23),r-=23;p(1<0?g+((s=v.length)<=u?"0."+a.call("0",u-s)+v:v.slice(0,s-u)+"."+v.slice(s-u)):g+v}})},A5AN:function(t,e,n){"use strict";var r=n("AvRE")(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},Afnz:function(t,e,n){"use strict";var r=n("LQAc"),i=n("XKFU"),o=n("KroJ"),a=n("Mukb"),s=n("hPIQ"),c=n("QaDb"),u=n("fyDq"),l=n("OP3Y"),f=n("K0xU")("iterator"),p=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(t,e,n,h,g,v,m){c(n,e,h);var y,b,w,x=function(t){if(!p&&t in C)return C[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},_=e+" Iterator",k="values"==g,S=!1,C=t.prototype,E=C[f]||C["@@iterator"]||g&&C[g],F=E||x(g),D=g?k?x("entries"):F:void 0,M="Array"==e&&C.entries||E;if(M&&(w=l(M.call(new t)))!==Object.prototype&&w.next&&(u(w,_,!0),r||"function"==typeof w[f]||a(w,f,d)),k&&E&&"values"!==E.name&&(S=!0,F=function(){return E.call(this)}),r&&!m||!p&&!S&&C[f]||a(C,f,F),s[e]=F,s[_]=d,g)if(y={values:k?F:x("values"),keys:v?F:x("keys"),entries:D},m)for(b in y)b in C||o(C,b,y[b]);else i(i.P+i.F*(p||S),e,y);return y}},AphP:function(t,e,n){"use strict";var r=n("XKFU"),i=n("S/j/"),o=n("apmT");r(r.P+r.F*n("eeVq")((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})),"Date",{toJSON:function(t){var e=i(this),n=o(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},AvRE:function(t,e,n){var r=n("RYi7"),i=n("vhPU");t.exports=function(t){return function(e,n){var o,a,s=String(i(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(o=s.charCodeAt(c))<55296||o>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):o:t?s.slice(c,c+2):a-56320+(o-55296<<10)+65536}}},"B+OT":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},BC7C:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{fround:n("kcoS")})},"BJ/l":function(t,e,n){var r=n("XKFU");r(r.S,"Math",{log1p:n("1sa7")})},BP8U:function(t,e,n){var r=n("XKFU"),i=n("PKUr");r(r.S+r.F*(Number.parseInt!=i),"Number",{parseInt:i})},Btvt:function(t,e,n){"use strict";var r=n("I8a+"),i={};i[n("K0xU")("toStringTag")]="z",i+""!="[object z]"&&n("KroJ")(Object.prototype,"toString",(function(){return"[object "+r(this)+"]"}),!0)},"C/va":function(t,e,n){"use strict";var r=n("y3w9");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},CVKz:function(t,e,n){var r=n("cybi");"string"==typeof r&&(r=[[t.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(t.exports=r.locals)},CX2u:function(t,e,n){"use strict";var r=n("XKFU"),i=n("g3g5"),o=n("dyZX"),a=n("69bn"),s=n("vKrd");r(r.P+r.R,"Promise",{finally:function(t){var e=a(this,i.Promise||o.Promise),n="function"==typeof t;return this.then(n?function(n){return s(e,t()).then((function(){return n}))}:t,n?function(n){return s(e,t()).then((function(){throw n}))}:t)}})},Cfrj:function(t,e,n){var r=n("RYi7"),i=n("ne8i");t.exports=function(t){if(void 0===t)return 0;var e=r(t),n=i(e);if(e!==n)throw RangeError("Wrong length!");return n}},CkkT:function(t,e,n){var r=n("m0Pp"),i=n("Ymqv"),o=n("S/j/"),a=n("ne8i"),s=n("zRwo");t.exports=function(t,e){var n=1==t,c=2==t,u=3==t,l=4==t,f=6==t,p=5==t||f,d=e||s;return function(e,s,h){for(var g,v,m=o(e),y=i(m),b=r(s,h,3),w=a(y.length),x=0,_=n?d(e,w):c?d(e,0):void 0;w>x;x++)if((p||x in y)&&(v=b(g=y[x],x,m),t))if(n)_[x]=v;else if(v)switch(t){case 3:return!0;case 5:return g;case 6:return x;case 2:_.push(g)}else if(l)return!1;return f?-1:u||l?l:_}}},CyHz:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{sign:n("lvtm")})},D4iV:function(t,e,n){for(var r,i=n("dyZX"),o=n("Mukb"),a=n("ylqs"),s=a("typed_array"),c=a("view"),u=!(!i.ArrayBuffer||!i.DataView),l=u,f=0,p="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");f<9;)(r=i[p[f++]])?(o(r.prototype,s,!0),o(r.prototype,c,!0)):l=!1;t.exports={ABV:u,CONSTR:l,TYPED:s,VIEW:c}},DAlx:function(t,e,n){var r=n("hfxi");"string"==typeof r&&(r=[[t.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(t.exports=r.locals)},DNiP:function(t,e,n){"use strict";var r=n("XKFU"),i=n("eyMr");r(r.P+r.F*!n("LyE8")([].reduce,!0),"Array",{reduce:function(t){return i(this,t,arguments.length,arguments[1],!1)}})},DVgA:function(t,e,n){var r=n("zhAb"),i=n("4R4u");t.exports=Object.keys||function(t){return r(t,i)}},DW2E:function(t,e,n){var r=n("0/R4"),i=n("Z6vF").onFreeze;n("Xtr8")("freeze",(function(t){return function(e){return t&&r(e)?t(i(e)):e}}))},EK0E:function(t,e,n){"use strict";var r,i=n("dyZX"),o=n("CkkT")(0),a=n("KroJ"),s=n("Z6vF"),c=n("czNK"),u=n("ZD67"),l=n("0/R4"),f=n("s5qY"),p=n("s5qY"),d=!i.ActiveXObject&&"ActiveXObject"in i,h=s.getWeak,g=Object.isExtensible,v=u.ufstore,m=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},y={get:function(t){if(l(t)){var e=h(t);return!0===e?v(f(this,"WeakMap")).get(t):e?e[this._i]:void 0}},set:function(t,e){return u.def(f(this,"WeakMap"),t,e)}},b=t.exports=n("4LiD")("WeakMap",m,y,u,!0,!0);p&&d&&(c((r=u.getConstructor(m,"WeakMap")).prototype,y),s.NEED=!0,o(["delete","has","get","set"],(function(t){var e=b.prototype,n=e[t];a(e,t,(function(e,i){if(l(e)&&!g(e)){this._f||(this._f=new r);var o=this._f[t](e,i);return"set"==t?this:o}return n.call(this,e,i)}))})))},EWmC:function(t,e,n){var r=n("LZWt");t.exports=Array.isArray||function(t){return"Array"==r(t)}},EemH:function(t,e,n){var r=n("UqcF"),i=n("RjD/"),o=n("aCFj"),a=n("apmT"),s=n("aagx"),c=n("xpql"),u=Object.getOwnPropertyDescriptor;e.f=n("nh4g")?u:function(t,e){if(t=o(t),e=a(e,!0),c)try{return u(t,e)}catch(t){}if(s(t,e))return i(!r.f.call(t,e),t[e])}},"Ew+T":function(t,e,n){var r=n("XKFU"),i=n("GZEu");r(r.G+r.B,{setImmediate:i.set,clearImmediate:i.clear})},FDph:function(t,e,n){n("Z2Ku"),t.exports=n("g3g5").Array.includes},FEjr:function(t,e,n){"use strict";n("OGtf")("strike",(function(t){return function(){return t(this,"strike","","")}}))},FJW5:function(t,e,n){var r=n("hswa"),i=n("y3w9"),o=n("DVgA");t.exports=n("nh4g")?Object.defineProperties:function(t,e){i(t);for(var n,a=o(e),s=a.length,c=0;s>c;)r.f(t,n=a[c++],e[n]);return t}},FLlr:function(t,e,n){var r=n("XKFU");r(r.P,"String",{repeat:n("l0Rn")})},Faw5:function(t,e,n){n("7DDg")("Int16",2,(function(t){return function(e,n,r){return t(this,e,n,r)}}))},FlsD:function(t,e,n){var r=n("0/R4");n("Xtr8")("isExtensible",(function(t){return function(e){return!!r(e)&&(!t||t(e))}}))},FxUG:function(t,e,n){n("R5XZ"),n("Ew+T"),n("rGqo"),t.exports=n("g3g5")},G8Mo:function(t,e,n){var r=n("93I4");t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},GFzJ:function(t,e,n){"use strict";var r=n("DAlx");n.n(r).a},GNAe:function(t,e,n){var r=n("XKFU"),i=n("PKUr");r(r.G+r.F*(parseInt!=i),{parseInt:i})},GZEu:function(t,e,n){var r,i,o,a=n("m0Pp"),s=n("MfQN"),c=n("+rLv"),u=n("Iw71"),l=n("dyZX"),f=l.process,p=l.setImmediate,d=l.clearImmediate,h=l.MessageChannel,g=l.Dispatch,v=0,m={},y=function(){var t=+this;if(m.hasOwnProperty(t)){var e=m[t];delete m[t],e()}},b=function(t){y.call(t.data)};p&&d||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return m[++v]=function(){s("function"==typeof t?t:Function(t),e)},r(v),v},d=function(t){delete m[t]},"process"==n("LZWt")(f)?r=function(t){f.nextTick(a(y,t,1))}:g&&g.now?r=function(t){g.now(a(y,t,1))}:h?(o=(i=new h).port2,i.port1.onmessage=b,r=a(o.postMessage,o,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(t){l.postMessage(t+"","*")},l.addEventListener("message",b,!1)):r="onreadystatechange"in u("script")?function(t){c.appendChild(u("script")).onreadystatechange=function(){c.removeChild(this),y.call(t)}}:function(t){setTimeout(a(y,t,1),0)}),t.exports={set:p,clear:d}},H6hf:function(t,e,n){var r=n("y3w9");t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&r(o.call(t)),e}}},"HAE/":function(t,e,n){var r=n("XKFU");r(r.S+r.F*!n("nh4g"),"Object",{defineProperty:n("hswa").f})},HEwt:function(t,e,n){"use strict";var r=n("m0Pp"),i=n("XKFU"),o=n("S/j/"),a=n("H6hf"),s=n("M6Qj"),c=n("ne8i"),u=n("8a7r"),l=n("J+6e");i(i.S+i.F*!n("XMVh")((function(t){Array.from(t)})),"Array",{from:function(t){var e,n,i,f,p=o(t),d="function"==typeof this?this:Array,h=arguments.length,g=h>1?arguments[1]:void 0,v=void 0!==g,m=0,y=l(p);if(v&&(g=r(g,h>2?arguments[2]:void 0,2)),null==y||d==Array&&s(y))for(n=new d(e=c(p.length));e>m;m++)u(n,m,v?g(p[m],m):p[m]);else for(f=y.call(p),n=new d;!(i=f.next()).done;m++)u(n,m,v?a(f,g,[i.value,m],!0):i.value);return n.length=m,n}})},Hsns:function(t,e,n){var r=n("93I4"),i=n("5T2Y").document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},I1BE:function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var i=(a=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),o=r.sources.map((function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"}));return[n].concat(o).concat([i]).join("\n")}var a;return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},i=0;i1?arguments[1]:void 0)}}),n("nGyu")(o)},"IU+Z":function(t,e,n){"use strict";n("sMXx");var r=n("KroJ"),i=n("Mukb"),o=n("eeVq"),a=n("vhPU"),s=n("K0xU"),c=n("Ugos"),u=s("species"),l=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),f=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var p=s(t),d=!o((function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})),h=d?!o((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[u]=function(){return n}),n[p](""),!e})):void 0;if(!d||!h||"replace"===t&&!l||"split"===t&&!f){var g=/./[p],v=n(a,p,""[t],(function(t,e,n,r,i){return e.exec===c?d&&!i?{done:!0,value:g.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}})),m=v[0],y=v[1];r(String.prototype,t,m),i(RegExp.prototype,p,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)})}}},IXt9:function(t,e,n){"use strict";var r=n("0/R4"),i=n("OP3Y"),o=n("K0xU")("hasInstance"),a=Function.prototype;o in a||n("hswa").f(a,o,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},IlFx:function(t,e,n){var r=n("XKFU"),i=n("y3w9"),o=Object.isExtensible;r(r.S,"Reflect",{isExtensible:function(t){return i(t),!o||o(t)}})},IsTG:function(t,e,n){(t.exports=n("I1BE")(!1)).push([t.i,'fieldset[disabled] .multiselect{pointer-events:none}.multiselect__spinner{position:absolute;right:1px;top:1px;width:48px;height:35px;background:#fff;display:block}.multiselect__spinner:after,.multiselect__spinner:before{position:absolute;content:"";top:50%;left:50%;margin:-8px 0 0 -8px;width:16px;height:16px;border-radius:100%;border:2px solid transparent;border-top-color:#41b883;box-shadow:0 0 0 1px transparent}.multiselect__spinner:before{-webkit-animation:spinning 2.4s cubic-bezier(.41,.26,.2,.62);animation:spinning 2.4s cubic-bezier(.41,.26,.2,.62);-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.multiselect__spinner:after{-webkit-animation:spinning 2.4s cubic-bezier(.51,.09,.21,.8);animation:spinning 2.4s cubic-bezier(.51,.09,.21,.8);-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.multiselect__loading-enter-active,.multiselect__loading-leave-active{-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;opacity:1}.multiselect__loading-enter,.multiselect__loading-leave-active{opacity:0}.multiselect,.multiselect__input,.multiselect__single{font-family:inherit;font-size:16px;touch-action:manipulation}.multiselect{box-sizing:content-box;display:block;position:relative;width:100%;min-height:40px;text-align:left;color:#35495e}.multiselect *{box-sizing:border-box}.multiselect:focus{outline:none}.multiselect--disabled{background:#ededed;pointer-events:none;opacity:.6}.multiselect--active{z-index:50}.multiselect--active:not(.multiselect--above) .multiselect__current,.multiselect--active:not(.multiselect--above) .multiselect__input,.multiselect--active:not(.multiselect--above) .multiselect__tags{border-bottom-left-radius:0;border-bottom-right-radius:0}.multiselect--active .multiselect__select{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.multiselect--above.multiselect--active .multiselect__current,.multiselect--above.multiselect--active .multiselect__input,.multiselect--above.multiselect--active .multiselect__tags{border-top-left-radius:0;border-top-right-radius:0}.multiselect__input,.multiselect__single{position:relative;display:inline-block;min-height:20px;line-height:20px;border:none;border-radius:5px;background:#fff;padding:0 0 0 5px;width:100%;-webkit-transition:border .1s ease;transition:border .1s ease;box-sizing:border-box;margin-bottom:8px;vertical-align:top}.multiselect__input:-ms-input-placeholder{color:#35495e}.multiselect__input::-webkit-input-placeholder{color:#35495e}.multiselect__input::-moz-placeholder{color:#35495e}.multiselect__input::-ms-input-placeholder{color:#35495e}.multiselect__input::placeholder{color:#35495e}.multiselect__tag~.multiselect__input,.multiselect__tag~.multiselect__single{width:auto}.multiselect__input:hover,.multiselect__single:hover{border-color:#cfcfcf}.multiselect__input:focus,.multiselect__single:focus{border-color:#a8a8a8;outline:none}.multiselect__single{padding-left:5px;margin-bottom:8px}.multiselect__tags-wrap{display:inline}.multiselect__tags{min-height:40px;display:block;padding:8px 40px 0 8px;border-radius:5px;border:1px solid #e8e8e8;background:#fff;font-size:14px}.multiselect__tag{position:relative;display:inline-block;padding:4px 26px 4px 10px;border-radius:5px;margin-right:10px;color:#fff;line-height:1;background:#41b883;margin-bottom:5px;white-space:nowrap;overflow:hidden;max-width:100%;text-overflow:ellipsis}.multiselect__tag-icon{cursor:pointer;margin-left:7px;position:absolute;right:0;top:0;bottom:0;font-weight:700;font-style:normal;width:22px;text-align:center;line-height:22px;-webkit-transition:all .2s ease;transition:all .2s ease;border-radius:5px}.multiselect__tag-icon:after{content:"\\D7";color:#266d4d;font-size:14px}.multiselect__tag-icon:focus,.multiselect__tag-icon:hover{background:#369a6e}.multiselect__tag-icon:focus:after,.multiselect__tag-icon:hover:after{color:#fff}.multiselect__current{min-height:40px;overflow:hidden;padding:8px 30px 0 12px;white-space:nowrap;border-radius:5px;border:1px solid #e8e8e8}.multiselect__current,.multiselect__select{line-height:16px;box-sizing:border-box;display:block;margin:0;text-decoration:none;cursor:pointer}.multiselect__select{position:absolute;width:40px;height:38px;right:1px;top:1px;padding:4px 8px;text-align:center;-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease, -webkit-transform .2s ease}.multiselect__select:before{position:relative;right:0;top:65%;color:#999;margin-top:4px;border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 0;content:""}.multiselect__placeholder{color:#adadad;display:inline-block;margin-bottom:10px;padding-top:2px}.multiselect--active .multiselect__placeholder{display:none}.multiselect__content-wrapper{position:absolute;display:block;background:#fff;width:100%;max-height:240px;overflow:auto;border:1px solid #e8e8e8;border-top:none;border-bottom-left-radius:5px;border-bottom-right-radius:5px;z-index:50;-webkit-overflow-scrolling:touch}.multiselect__content{list-style:none;display:inline-block;padding:0;margin:0;min-width:100%;vertical-align:top}.multiselect--above .multiselect__content-wrapper{bottom:100%;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom:none;border-top:1px solid #e8e8e8}.multiselect__content::webkit-scrollbar{display:none}.multiselect__element{display:block}.multiselect__option{display:block;padding:12px;min-height:40px;line-height:16px;text-decoration:none;text-transform:none;vertical-align:middle;position:relative;cursor:pointer;white-space:nowrap}.multiselect__option:after{top:0;right:0;position:absolute;line-height:40px;padding-right:12px;padding-left:20px;font-size:13px}.multiselect__option--highlight{background:#41b883;outline:none;color:#fff}.multiselect__option--highlight:after{content:attr(data-select);background:#41b883;color:#fff}.multiselect__option--selected{background:#f3f3f3;color:#35495e;font-weight:700}.multiselect__option--selected:after{content:attr(data-selected);color:silver}.multiselect__option--selected.multiselect__option--highlight{background:#ff6a6a;color:#fff}.multiselect__option--selected.multiselect__option--highlight:after{background:#ff6a6a;content:attr(data-deselect);color:#fff}.multiselect--disabled .multiselect__current,.multiselect--disabled .multiselect__select{background:#ededed;color:#a6a6a6}.multiselect__option--disabled{background:#ededed!important;color:#a6a6a6!important;cursor:text;pointer-events:none}.multiselect__option--group{background:#ededed;color:#35495e}.multiselect__option--group.multiselect__option--highlight{background:#35495e;color:#fff}.multiselect__option--group.multiselect__option--highlight:after{background:#35495e}.multiselect__option--disabled.multiselect__option--highlight{background:#dedede}.multiselect__option--group-selected.multiselect__option--highlight{background:#ff6a6a;color:#fff}.multiselect__option--group-selected.multiselect__option--highlight:after{background:#ff6a6a;content:attr(data-deselect);color:#fff}.multiselect-enter-active,.multiselect-leave-active{-webkit-transition:all .15s ease;transition:all .15s ease}.multiselect-enter,.multiselect-leave-active{opacity:0}.multiselect__strong{margin-bottom:8px;line-height:20px;display:inline-block;vertical-align:top}[dir=rtl] .multiselect{text-align:right}[dir=rtl] .multiselect__select{right:auto;left:1px}[dir=rtl] .multiselect__tags{padding:8px 8px 0 40px}[dir=rtl] .multiselect__content{text-align:right}[dir=rtl] .multiselect__option:after{right:auto;left:0}[dir=rtl] .multiselect__clear{right:auto;left:12px}[dir=rtl] .multiselect__spinner{right:auto;left:1px}@-webkit-keyframes spinning{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(2turn);transform:rotate(2turn)}}@keyframes spinning{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(2turn);transform:rotate(2turn)}}',""])},Iw71:function(t,e,n){var r=n("0/R4"),i=n("dyZX").document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},Izvi:function(t,e,n){n("I74W"),t.exports=n("g3g5").String.trimLeft},"J+6e":function(t,e,n){var r=n("I8a+"),i=n("K0xU")("iterator"),o=n("hPIQ");t.exports=n("g3g5").getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[r(t)]}},JCqj:function(t,e,n){"use strict";n("OGtf")("sup",(function(t){return function(){return t(this,"sup","","")}}))},JbTB:function(t,e,n){n("/8Fb"),t.exports=n("g3g5").Object.entries},Jcmo:function(t,e,n){var r=n("XKFU"),i=Math.exp;r(r.S,"Math",{cosh:function(t){return(i(t=+t)+i(-t))/2}})},JduL:function(t,e,n){n("Xtr8")("getOwnPropertyNames",(function(){return n("e7yV").f}))},"Ji/l":function(t,e,n){var r=n("XKFU");r(r.G+r.W+r.F*!n("D4iV").ABV,{DataView:n("7Qtz").DataView})},JiEa:function(t,e){e.f=Object.getOwnPropertySymbols},K0xU:function(t,e,n){var r=n("VTer")("wks"),i=n("ylqs"),o=n("dyZX").Symbol,a="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=a&&o[t]||(a?o:i)("Symbol."+t))}).store=r},KKXr:function(t,e,n){"use strict";var r=n("quPj"),i=n("y3w9"),o=n("69bn"),a=n("A5AN"),s=n("ne8i"),c=n("Xxuz"),u=n("Ugos"),l=n("eeVq"),f=Math.min,p=[].push,d=!l((function(){RegExp(4294967295,"y")}));n("IU+Z")("split",2,(function(t,e,n,l){var h;return h="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,e){var i=String(this);if(void 0===t&&0===e)return[];if(!r(t))return n.call(i,t,e);for(var o,a,s,c=[],l=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),f=0,d=void 0===e?4294967295:e>>>0,h=new RegExp(t.source,l+"g");(o=u.call(h,i))&&!((a=h.lastIndex)>f&&(c.push(i.slice(f,o.index)),o.length>1&&o.index=d));)h.lastIndex===o.index&&h.lastIndex++;return f===i.length?!s&&h.test("")||c.push(""):c.push(i.slice(f)),c.length>d?c.slice(0,d):c}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,r){var i=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):h.call(String(i),n,r)},function(t,e){var r=l(h,t,this,e,h!==n);if(r.done)return r.value;var u=i(t),p=String(this),g=o(u,RegExp),v=u.unicode,m=(u.ignoreCase?"i":"")+(u.multiline?"m":"")+(u.unicode?"u":"")+(d?"y":"g"),y=new g(d?u:"^(?:"+u.source+")",m),b=void 0===e?4294967295:e>>>0;if(0===b)return[];if(0===p.length)return null===c(y,p)?[p]:[];for(var w=0,x=0,_=[];xdocument.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[o[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=c(),void 0===e?n:i(n,e)}},L6xF:function(t,e,n){var r=n("lSZW");"string"==typeof r&&(r=[[t.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(t.exports=r.locals)},L9s1:function(t,e,n){"use strict";var r=n("XKFU"),i=n("0sh+");r(r.P+r.F*n("UUeW")("includes"),"String",{includes:function(t){return!!~i(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},LK8F:function(t,e,n){var r=n("XKFU");r(r.S,"Array",{isArray:n("EWmC")})},LQAc:function(t,e){t.exports=!1},LTTk:function(t,e,n){var r=n("XKFU"),i=n("OP3Y"),o=n("y3w9");r(r.S,"Reflect",{getPrototypeOf:function(t){return i(o(t))}})},LVwc:function(t,e){var n=Math.expm1;t.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:n},LZWt:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},Lgjv:function(t,e,n){var r=n("ne8i"),i=n("l0Rn"),o=n("vhPU");t.exports=function(t,e,n,a){var s=String(o(t)),c=s.length,u=void 0===n?" ":String(n),l=r(e);if(l<=c||""==u)return s;var f=l-c,p=i.call(u,Math.ceil(f/u.length));return p.length>f&&(p=p.slice(0,f)),a?p+s:s+p}},Ljet:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},LyE8:function(t,e,n){"use strict";var r=n("eeVq");t.exports=function(t,e){return!!t&&r((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},M6Qj:function(t,e,n){var r=n("hPIQ"),i=n("K0xU")("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},MfQN:function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},MtdB:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},Mukb:function(t,e,n){var r=n("hswa"),i=n("RjD/");t.exports=n("nh4g")?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},N8g3:function(t,e,n){e.f=n("K0xU")},NO8f:function(t,e,n){n("7DDg")("Uint8",1,(function(t){return function(e,n,r){return t(this,e,n,r)}}))},NegM:function(t,e,n){var r=n("2faE"),i=n("rr1i");t.exports=n("jmDH")?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},Nr18:function(t,e,n){"use strict";var r=n("S/j/"),i=n("d/Gc"),o=n("ne8i");t.exports=function(t){for(var e=r(this),n=o(e.length),a=arguments.length,s=i(a>1?arguments[1]:void 0,n),c=a>2?arguments[2]:void 0,u=void 0===c?n:i(c,n);u>s;)e[s++]=t;return e}},Nz9U:function(t,e,n){"use strict";var r=n("XKFU"),i=n("aCFj"),o=[].join;r(r.P+r.F*(n("Ymqv")!=Object||!n("LyE8")(o)),"Array",{join:function(t){return o.call(i(this),void 0===t?",":t)}})},OEbY:function(t,e,n){n("nh4g")&&"g"!=/./g.flags&&n("hswa").f(RegExp.prototype,"flags",{configurable:!0,get:n("C/va")})},OG14:function(t,e,n){"use strict";var r=n("y3w9"),i=n("g6HL"),o=n("Xxuz");n("IU+Z")("search",1,(function(t,e,n,a){return[function(n){var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=a(n,t,this);if(e.done)return e.value;var s=r(t),c=String(this),u=s.lastIndex;i(u,0)||(s.lastIndex=0);var l=o(s,c);return i(s.lastIndex,u)||(s.lastIndex=u),null===l?-1:l.index}]}))},OGtf:function(t,e,n){var r=n("XKFU"),i=n("eeVq"),o=n("vhPU"),a=/"/g,s=function(t,e,n,r){var i=String(o(t)),s="<"+e;return""!==n&&(s+=" "+n+'="'+String(r).replace(a,""")+'"'),s+">"+i+""};t.exports=function(t,e){var n={};n[t]=e(s),r(r.P+r.F*i((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3})),"String",n)}},OP3Y:function(t,e,n){var r=n("aagx"),i=n("S/j/"),o=n("YTvA")("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},OnI7:function(t,e,n){var r=n("dyZX"),i=n("g3g5"),o=n("LQAc"),a=n("N8g3"),s=n("hswa").f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},Oyvg:function(t,e,n){var r=n("dyZX"),i=n("Xbzi"),o=n("hswa").f,a=n("kJMx").f,s=n("quPj"),c=n("C/va"),u=r.RegExp,l=u,f=u.prototype,p=/a/g,d=/a/g,h=new u(p)!==p;if(n("nh4g")&&(!h||n("eeVq")((function(){return d[n("K0xU")("match")]=!1,u(p)!=p||u(d)==d||"/a/i"!=u(p,"i")})))){u=function(t,e){var n=this instanceof u,r=s(t),o=void 0===e;return!n&&r&&t.constructor===u&&o?t:i(h?new l(r&&!o?t.source:t,e):l((r=t instanceof u)?t.source:t,r&&o?c.call(t):e),n?this:f,u)};for(var g=function(t){t in u||o(u,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})},v=a(l),m=0;v.length>m;)g(v[m++]);f.constructor=u,u.prototype=f,n("KroJ")(r,"RegExp",u)}n("elZq")("RegExp")},PKUr:function(t,e,n){var r=n("dyZX").parseInt,i=n("qncB").trim,o=n("/e88"),a=/^[-+]?0[xX]/;t.exports=8!==r(o+"08")||22!==r(o+"0x16")?function(t,e){var n=i(String(t),3);return r(n,e>>>0||(a.test(n)?16:10))}:r},QNwp:function(t,e,n){n("7VC1"),t.exports=n("g3g5").String.padEnd},QaDb:function(t,e,n){"use strict";var r=n("Kuth"),i=n("RjD/"),o=n("fyDq"),a={};n("Mukb")(a,n("K0xU")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:i(1,n)}),o(t,e+" Iterator")}},R5XZ:function(t,e,n){var r=n("dyZX"),i=n("XKFU"),o=n("ol8x"),a=[].slice,s=/MSIE .\./.test(o),c=function(t){return function(e,n){var r=arguments.length>2,i=!!r&&a.call(arguments,2);return t(r?function(){("function"==typeof e?e:Function(e)).apply(this,i)}:e,n)}};i(i.G+i.B+i.F*s,{setTimeout:c(r.setTimeout),setInterval:c(r.setInterval)})},RW0V:function(t,e,n){var r=n("S/j/"),i=n("DVgA");n("Xtr8")("keys",(function(){return function(t){return i(r(t))}}))},RYi7:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},"RjD/":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},Ro2m:function(t,e,n){window,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s=11)}([function(t,e,n){"use strict";e.__esModule=!0;var r,i=(r=n(43))&&r.__esModule?r:{default:r};e.default=i.default||function(t){for(var e=1;e0?r:n)(t)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(27);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e,n){var r=n(8),i=n(7);t.exports=function(t){return r(i(t))}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){"use strict";n.r(e);var r=n(0),i=n.n(r),o={basic:{swatches:["#1FBC9C","#1CA085","#2ECC70","#27AF60","#3398DB","#2980B9","#A463BF","#8E43AD","#3D556E","#222F3D","#F2C511","#F39C19","#E84B3C","#C0382B","#DDE6E8","#BDC3C8"],rowLength:4},"text-basic":{swatches:["#CC0001","#E36101","#FFCC00","#009900","#0066CB","#000000","#FFFFFF"],showBorder:!0},"text-advanced":{swatches:[["#000000","#434343","#666666","#999999","#b7b7b7","#cccccc","#d9d9d9","#efefef","#f3f3f3","#ffffff"],["#980000","#ff0000","#ff9900","#ffff00","#00ff00","#00ffff","#4a86e8","#0000ff","#9900ff","#ff00ff"],["#e6b8af","#f4cccc","#fce5cd","#fff2cc","#d9ead3","#d0e0e3","#c9daf8","#cfe2f3","#d9d2e9","#ead1dc"],["#dd7e6b","#ea9999","#f9cb9c","#ffe599","#b6d7a8","#a2c4c9","#a4c2f4","#9fc5e8","#b4a7d6","#d5a6bd"],["#cc4125","#e06666","#f6b26b","#ffd966","#93c47d","#76a5af","#6d9eeb","#6fa8dc","#8e7cc3","#c27ba0"],["#a61c00","#cc0000","#e69138","#f1c232","#6aa84f","#45818e","#3c78d8","#3d85c6","#674ea7","#a64d79"],["#85200c","#990000","#b45f06","#bf9000","#38761d","#134f5c","#1155cc","#0b5394","#351c75","#741b47"],["#5b0f00","#660000","#783f04","#7f6000","#274e13","#0c343d","#1c4587","#073763","#20124d","#4c1130"]],borderRadius:"0",rowLength:10,swatchSize:24,spacingSize:0},"material-basic":{swatches:["#F44336","#E91E63","#9C27B0","#673AB7","#3F51B5","#2196F3","#03A9F4","#00BCD4","#009688","#4CAF50","#8BC34A","#CDDC39","#FFEB3B","#FFC107","#FF9800","#FF5722","#795548","#9E9E9E","#607D8B"]},"material-light":{swatches:["#EF9A9A","#F48FB1","#CE93D8","#B39DDB","#9FA8DA","#90CAF9","#81D4FA","#80DEEA","#80CBC4","#A5D6A7","#C5E1A5","#E6EE9C","#FFF59D","#FFE082","#FFCC80","#FFAB91","#BCAAA4","#EEEEEE","#B0BEC5"]},"material-dark":{swatches:["#D32F2F","#C2185B","#7B1FA2","#512DA8","#303F9F","#1976D2","#0288D1","#0097A7","#00796B","#388E3C","#689F38","#AFB42B","#FBC02D","#FFA000","#F57C00","#E64A19","#5D4037","#616161","#455A64"]}};function a(t,e,n,r,i,o,a,s){var c=typeof(t=t||{}).default;"object"!==c&&"function"!==c||(t=t.default);var u,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),r&&(l.functional=!0),o&&(l._scopeId=o),a?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},l._ssrRegister=u):i&&(u=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),u)if(l.functional){l._injectStyles=u;var f=l.render;l.render=function(t,e){return u.call(e),f(t,e)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,u):[u]}return{exports:t,options:l}}var s=a({name:"swatches",components:{Swatch:a({name:"swatch",components:{Check:a({name:"check",data:function(){return{}}},(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"vue-swatches__check__wrapper vue-swatches--has-children-centered"},[e("div",{staticClass:"vue-swatches__check__circle vue-swatches--has-children-centered"},[e("svg",{staticClass:"check",attrs:{version:"1.1",role:"presentation",width:"12",height:"12",viewBox:"0 0 1792 1792"}},[e("path",{staticClass:"vue-swatches__check__path",attrs:{d:"M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z"}})])])])}),[],!1,(function(t){n(13)}),null,null).exports},props:{borderRadius:{type:String},disabled:{type:Boolean},exceptionMode:{type:String},isException:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},showCheckbox:{type:Boolean},showBorder:{type:Boolean},size:{type:Number},spacingSize:{type:Number},swatchColor:{type:String,default:""},swatchStyle:{type:Object}},data:function(){return{}},computed:{computedSwatchStyle:function(){return{display:this.isException&&"hidden"===this.exceptionMode?"none":"inline-block",width:this.size+"px",height:this.size+"px",marginBottom:this.spacingSize+"px",marginRight:this.spacingSize+"px",borderRadius:this.borderRadius,backgroundColor:""!==this.swatchColor?this.swatchColor:"#FFFFFF",cursor:this.cursorStyle}},cursorStyle:function(){return this.disabled?"not-allowed":this.isException&&"disabled"===this.exceptionMode?"not-allowed":"pointer"},swatchStyles:function(){return[this.computedSwatchStyle,this.swatchStyle]}}},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vue-swatches__swatch",class:{"vue-swatches__swatch--border":t.showBorder,"vue-swatches__swatch--selected":t.selected,"vue-swatches__swatch--is-exception":t.isException||t.disabled},style:t.swatchStyles},[""===t.swatchColor?n("div",{staticClass:"vue-swatches__diagonal--wrapper vue-swatches--has-children-centered"},[n("div",{staticClass:"vue-swatches__diagonal"})]):t._e(),t._v(" "),n("check",{directives:[{name:"show",rawName:"v-show",value:t.showCheckbox&&t.selected,expression:"showCheckbox && selected"}]})],1)}),[],!1,(function(t){n(15)}),null,null).exports},props:{backgroundColor:{type:String,default:"#ffffff"},closeOnSelect:{type:Boolean,default:!0},colors:{type:[Array,Object,String],default:"basic"},exceptions:{type:Array,default:function(){return[]}},exceptionMode:{type:String,default:"disabled"},disabled:{type:Boolean,default:!1},fallbackInputClass:{type:[Array,Object,String],default:null},fallbackOkClass:{type:[Array,Object,String],default:null},fallbackOkText:{type:String,default:"Ok"},fallbackInputType:{type:String,default:function(){return"text"},validator:function(t){return-1!==["text","color"].indexOf(t)}},inline:{type:Boolean,default:!1},maxHeight:{type:[Number,String],default:null},shapes:{type:String,default:"squares"},popoverTo:{type:String,default:"right"},rowLength:{type:[Number,String],default:null},showBorder:{type:Boolean,default:null},showFallback:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!0},swatchSize:{type:[Number,String],default:null},swatchStyle:{type:[Object,Array],default:function(){}},triggerStyle:{type:[Object,Array],default:function(){}},wrapperStyle:{type:[Object,Array],default:function(){}},value:{type:String,default:null}},data:function(){return{presetBorderRadius:null,presetMaxHeight:null,presetRowLength:null,presetShowBorder:null,presetSwatchSize:null,presetSpacingSize:null,internalValue:this.value,internalIsOpen:!1}},computed:{isNested:function(){return!!(this.computedColors&&this.computedColors.length>0&&this.computedColors[0]instanceof Array)},isOpen:function(){return!this.inline&&this.internalIsOpen},isNoColor:function(){return this.checkEquality("",this.value)},computedColors:function(){return this.colors instanceof Array?this.colors:this.extractSwatchesFromPreset(this.colors)},computedBorderRadius:function(){return null!==this.presetBorderRadius?this.presetBorderRadius:this.borderRadius},computedExceptionMode:function(){return"hidden"===this.exceptionMode?this.exceptionMode:"disabled"===this.exceptionMode?this.exceptionMode:void 0},computedMaxHeight:function(){return null!==this.maxHeight?Number(this.maxHeight):null!==this.presetMaxHeight?this.presetMaxHeight:300},computedRowLength:function(){return null!==this.rowLength?Number(this.rowLength):null!==this.presetRowLength?this.presetRowLength:4},computedSwatchSize:function(){return null!==this.swatchSize?Number(this.swatchSize):null!==this.presetSwatchSize?this.presetSwatchSize:42},computedSpacingSize:function(){return null!==this.presetSpacingSize?this.presetSpacingSize:this.spacingSize},computedShowBorder:function(){return null!==this.showBorder?this.showBorder:null!==this.presetShowBorder&&this.presetShowBorder},borderRadius:function(){return"squares"===this.shapes?Math.round(.25*this.computedSwatchSize)+"px":"circles"===this.shapes?"50%":void 0},spacingSize:function(){return Math.round(.25*this.computedSwatchSize)},wrapperWidth:function(){return this.computedRowLength*(this.computedSwatchSize+this.computedSpacingSize)},computedtriggerStyle:function(){return{width:"42px",height:"42px",backgroundColor:this.value?this.value:"#ffffff",borderRadius:"circles"===this.shapes?"50%":"10px"}},triggerStyles:function(){return[this.computedtriggerStyle,this.triggerStyle]},containerStyle:function(){var t={backgroundColor:this.backgroundColor},e={};return this.inline?t:("right"===this.popoverTo?e={left:0}:"left"===this.popoverTo&&(e={right:0}),i()({},e,t,{maxHeight:this.computedMaxHeight+"px"}))},containerStyles:function(){return[this.containerStyle]},computedWrapperStyle:function(){var t={paddingTop:this.computedSpacingSize+"px",paddingLeft:this.computedSpacingSize+"px"};return this.inline?t:i()({},t,{width:this.wrapperWidth+"px"})},wrapperStyles:function(){return[this.computedWrapperStyle,this.wrapperStyle]},computedFallbackWrapperStyle:function(){var t={marginLeft:this.computedSpacingSize+"px",paddingBottom:this.computedSpacingSize+"px"};return this.inline?t:i()({},t,{width:this.wrapperWidth-this.computedSpacingSize+"px"})},computedFallbackWrapperStyles:function(){return[this.computedFallbackWrapperStyle]}},watch:{value:function(t){this.internalValue=t}},methods:{checkEquality:function(t,e){return!(!t&&""!==t||!e&&""!==e)&&t.toUpperCase()===e.toUpperCase()},checkException:function(t){return-1!==this.exceptions.map((function(t){return t.toUpperCase()})).indexOf(t.toUpperCase())},hidePopover:function(){this.internalIsOpen=!1,this.$el.blur(),this.$emit("close",this.internalValue)},onBlur:function(t){this.isOpen&&(null!==t&&this.$el.contains(t)||(this.internalIsOpen=!1,this.$emit("close",this.internalValue)))},onFallbackButtonClick:function(){this.hidePopover()},showPopover:function(){this.isOpen||this.inline||this.disabled||(this.internalIsOpen=!0,this.$el.focus(),this.$emit("open"))},togglePopover:function(){this.isOpen?this.hidePopover():this.showPopover()},updateSwatch:function(t){var e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).fromFallbackInput;this.checkException(t)||this.disabled||(this.internalValue=t,this.$emit("input",t),!this.closeOnSelect||this.inline||e||this.hidePopover())},extractSwatchesFromPreset:function(t){var e;return(e=t instanceof Object?t:o[t]).borderRadius&&(this.presetBorderRadius=e.borderRadius),e.maxHeight&&(this.presetMaxHeight=e.maxHeight),e.rowLength&&(this.presetRowLength=e.rowLength),e.showBorder&&(this.presetShowBorder=e.showBorder),e.swatchSize&&(this.presetSwatchSize=e.swatchSize),(0===e.spacingSize||e.spacingSize)&&(this.presetSpacingSize=e.spacingSize),e.swatches}}},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vue-swatches",attrs:{tabindex:"0"},on:{blur:function(e){return e.target!==e.currentTarget?null:(n=e,t.onBlur(n.relatedTarget));var n}}},[t.inline?t._e():n("div",{ref:"trigger-wrapper",on:{click:t.togglePopover}},[t._t("trigger",[n("div",{staticClass:"vue-swatches__trigger",class:{"vue-swatches--is-empty":!t.value,"vue-swatches--is-disabled":t.disabled},style:t.triggerStyles},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.isNoColor,expression:"isNoColor"}],staticClass:"vue-swatches__diagonal--wrapper vue-swatches--has-children-centered"},[n("div",{staticClass:"vue-swatches__diagonal"})])])])],2),t._v(" "),n("transition",{attrs:{name:"vue-swatches-show-hide"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.inline||t.isOpen,expression:"inline || isOpen"}],staticClass:"vue-swatches__container",class:{"vue-swatches--inline":t.inline},style:t.containerStyles},[n("div",{staticClass:"vue-swatches__wrapper",style:t.wrapperStyles},[t.isNested?t._l(t.computedColors,(function(e,r){return n("div",{key:r,staticClass:"vue-swatches__row"},t._l(e,(function(e){return n("swatch",{key:e,attrs:{"border-radius":t.computedBorderRadius,disabled:t.disabled,"exception-mode":t.computedExceptionMode,"is-exception":t.checkException(e),selected:t.checkEquality(e,t.value),size:t.computedSwatchSize,"spacing-size":t.computedSpacingSize,"show-border":t.computedShowBorder,"show-checkbox":t.showCheckbox,"swatch-color":e,"swatch-style":t.swatchStyle},nativeOn:{click:function(n){t.updateSwatch(e)}}})})))})):t._l(t.computedColors,(function(e){return n("swatch",{key:e,attrs:{"border-radius":t.computedBorderRadius,disabled:t.disabled,"exception-mode":t.computedExceptionMode,"is-exception":t.checkException(e),selected:t.checkEquality(e,t.value),size:t.computedSwatchSize,"spacing-size":t.computedSpacingSize,"show-border":t.computedShowBorder,"show-checkbox":t.showCheckbox,"swatch-color":e,"swatch-style":t.swatchStyle},nativeOn:{click:function(n){t.updateSwatch(e)}}})}))],2),t._v(" "),t.showFallback?n("div",{staticClass:"vue-swatches__fallback__wrapper",style:t.computedFallbackWrapperStyles},[n("span",{staticClass:"vue-swatches__fallback__input--wrapper"},[n("input",{ref:"fallbackInput",staticClass:"vue-swatches__fallback__input",class:t.fallbackInputClass,attrs:{type:t.fallbackInputType},domProps:{value:t.internalValue},on:{input:function(e){return t.updateSwatch(e.target.value,{fromFallbackInput:!0})}}})]),t._v(" "),n("button",{staticClass:"vue-swatches__fallback__button",class:t.fallbackOkClass,on:{click:function(e){return e.preventDefault(),t.onFallbackButtonClick(e)}}},[t._v("\n "+t._s(t.fallbackOkText)+"\n ")])]):t._e()])])],1)}),[],!1,(function(t){n(45)}),null,null).exports;n.d(e,"Swatches",(function(){return s})),e.default=s},,function(t,e,n){},,function(t,e,n){},function(t,e,n){var r=n(7);t.exports=function(t){return Object(r(t))}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports=!0},function(t,e,n){var r=n(4),i=n(5),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(21)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(t,e,n){var r=n(22)("keys"),i=n(20);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(6),i=Math.max,o=Math.min;t.exports=function(t,e){return(t=r(t))<0?i(t+e,0):o(t,e)}},function(t,e,n){var r=n(6),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(9),i=n(25),o=n(24);t.exports=function(t){return function(e,n,a){var s,c=r(e),u=i(c.length),l=o(a,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var r=n(10),i=n(9),o=n(26)(!1),a=n(23)("IE_PROTO");t.exports=function(t,e){var n,s=i(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~o(u,n)||u.push(n));return u}},function(t,e,n){var r=n(28),i=n(19);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){"use strict";var r=n(29),i=n(18),o=n(17),a=n(16),s=n(8),c=Object.assign;t.exports=!c||n(1)((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r}))?function(t,e){for(var n=a(t),c=arguments.length,u=1,l=i.f,f=o.f;c>u;)for(var p,d=s(arguments[u++]),h=l?r(d).concat(l(d)):r(d),g=h.length,v=0;g>v;)f.call(d,p=h[v++])&&(n[p]=d[p]);return n}:c},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(3);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){var r=n(3),i=n(5).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,n){t.exports=!n(2)&&!n(1)((function(){return 7!=Object.defineProperty(n(33)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(3);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){var r=n(35),i=n(34),o=n(32),a=Object.defineProperty;e.f=n(2)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(36),i=n(31);t.exports=n(2)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){var r=n(38);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r=n(5),i=n(4),o=n(39),a=n(37),s=n(10),c=function(t,e,n){var u,l,f,p=t&c.F,d=t&c.G,h=t&c.S,g=t&c.P,v=t&c.B,m=t&c.W,y=d?i:i[e]||(i[e]={}),b=y.prototype,w=d?r:h?r[e]:(r[e]||{}).prototype;for(u in d&&(n=e),n)(l=!p&&w&&void 0!==w[u])&&s(y,u)||(f=l?w[u]:n[u],y[u]=d&&"function"!=typeof w[u]?n[u]:v&&l?o(f,r):m&&w[u]==f?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(f):g&&"function"==typeof f?o(Function.call,f):f,g&&((y.virtual||(y.virtual={}))[u]=f,t&c.R&&b&&!b[u]&&a(b,u,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){var r=n(40);r(r.S+r.F,"Object",{assign:n(30)})},function(t,e,n){n(41),t.exports=n(4).Object.assign},function(t,e,n){t.exports={default:n(42),__esModule:!0}},,function(t,e,n){}])},"S/j/":function(t,e,n){var r=n("vhPU");t.exports=function(t){return Object(r(t))}},SMB2:function(t,e,n){"use strict";n("OGtf")("bold",(function(t){return function(){return t(this,"b","","")}}))},SPin:function(t,e,n){"use strict";var r=n("XKFU"),i=n("eyMr");r(r.P+r.F*!n("LyE8")([].reduceRight,!0),"Array",{reduceRight:function(t){return i(this,t,arguments.length,arguments[1],!0)}})},SRfc:function(t,e,n){"use strict";var r=n("y3w9"),i=n("ne8i"),o=n("A5AN"),a=n("Xxuz");n("IU+Z")("match",1,(function(t,e,n,s){return[function(n){var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=s(n,t,this);if(e.done)return e.value;var c=r(t),u=String(this);if(!c.global)return a(c,u);var l=c.unicode;c.lastIndex=0;for(var f,p=[],d=0;null!==(f=a(c,u));){var h=String(f[0]);p[d]=h,""===h&&(c.lastIndex=o(u,i(c.lastIndex),l)),d++}return 0===d?null:p}]}))},SlkY:function(t,e,n){var r=n("m0Pp"),i=n("H6hf"),o=n("M6Qj"),a=n("y3w9"),s=n("ne8i"),c=n("J+6e"),u={},l={};(e=t.exports=function(t,e,n,f,p){var d,h,g,v,m=p?function(){return t}:c(t),y=r(n,f,e?2:1),b=0;if("function"!=typeof m)throw TypeError(t+" is not iterable!");if(o(m)){for(d=s(t.length);d>b;b++)if((v=e?y(a(h=t[b])[0],h[1]):y(t[b]))===u||v===l)return v}else for(g=m.call(t);!(h=g.next()).done;)if((v=i(g,y,h.value,e))===u||v===l)return v}).BREAK=u,e.RETURN=l},T1qB:function(t,e,n){(function(t){!function(t){var e=function(){try{return!!Symbol.iterator}catch(t){return!1}}(),n=function(t){var n={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return e&&(n[Symbol.iterator]=function(){return n}),n},r=function(t){return encodeURIComponent(t).replace(/%20/g,"+")},i=function(t){return decodeURIComponent(String(t).replace(/\+/g," "))};(function(){try{var e=t.URLSearchParams;return"a=1"===new e("?a=1").toString()&&"function"==typeof e.prototype.set}catch(t){return!1}})()||function(){var i=function(t){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var e=typeof t;if("undefined"===e);else if("string"===e)""!==t&&this._fromString(t);else if(t instanceof i){var n=this;t.forEach((function(t,e){n.append(e,t)}))}else{if(null===t||"object"!==e)throw new TypeError("Unsupported input's type for URLSearchParams");if("[object Array]"===Object.prototype.toString.call(t))for(var r=0;re[0]?1:0})),t._entries&&(t._entries={});for(var n=0;n1?i(r[1]):"")}})}(void 0!==t?t:"undefined"!=typeof window?window:"undefined"!=typeof self?self:this),function(t){if(function(){try{var e=new t.URL("b","http://a");return e.pathname="c%20d","http://a/c%20d"===e.href&&e.searchParams}catch(t){return!1}}()||function(){var e=t.URL,n=function(e,n){"string"!=typeof e&&(e=String(e));var r,i=document;if(n&&(void 0===t.location||n!==t.location.href)){(r=(i=document.implementation.createHTMLDocument("")).createElement("base")).href=n,i.head.appendChild(r);try{if(0!==r.href.indexOf(n))throw new Error(r.href)}catch(t){throw new Error("URL unable to set base "+n+" due to "+t)}}var o=i.createElement("a");if(o.href=e,r&&(i.body.appendChild(o),o.href=o.href),":"===o.protocol||!/:/.test(o.href))throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:o});var a=new t.URLSearchParams(this.search),s=!0,c=!0,u=this;["append","delete","set"].forEach((function(t){var e=a[t];a[t]=function(){e.apply(a,arguments),s&&(c=!1,u.search=a.toString(),c=!0)}})),Object.defineProperty(this,"searchParams",{value:a,enumerable:!0});var l=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==l&&(l=this.search,c&&(s=!1,this.searchParams._fromString(this.search),s=!0))}})},r=n.prototype;["hash","host","hostname","port","protocol"].forEach((function(t){!function(t){Object.defineProperty(r,t,{get:function(){return this._anchorElement[t]},set:function(e){this._anchorElement[t]=e},enumerable:!0})}(t)})),Object.defineProperty(r,"search",{get:function(){return this._anchorElement.search},set:function(t){this._anchorElement.search=t,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(r,{toString:{get:function(){var t=this;return function(){return t.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(t){this._anchorElement.href=t,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(t){this._anchorElement.pathname=t},enumerable:!0},origin:{get:function(){var t={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],e=this._anchorElement.port!=t&&""!==this._anchorElement.port;return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(e?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(t){},enumerable:!0},username:{get:function(){return""},set:function(t){},enumerable:!0}}),n.createObjectURL=function(t){return e.createObjectURL.apply(e,arguments)},n.revokeObjectURL=function(t){return e.revokeObjectURL.apply(e,arguments)},t.URL=n}(),void 0!==t.location&&!("origin"in t.location)){var e=function(){return t.location.protocol+"//"+t.location.hostname+(t.location.port?":"+t.location.port:"")};try{Object.defineProperty(t.location,"origin",{get:e,enumerable:!0})}catch(n){setInterval((function(){t.location.origin=e()}),100)}}}(void 0!==t?t:"undefined"!=typeof window?window:"undefined"!=typeof self?self:this)}).call(this,n("yLpj"))},T39b:function(t,e,n){"use strict";var r=n("wmvG"),i=n("s5qY");t.exports=n("4LiD")("Set",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(i(this,"Set"),t=0===t?0:t,t)}},r)},TIpR:function(t,e,n){"use strict";n("VRzm"),n("CX2u"),t.exports=n("g3g5").Promise.finally},Tdpu:function(t,e,n){n("7DDg")("Float64",8,(function(t){return function(e,n,r){return t(this,e,n,r)}}))},Tze0:function(t,e,n){"use strict";n("qncB")("trim",(function(t){return function(){return t(this,3)}}))},U2t9:function(t,e,n){var r=n("XKFU"),i=Math.asinh;r(r.S+r.F*!(i&&1/i(0)>0),"Math",{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Math.log(e+Math.sqrt(e*e+1)):e}})},UExd:function(t,e,n){var r=n("nh4g"),i=n("DVgA"),o=n("aCFj"),a=n("UqcF").f;t.exports=function(t){return function(e){for(var n,s=o(e),c=i(s),u=c.length,l=0,f=[];u>l;)n=c[l++],r&&!a.call(s,n)||f.push(t?[n,s[n]]:s[n]);return f}}},UUeW:function(t,e,n){var r=n("K0xU")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(t){}}return!0}},Ugos:function(t,e,n){"use strict";var r,i,o=n("C/va"),a=RegExp.prototype.exec,s=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),l=void 0!==/()??/.exec("")[1];(u||l)&&(c=function(t){var e,n,r,i,c=this;return l&&(n=new RegExp("^"+c.source+"$(?!\\s)",o.call(c))),u&&(e=c.lastIndex),r=a.call(c,t),u&&r&&(c.lastIndex=c.global?r.index+r[0].length:e),l&&r&&r.length>1&&s.call(r[0],n,(function(){for(i=1;io;)a(n[o++]);t._c=[],t._n=!1,e&&!t._h&&A(t)}))}},A=function(t){m.call(c,(function(){var e,n,r,i=t._v,o=j(t);if(o&&(e=w((function(){D?S.emit("unhandledRejection",i,t):(n=c.onunhandledrejection)?n({promise:t,reason:i}):(r=c.console)&&r.error&&r.error("Unhandled promise rejection",i)})),t._h=D||j(t)?2:1),t._a=void 0,o&&e.e)throw e.v}))},j=function(t){return 1!==t._h&&0===(t._a||t._c).length},L=function(t){m.call(c,(function(){var e;D?S.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})}))},R=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),I(e,!0))},N=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw k("Promise can't be resolved itself");(e=P(t))?y((function(){var r={_w:n,_d:!1};try{e.call(t,u(N,r,1),u(R,r,1))}catch(t){R.call(r,t)}})):(n._v=t,n._s=1,I(n,!1))}catch(t){R.call({_w:n,_d:!1},t)}}};T||(F=function(t){h(this,F,"Promise","_h"),d(t),r.call(this);try{t(u(N,this,1),u(R,this,1))}catch(t){R.call(this,t)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n("3Lyj")(F.prototype,{then:function(t,e){var n=O(v(this,F));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=D?S.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&I(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r;this.promise=t,this.resolve=u(N,t,1),this.reject=u(R,t,1)},b.f=O=function(t){return t===F||t===a?new o(t):i(t)}),f(f.G+f.W+f.F*!T,{Promise:F}),n("fyDq")(F,"Promise"),n("elZq")("Promise"),a=n("g3g5").Promise,f(f.S+f.F*!T,"Promise",{reject:function(t){var e=O(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(s||!T),"Promise",{resolve:function(t){return _(s&&this===a?F:this,t)}}),f(f.S+f.F*!(T&&n("XMVh")((function(t){F.all(t).catch(M)}))),"Promise",{all:function(t){var e=this,n=O(e),r=n.resolve,i=n.reject,o=w((function(){var n=[],o=0,a=1;g(t,!1,(function(t){var s=o++,c=!1;n.push(void 0),a++,e.resolve(t).then((function(t){c||(c=!0,n[s]=t,--a||r(n))}),i)})),--a||r(n)}));return o.e&&i(o.v),n.promise},race:function(t){var e=this,n=O(e),r=n.reject,i=w((function(){g(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return i.e&&r(i.v),n.promise}})},VTer:function(t,e,n){var r=n("g3g5"),i=n("dyZX"),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("LQAc")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},Vd3H:function(t,e,n){"use strict";var r=n("XKFU"),i=n("2OiF"),o=n("S/j/"),a=n("eeVq"),s=[].sort,c=[1,2,3];r(r.P+r.F*(a((function(){c.sort(void 0)}))||!a((function(){c.sort(null)}))||!n("LyE8")(s)),"Array",{sort:function(t){return void 0===t?s.call(o(this)):s.call(o(this),i(t))}})},VpUO:function(t,e,n){var r=n("XKFU"),i=n("d/Gc"),o=String.fromCharCode,a=String.fromCodePoint;r(r.S+r.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,a=0;r>a;){if(e=+arguments[a++],i(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?o(e):o(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},VsWn:function(t,e,n){n("7PI8"),t.exports=n("WEpk").global},W9dy:function(t,e,n){n("ioFf"),n("hHhE"),n("HAE/"),n("WLL4"),n("mYba"),n("5Pf0"),n("RW0V"),n("JduL"),n("DW2E"),n("z2o2"),n("mura"),n("Zshi"),n("V/DX"),n("FlsD"),n("91GP"),n("25dN"),n("/SS/"),n("Btvt"),n("2Spj"),n("f3/d"),n("IXt9"),n("GNAe"),n("tyy+"),n("xfY5"),n("A2zW"),n("VKir"),n("Ljet"),n("/KAi"),n("fN96"),n("7h0T"),n("sbF8"),n("h/M4"),n("knhD"),n("XfKG"),n("BP8U"),n("fyVe"),n("U2t9"),n("2atp"),n("+auO"),n("MtdB"),n("Jcmo"),n("nzyx"),n("BC7C"),n("x8ZO"),n("9P93"),n("eHKK"),n("BJ/l"),n("pp/T"),n("CyHz"),n("bBoP"),n("x8Yj"),n("hLT2"),n("VpUO"),n("eI33"),n("Tze0"),n("XfO3"),n("oDIu"),n("rvZc"),n("L9s1"),n("FLlr"),n("9VmF"),n("hEkN"),n("nIY7"),n("+oPb"),n("SMB2"),n("0mN4"),n("bDcW"),n("nsiH"),n("0LDn"),n("tUrg"),n("84bF"),n("FEjr"),n("Zz4T"),n("JCqj"),n("eM6i"),n("AphP"),n("jqX0"),n("h7Nl"),n("yM4b"),n("LK8F"),n("HEwt"),n("6AQ9"),n("Nz9U"),n("I78e"),n("Vd3H"),n("8+KV"),n("bWfx"),n("0l/t"),n("dZ+Y"),n("YJVH"),n("DNiP"),n("SPin"),n("V+eJ"),n("mGWK"),n("dE+T"),n("bHtr"),n("dRSK"),n("INYr"),n("0E+W"),n("yt8O"),n("Oyvg"),n("sMXx"),n("a1Th"),n("OEbY"),n("SRfc"),n("pIFo"),n("OG14"),n("KKXr"),n("VRzm"),n("9AAn"),n("T39b"),n("EK0E"),n("wCsR"),n("xm80"),n("Ji/l"),n("sFw1"),n("NO8f"),n("aqI/"),n("Faw5"),n("r1bV"),n("tuSo"),n("nCnK"),n("Y9lz"),n("Tdpu"),n("3xty"),n("I5cv"),n("iMoV"),n("uhZd"),n("f/aN"),n("0YWM"),n("694e"),n("LTTk"),n("9rMk"),n("IlFx"),n("xpiv"),n("oZ/O"),n("klPD"),n("knU9"),t.exports=n("g3g5")},WEpk:function(t,e){var n=t.exports={version:"2.6.10"};"number"==typeof __e&&(__e=n)},WLL4:function(t,e,n){var r=n("XKFU");r(r.S+r.F*!n("nh4g"),"Object",{defineProperties:n("FJW5")})},XKFU:function(t,e,n){var r=n("dyZX"),i=n("g3g5"),o=n("Mukb"),a=n("KroJ"),s=n("m0Pp"),c=function(t,e,n){var u,l,f,p,d=t&c.F,h=t&c.G,g=t&c.S,v=t&c.P,m=t&c.B,y=h?r:g?r[e]||(r[e]={}):(r[e]||{}).prototype,b=h?i:i[e]||(i[e]={}),w=b.prototype||(b.prototype={});for(u in h&&(n=e),n)f=((l=!d&&y&&void 0!==y[u])?y:n)[u],p=m&&l?s(f,r):v&&"function"==typeof f?s(Function.call,f):f,y&&a(y,u,f,t&c.U),b[u]!=f&&o(b,u,p),v&&w[u]!=f&&(w[u]=f)};r.core=i,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},XMVh:function(t,e,n){var r=n("K0xU")("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],a=o[r]();a.next=function(){return{done:n=!0}},o[r]=function(){return a},t(o)}catch(t){}return n}},Xbzi:function(t,e,n){var r=n("0/R4"),i=n("i5dc").set;t.exports=function(t,e,n){var o,a=e.constructor;return a!==n&&"function"==typeof a&&(o=a.prototype)!==n.prototype&&r(o)&&i&&i(t,o),t}},XfKG:function(t,e,n){var r=n("XKFU"),i=n("11IZ");r(r.S+r.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},XfO3:function(t,e,n){"use strict";var r=n("AvRE")(!0);n("Afnz")(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},Xtr8:function(t,e,n){var r=n("XKFU"),i=n("g3g5"),o=n("eeVq");t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*o((function(){n(1)})),"Object",a)}},Xxuz:function(t,e,n){"use strict";var r=n("I8a+"),i=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var o=n.call(t,e);if("object"!=typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return i.call(t,e)}},Y7ZC:function(t,e,n){var r=n("5T2Y"),i=n("WEpk"),o=n("2GTP"),a=n("NegM"),s=n("B+OT"),c=function(t,e,n){var u,l,f,p=t&c.F,d=t&c.G,h=t&c.S,g=t&c.P,v=t&c.B,m=t&c.W,y=d?i:i[e]||(i[e]={}),b=y.prototype,w=d?r:h?r[e]:(r[e]||{}).prototype;for(u in d&&(n=e),n)(l=!p&&w&&void 0!==w[u])&&s(y,u)||(f=l?w[u]:n[u],y[u]=d&&"function"!=typeof w[u]?n[u]:v&&l?o(f,r):m&&w[u]==f?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(f):g&&"function"==typeof f?o(Function.call,f):f,g&&((y.virtual||(y.virtual={}))[u]=f,t&c.R&&b&&!b[u]&&a(b,u,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},Y9lz:function(t,e,n){n("7DDg")("Float32",4,(function(t){return function(e,n,r){return t(this,e,n,r)}}))},YJVH:function(t,e,n){"use strict";var r=n("XKFU"),i=n("CkkT")(4);r(r.P+r.F*!n("LyE8")([].every,!0),"Array",{every:function(t){return i(this,t,arguments[1])}})},YTvA:function(t,e,n){var r=n("VTer")("keys"),i=n("ylqs");t.exports=function(t){return r[t]||(r[t]=i(t))}},Ymqv:function(t,e,n){var r=n("LZWt");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},Yp8f:function(t,e,n){n("6VaU"),t.exports=n("g3g5").Array.flatMap},Z2Ku:function(t,e,n){"use strict";var r=n("XKFU"),i=n("w2a5")(!0);r(r.P,"Array",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")("includes")},Z6vF:function(t,e,n){var r=n("ylqs")("meta"),i=n("0/R4"),o=n("aagx"),a=n("hswa").f,s=0,c=Object.isExtensible||function(){return!0},u=!n("eeVq")((function(){return c(Object.preventExtensions({}))})),l=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},f=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,r)){if(!c(t))return"F";if(!e)return"E";l(t)}return t[r].i},getWeak:function(t,e){if(!o(t,r)){if(!c(t))return!0;if(!e)return!1;l(t)}return t[r].w},onFreeze:function(t){return u&&f.NEED&&c(t)&&!o(t,r)&&l(t),t}}},ZD67:function(t,e,n){"use strict";var r=n("3Lyj"),i=n("Z6vF").getWeak,o=n("y3w9"),a=n("0/R4"),s=n("9gX7"),c=n("SlkY"),u=n("CkkT"),l=n("aagx"),f=n("s5qY"),p=u(5),d=u(6),h=0,g=function(t){return t._l||(t._l=new v)},v=function(){this.a=[]},m=function(t,e){return p(t.a,(function(t){return t[0]===e}))};v.prototype={get:function(t){var e=m(this,t);if(e)return e[1]},has:function(t){return!!m(this,t)},set:function(t,e){var n=m(this,t);n?n[1]=e:this.a.push([t,e])},delete:function(t){var e=d(this.a,(function(e){return e[0]===t}));return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,o){var u=t((function(t,r){s(t,u,e,"_i"),t._t=e,t._i=h++,t._l=void 0,null!=r&&c(r,n,t[o],t)}));return r(u.prototype,{delete:function(t){if(!a(t))return!1;var n=i(t);return!0===n?g(f(this,e)).delete(t):n&&l(n,this._i)&&delete n[this._i]},has:function(t){if(!a(t))return!1;var n=i(t);return!0===n?g(f(this,e)).has(t):n&&l(n,this._i)}}),u},def:function(t,e,n){var r=i(o(e),!0);return!0===r?g(t).set(e,n):r[t._i]=n,t},ufstore:g}},Zshi:function(t,e,n){var r=n("0/R4");n("Xtr8")("isFrozen",(function(t){return function(e){return!r(e)||!!t&&t(e)}}))},Zz4T:function(t,e,n){"use strict";n("OGtf")("sub",(function(t){return function(){return t(this,"sub","","")}}))},a1Th:function(t,e,n){"use strict";n("OEbY");var r=n("y3w9"),i=n("C/va"),o=n("nh4g"),a=/./.toString,s=function(t){n("KroJ")(RegExp.prototype,"toString",t,!0)};n("eeVq")((function(){return"/a/b"!=a.call({source:"a",flags:"b"})}))?s((function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)})):"toString"!=a.name&&s((function(){return a.call(this)}))},aCFj:function(t,e,n){var r=n("Ymqv"),i=n("vhPU");t.exports=function(t){return r(i(t))}},"aET+":function(t,e,n){var r,i,o={},a=(r=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===i&&(i=r.apply(this,arguments)),i}),s=function(t,e){return e?e.querySelector(t):document.querySelector(t)},c=function(t){var e={};return function(t,n){if("function"==typeof t)return t();if(void 0===e[t]){var r=s.call(this,t,n);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(t){r=null}e[t]=r}return e[t]}}(),u=null,l=0,f=[],p=n("9tPo");function d(t,e){for(var n=0;n=0&&f.splice(e,1)}function m(t){var e=document.createElement("style");if(void 0===t.attrs.type&&(t.attrs.type="text/css"),void 0===t.attrs.nonce){var r=function(){0;return n.nc}();r&&(t.attrs.nonce=r)}return y(e,t.attrs),g(t,e),e}function y(t,e){Object.keys(e).forEach((function(n){t.setAttribute(n,e[n])}))}function b(t,e){var n,r,i,o;if(e.transform&&t.css){if(!(o="function"==typeof e.transform?e.transform(t.css):e.transform.default(t.css)))return function(){};t.css=o}if(e.singleton){var a=l++;n=u||(u=m(e)),r=_.bind(null,n,a,!1),i=_.bind(null,n,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",y(e,t.attrs),g(t,e),e}(e),r=S.bind(null,n,e),i=function(){v(n),n.href&&URL.revokeObjectURL(n.href)}):(n=m(e),r=k.bind(null,n),i=function(){v(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else i()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=h(t,e);return d(n,e),function(t){for(var r=[],i=0;il;)for(var d,h=c(arguments[l++]),g=f?i(h).concat(f(h)):i(h),v=g.length,m=0;v>m;)d=g[m++],r&&!p.call(h,d)||(n[d]=h[d]);return n}:u},"d/Gc":function(t,e,n){var r=n("RYi7"),i=Math.max,o=Math.min;t.exports=function(t,e){return(t=r(t))<0?i(t+e,0):o(t,e)}},"dE+T":function(t,e,n){var r=n("XKFU");r(r.P,"Array",{copyWithin:n("upKx")}),n("nGyu")("copyWithin")},dRSK:function(t,e,n){"use strict";var r=n("XKFU"),i=n("CkkT")(5),o=!0;"find"in[]&&Array(1).find((function(){o=!1})),r(r.P+r.F*o,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")("find")},"dZ+Y":function(t,e,n){"use strict";var r=n("XKFU"),i=n("CkkT")(3);r(r.P+r.F*!n("LyE8")([].some,!0),"Array",{some:function(t){return i(this,t,arguments[1])}})},dasq:function(t,e,n){(function(t){!function(t){"use strict";var e,n=t.URLSearchParams&&t.URLSearchParams.prototype.get?t.URLSearchParams:null,r=n&&"a=1"===new n({a:1}).toString(),i=n&&"+"===new n("s=%2B").get("s"),o="__URLSearchParams__",a=!n||((e=new n).append("s"," &"),"s=+%26"===e.toString()),s=f.prototype,c=!(!t.Symbol||!t.Symbol.iterator);if(!(n&&r&&i&&a)){s.append=function(t,e){v(this[o],t,e)},s.delete=function(t){delete this[o][t]},s.get=function(t){var e=this[o];return t in e?e[t][0]:null},s.getAll=function(t){var e=this[o];return t in e?e[t].slice(0):[]},s.has=function(t){return t in this[o]},s.set=function(t,e){this[o][t]=[""+e]},s.toString=function(){var t,e,n,r,i=this[o],a=[];for(e in i)for(n=p(e),t=0,r=i[e];ts;)a.push(String(e[s++])),s=0:f>p;p+=d)p in l&&(s=e(s,l[p],p,u));return s}},"f/aN":function(t,e,n){"use strict";var r=n("XKFU"),i=n("y3w9"),o=function(t){this._t=i(t),this._i=0;var e,n=this._k=[];for(e in t)n.push(e)};n("QaDb")(o,"Object",(function(){var t,e=this._k;do{if(this._i>=e.length)return{value:void 0,done:!0}}while(!((t=e[this._i++])in this._t));return{value:t,done:!1}})),r(r.S,"Reflect",{enumerate:function(t){return new o(t)}})},"f3/d":function(t,e,n){var r=n("hswa").f,i=Function.prototype,o=/^\s*function ([^ (]*)/;"name"in i||n("nh4g")&&r(i,"name",{configurable:!0,get:function(){try{return(""+this).match(o)[1]}catch(t){return""}}})},fA63:function(t,e,n){"use strict";n("qncB")("trimRight",(function(t){return function(){return t(this,2)}}),"trimEnd")},fN96:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{isInteger:n("nBIS")})},fyDq:function(t,e,n){var r=n("hswa").f,i=n("aagx"),o=n("K0xU")("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},fyVe:function(t,e,n){var r=n("XKFU"),i=n("1sa7"),o=Math.sqrt,a=Math.acosh;r(r.S+r.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},g2aq:function(t,e,n){"use strict";n("W9dy"),n("FDph"),n("Yp8f"),n("wYy3"),n("QNwp"),n("Izvi"),n("ln0Z"),n("wDwx"),n("+Xmh"),n("zFFn"),n("JbTB"),n("TIpR"),n("FxUG"),n("ls82")},g3g5:function(t,e){var n=t.exports={version:"2.6.10"};"number"==typeof __e&&(__e=n)},g4EE:function(t,e,n){"use strict";var r=n("y3w9"),i=n("apmT");t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return i(r(this),"number"!=t)}},g6HL:function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},gHnn:function(t,e,n){var r=n("dyZX"),i=n("GZEu").set,o=r.MutationObserver||r.WebKitMutationObserver,a=r.process,s=r.Promise,c="process"==n("LZWt")(a);t.exports=function(){var t,e,n,u=function(){var r,i;for(c&&(r=a.domain)&&r.exit();t;){i=t.fn,t=t.next;try{i()}catch(r){throw t?n():e=void 0,r}}e=void 0,r&&r.enter()};if(c)n=function(){a.nextTick(u)};else if(!o||r.navigator&&r.navigator.standalone)if(s&&s.resolve){var l=s.resolve(void 0);n=function(){l.then(u)}}else n=function(){i.call(r,u)};else{var f=!0,p=document.createTextNode("");new o(u).observe(p,{characterData:!0}),n=function(){p.data=f=!f}}return function(r){var i={fn:r,next:void 0};e&&(e.next=i),t||(t=i,n()),e=i}}},"h/M4":function(t,e,n){var r=n("XKFU");r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},h7Nl:function(t,e,n){var r=Date.prototype,i=r.toString,o=r.getTime;new Date(NaN)+""!="Invalid Date"&&n("KroJ")(r,"toString",(function(){var t=o.call(this);return t==t?i.call(this):"Invalid Date"}))},hEkN:function(t,e,n){"use strict";n("OGtf")("anchor",(function(t){return function(e){return t(this,"a","name",e)}}))},hHhE:function(t,e,n){var r=n("XKFU");r(r.S,"Object",{create:n("Kuth")})},hLT2:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},hPIQ:function(t,e){t.exports={}},hfxi:function(t,e,n){(t.exports=n("I1BE")(!1)).push([t.i,"\n.preview-wrapper{\n height:200px;\n width:200px;\n padding:5px;\n}\n.image-preview{\n height:190px;\n width:190px;\n}\n",""])},hhXQ:function(t,e,n){var r=n("XKFU"),i=n("UExd")(!1);r(r.S,"Object",{values:function(t){return i(t)}})},hswa:function(t,e,n){var r=n("y3w9"),i=n("xpql"),o=n("apmT"),a=Object.defineProperty;e.f=n("nh4g")?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},i5dc:function(t,e,n){var r=n("0/R4"),i=n("y3w9"),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n("m0Pp")(Function.call,n("EemH").f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:o}},iMoV:function(t,e,n){var r=n("hswa"),i=n("XKFU"),o=n("y3w9"),a=n("apmT");i(i.S+i.F*n("eeVq")((function(){Reflect.defineProperty(r.f({},1,{value:1}),1,{value:2})})),"Reflect",{defineProperty:function(t,e,n){o(t),e=a(e,!0),o(n);try{return r.f(t,e,n),!0}catch(t){return!1}}})},ioFf:function(t,e,n){"use strict";var r=n("dyZX"),i=n("aagx"),o=n("nh4g"),a=n("XKFU"),s=n("KroJ"),c=n("Z6vF").KEY,u=n("eeVq"),l=n("VTer"),f=n("fyDq"),p=n("ylqs"),d=n("K0xU"),h=n("N8g3"),g=n("OnI7"),v=n("1MBn"),m=n("EWmC"),y=n("y3w9"),b=n("0/R4"),w=n("S/j/"),x=n("aCFj"),_=n("apmT"),k=n("RjD/"),S=n("Kuth"),C=n("e7yV"),E=n("EemH"),F=n("JiEa"),D=n("hswa"),M=n("DVgA"),O=E.f,T=D.f,P=C.f,I=r.Symbol,A=r.JSON,j=A&&A.stringify,L=d("_hidden"),R=d("toPrimitive"),N={}.propertyIsEnumerable,U=l("symbol-registry"),V=l("symbols"),B=l("op-symbols"),K=Object.prototype,X="function"==typeof I&&!!F.f,z=r.QObject,Y=!z||!z.prototype||!z.prototype.findChild,q=o&&u((function(){return 7!=S(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=O(K,e);r&&delete K[e],T(t,e,n),r&&t!==K&&T(K,e,r)}:T,W=function(t){var e=V[t]=S(I.prototype);return e._k=t,e},H=X&&"symbol"==typeof I.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof I},$=function(t,e,n){return t===K&&$(B,e,n),y(t),e=_(e,!0),y(n),i(V,e)?(n.enumerable?(i(t,L)&&t[L][e]&&(t[L][e]=!1),n=S(n,{enumerable:k(0,!1)})):(i(t,L)||T(t,L,k(1,{})),t[L][e]=!0),q(t,e,n)):T(t,e,n)},G=function(t,e){y(t);for(var n,r=v(e=x(e)),i=0,o=r.length;o>i;)$(t,n=r[i++],e[n]);return t},Z=function(t){var e=N.call(this,t=_(t,!0));return!(this===K&&i(V,t)&&!i(B,t))&&(!(e||!i(this,t)||!i(V,t)||i(this,L)&&this[L][t])||e)},J=function(t,e){if(t=x(t),e=_(e,!0),t!==K||!i(V,e)||i(B,e)){var n=O(t,e);return!n||!i(V,e)||i(t,L)&&t[L][e]||(n.enumerable=!0),n}},Q=function(t){for(var e,n=P(x(t)),r=[],o=0;n.length>o;)i(V,e=n[o++])||e==L||e==c||r.push(e);return r},tt=function(t){for(var e,n=t===K,r=P(n?B:x(t)),o=[],a=0;r.length>a;)!i(V,e=r[a++])||n&&!i(K,e)||o.push(V[e]);return o};X||(s((I=function(){if(this instanceof I)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===K&&e.call(B,n),i(this,L)&&i(this[L],t)&&(this[L][t]=!1),q(this,t,k(1,n))};return o&&Y&&q(K,t,{configurable:!0,set:e}),W(t)}).prototype,"toString",(function(){return this._k})),E.f=J,D.f=$,n("kJMx").f=C.f=Q,n("UqcF").f=Z,F.f=tt,o&&!n("LQAc")&&s(K,"propertyIsEnumerable",Z,!0),h.f=function(t){return W(d(t))}),a(a.G+a.W+a.F*!X,{Symbol:I});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)d(et[nt++]);for(var rt=M(d.store),it=0;rt.length>it;)g(rt[it++]);a(a.S+a.F*!X,"Symbol",{for:function(t){return i(U,t+="")?U[t]:U[t]=I(t)},keyFor:function(t){if(!H(t))throw TypeError(t+" is not a symbol!");for(var e in U)if(U[e]===t)return e},useSetter:function(){Y=!0},useSimple:function(){Y=!1}}),a(a.S+a.F*!X,"Object",{create:function(t,e){return void 0===e?S(t):G(S(t),e)},defineProperty:$,defineProperties:G,getOwnPropertyDescriptor:J,getOwnPropertyNames:Q,getOwnPropertySymbols:tt});var ot=u((function(){F.f(1)}));a(a.S+a.F*ot,"Object",{getOwnPropertySymbols:function(t){return F.f(w(t))}}),A&&a(a.S+a.F*(!X||u((function(){var t=I();return"[null]"!=j([t])||"{}"!=j({a:t})||"{}"!=j(Object(t))}))),"JSON",{stringify:function(t){for(var e,n,r=[t],i=1;arguments.length>i;)r.push(arguments[i++]);if(n=e=r[1],(b(e)||void 0!==t)&&!H(t))return m(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!H(e))return e}),r[1]=e,j.apply(A,r)}}),I.prototype[R]||n("Mukb")(I.prototype,R,I.prototype.valueOf),f(I,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},"jl8+":function(t,e,n){t.exports=function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e(e.s=60)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var r=n(49)("wks"),i=n(30),o=n(0).Symbol,a="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=a&&o[t]||(a?o:i)("Symbol."+t))}).store=r},function(t,e,n){var r=n(5);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){var r=n(0),i=n(10),o=n(8),a=n(6),s=n(11),c=function(t,e,n){var u,l,f,p,d=t&c.F,h=t&c.G,g=t&c.S,v=t&c.P,m=t&c.B,y=h?r:g?r[e]||(r[e]={}):(r[e]||{}).prototype,b=h?i:i[e]||(i[e]={}),w=b.prototype||(b.prototype={});for(u in h&&(n=e),n)f=((l=!d&&y&&void 0!==y[u])?y:n)[u],p=m&&l?s(f,r):v&&"function"==typeof f?s(Function.call,f):f,y&&a(y,u,f,t&c.U),b[u]!=f&&o(b,u,p),v&&w[u]!=f&&(w[u]=f)};r.core=i,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(7)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(0),i=n(8),o=n(12),a=n(30)("src"),s=Function.toString,c=(""+s).split("toString");n(10).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var u="function"==typeof n;u&&(o(n,"name")||i(n,"name",e)),t[e]!==n&&(u&&(o(n,a)||i(n,a,t[e]?""+t[e]:c.join(String(e)))),t===r?t[e]=n:s?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[a]||s.call(this)}))},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(13),i=n(25);t.exports=n(4)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(14);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(2),i=n(41),o=n(29),a=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";var r=n(7);t.exports=function(t,e){return!!t&&r((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},function(t,e,n){var r=n(23),i=n(16);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(53),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(11),i=n(23),o=n(28),a=n(19),s=n(64);t.exports=function(t,e){var n=1==t,c=2==t,u=3==t,l=4==t,f=6==t,p=5==t||f,d=e||s;return function(e,s,h){for(var g,v,m=o(e),y=i(m),b=r(s,h,3),w=a(y.length),x=0,_=n?d(e,w):c?d(e,0):void 0;w>x;x++)if((p||x in y)&&(v=b(g=y[x],x,m),t))if(n)_[x]=v;else if(v)switch(t){case 3:return!0;case 5:return g;case 6:return x;case 2:_.push(g)}else if(l)return!1;return f?-1:u||l?l:_}}},function(t,e,n){var r=n(5),i=n(0).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(9);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){t.exports=!1},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(13).f,i=n(12),o=n(1)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(49)("keys"),i=n(30);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(16);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(5);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e,n){"use strict";var r=n(0),i=n(12),o=n(9),a=n(67),s=n(29),c=n(7),u=n(77).f,l=n(45).f,f=n(13).f,p=n(51).trim,d=r.Number,h=d,g=d.prototype,v="Number"==o(n(44)(g)),m="trim"in String.prototype,y=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){var n,r,i,o=(e=m?e.trim():p(e,3)).charCodeAt(0);if(43===o||45===o){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+e}for(var a,c=e.slice(2),u=0,l=c.length;ui)return NaN;return parseInt(c,r)}}return+e};if(!d(" 0o1")||!d("0b1")||d("+0x1")){d=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof d&&(v?c((function(){g.valueOf.call(n)})):"Number"!=o(n))?a(new h(y(e)),n,d):y(e)};for(var b,w=n(4)?u(h):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),x=0;w.length>x;x++)i(h,b=w[x])&&!i(d,b)&&f(d,b,l(h,b));d.prototype=g,g.constructor=d,n(6)(r,"Number",d)}},function(t,e,n){"use strict";function r(t){return!(0===t||(!Array.isArray(t)||0!==t.length)&&t)}function i(t,e,n,r){return t.filter((function(t){return function(t,e){return void 0===t&&(t="undefined"),null===t&&(t="null"),!1===t&&(t="false"),-1!==t.toString().toLowerCase().indexOf(e.trim())}(r(t,n),e)}))}function o(t){return t.filter((function(t){return!t.$isLabel}))}function a(t,e){return function(n){return n.reduce((function(n,r){return r[t]&&r[t].length?(n.push({$groupLabel:r[e],$isLabel:!0}),n.concat(r[t])):n}),[])}}function s(t,e,r,o,a){return function(s){return s.map((function(s){var c;if(!s[r])return console.warn("Options passed to vue-multiselect do not contain groups, despite the config."),[];var u=i(s[r],t,e,a);return u.length?(c={},n.i(p.a)(c,o,s[o]),n.i(p.a)(c,r,u),c):[]}))}}var c=n(59),u=n(54),l=(n.n(u),n(95)),f=(n.n(l),n(31)),p=(n.n(f),n(58)),d=n(91),h=(n.n(d),n(98)),g=(n.n(h),n(92)),v=(n.n(g),n(88)),m=(n.n(v),n(97)),y=(n.n(m),n(89)),b=(n.n(y),n(96)),w=(n.n(b),n(93)),x=(n.n(w),n(90)),_=(n.n(x),function(){for(var t=arguments.length,e=new Array(t),n=0;n-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isOptionDisabled:function(t){return!!t.$isDisabled},getOptionLabel:function(t){if(r(t))return"";if(t.isTag)return t.label;if(t.$isLabel)return t.$groupLabel;var e=this.customLabel(t,this.label);return r(e)?"":e},select:function(t,e){if(t.$isLabel&&this.groupSelect)this.selectGroup(t);else if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isDisabled||t.$isLabel)&&(!this.max||!this.multiple||this.internalValue.length!==this.max)&&("Tab"!==e||this.pointerDirty)){if(t.isTag)this.$emit("tag",t.label,this.id),this.search="",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void("Tab"!==e&&this.removeElement(t));this.$emit("select",t,this.id),this.multiple?this.$emit("input",this.internalValue.concat([t]),this.id):this.$emit("input",t,this.id),this.clearOnSelect&&(this.search="")}this.closeOnSelect&&this.deactivate()}},selectGroup:function(t){var e=this,n=this.options.find((function(n){return n[e.groupLabel]===t.$groupLabel}));if(n)if(this.wholeGroupSelected(n)){this.$emit("remove",n[this.groupValues],this.id);var r=this.internalValue.filter((function(t){return-1===n[e.groupValues].indexOf(t)}));this.$emit("input",r,this.id)}else{var i=n[this.groupValues].filter((function(t){return!(e.isOptionDisabled(t)||e.isSelected(t))}));this.$emit("select",i,this.id),this.$emit("input",this.internalValue.concat(i),this.id)}},wholeGroupSelected:function(t){var e=this;return t[this.groupValues].every((function(t){return e.isSelected(t)||e.isOptionDisabled(t)}))},wholeGroupDisabled:function(t){return t[this.groupValues].every(this.isOptionDisabled)},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled&&!t.$isDisabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var r="object"===n.i(c.a)(t)?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);if(this.$emit("remove",t,this.id),this.multiple){var i=this.internalValue.slice(0,r).concat(this.internalValue.slice(r+1));this.$emit("input",i,this.id)}else this.$emit("input",null,this.id);this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf("Delete")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=""),this.$nextTick((function(){return t.$refs.search.focus()}))):this.$el.focus(),this.$emit("open",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=""),this.$emit("close",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if("undefined"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||"below"===this.openDirection||"bottom"===this.openDirection?(this.preferredOpenDirection="below",this.optimizedHeight=Math.min(e-40,this.maxHeight)):(this.preferredOpenDirection="above",this.optimizedHeight=Math.min(t-40,this.maxHeight))}}}}},function(t,e,n){"use strict";var r=n(54),i=(n.n(r),n(31));n.n(i),e.a={data:function(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight},visibleElements:function(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()},isOpen:function(){this.pointerDirty=!1}},methods:{optionHighlight:function(t,e){return{"multiselect__option--highlight":t===this.pointer&&this.showPointer,"multiselect__option--selected":this.isSelected(e)}},groupHighlight:function(t,e){var n=this;if(!this.groupSelect)return["multiselect__option--group","multiselect__option--disabled"];var r=this.options.find((function(t){return t[n.groupLabel]===e.$groupLabel}));return r&&!this.wholeGroupDisabled(r)?["multiselect__option--group",{"multiselect__option--highlight":t===this.pointer&&this.showPointer},{"multiselect__option--group-selected":this.wholeGroupSelected(r)}]:"multiselect__option--disabled"},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Enter",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet:function(t){this.pointer=t,this.pointerDirty=!0}}}},function(t,e,n){"use strict";var r=n(36),i=n(74),o=n(15),a=n(18);t.exports=n(72)(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(t,e,n){"use strict";var r=n(31),i=(n.n(r),n(32)),o=n(33);e.a={name:"vue-multiselect",mixins:[i.a,o.a],props:{name:{type:String,default:""},selectLabel:{type:String,default:"Press enter to select"},selectGroupLabel:{type:String,default:"Press enter to select group"},selectedLabel:{type:String,default:"Selected"},deselectLabel:{type:String,default:"Press enter to remove"},deselectGroupLabel:{type:String,default:"Press enter to deselect group"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return"and ".concat(t," more")}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:""},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible:function(){return(this.singleValue||0===this.singleValue)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible:function(){return!(this.internalValue.length||this.searchable&&this.isOpen)},visibleValues:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue:function(){return this.internalValue[0]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:""},deselectGroupLabelText:function(){return this.showLabels?this.deselectGroupLabel:""},selectLabelText:function(){return this.showLabels?this.selectLabel:""},selectGroupLabelText:function(){return this.showLabels?this.selectGroupLabel:""},selectedLabelText:function(){return this.showLabels?this.selectedLabel:""},inputStyle:function(){if(this.searchable||this.multiple&&this.value&&this.value.length)return this.isOpen?{width:"100%"}:{width:"0",position:"absolute",padding:"0"}},contentStyle:function(){return this.options.length?{display:"inline-block"}:{display:"block"}},isAbove:function(){return"above"===this.openDirection||"top"===this.openDirection||"below"!==this.openDirection&&"bottom"!==this.openDirection&&"above"===this.preferredOpenDirection},showSearchInput:function(){return this.searchable&&(!this.hasSingleSelectedSlot||!this.visibleSingleValue&&0!==this.visibleSingleValue||this.isOpen)}}}},function(t,e,n){var r=n(1)("unscopables"),i=Array.prototype;null==i[r]&&n(8)(i,r,{}),t.exports=function(t){i[r][t]=!0}},function(t,e,n){var r=n(18),i=n(19),o=n(85);t.exports=function(t){return function(e,n,a){var s,c=r(e),u=i(c.length),l=o(a,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var r=n(9),i=n(1)("toStringTag"),o="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?n:o?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,n){"use strict";var r=n(2);t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){var r=n(0).document;t.exports=r&&r.documentElement},function(t,e,n){t.exports=!n(4)&&!n(7)((function(){return 7!=Object.defineProperty(n(21)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(9);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){"use strict";function r(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=i(e),this.reject=i(n)}var i=n(14);t.exports.f=function(t){return new r(t)}},function(t,e,n){var r=n(2),i=n(76),o=n(22),a=n(27)("IE_PROTO"),s=function(){},c=function(){var t,e=n(21)("iframe"),r=o.length;for(e.style.display="none",n(40).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write(" \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/datagrid/datetime.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/datagrid/datetime.vue new file mode 100755 index 000000000..b4cf9df7a --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/datagrid/datetime.vue @@ -0,0 +1,38 @@ + + + diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/date.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/date.vue new file mode 100755 index 000000000..febc6d92d --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/date.vue @@ -0,0 +1,38 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/datetime.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/datetime.vue new file mode 100755 index 000000000..6070a8b11 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/datetime.vue @@ -0,0 +1,43 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/flash-wrapper.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/flash-wrapper.vue new file mode 100755 index 000000000..902807869 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/flash-wrapper.vue @@ -0,0 +1,39 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/flash.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/flash.vue new file mode 100755 index 000000000..665700d27 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/flash.vue @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/image/image-item.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/image/image-item.vue new file mode 100755 index 000000000..88363c47e --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/image/image-item.vue @@ -0,0 +1,82 @@ + + + diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/image/image-upload.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/image/image-upload.vue new file mode 100755 index 000000000..1cff3d072 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/image/image-upload.vue @@ -0,0 +1,81 @@ + + + diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/image/image-wrapper.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/image/image-wrapper.vue new file mode 100755 index 000000000..d70e62023 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/image/image-wrapper.vue @@ -0,0 +1,113 @@ + + + diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/modal.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/modal.vue new file mode 100755 index 000000000..c76b190cb --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/modal.vue @@ -0,0 +1,49 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/swatch-picker.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/swatch-picker.vue new file mode 100755 index 000000000..d511d9d2c --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/swatch-picker.vue @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/tabs/tab.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/tabs/tab.vue new file mode 100755 index 000000000..0f6b38b82 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/tabs/tab.vue @@ -0,0 +1,29 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/tabs/tabs.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/tabs/tabs.vue new file mode 100755 index 000000000..fb501e0a6 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/tabs/tabs.vue @@ -0,0 +1,37 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/index.js b/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/index.js new file mode 100755 index 000000000..cf27a01b5 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/index.js @@ -0,0 +1 @@ +export { default as Treeview } from './tree-view'; \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-checkbox.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-checkbox.vue new file mode 100755 index 000000000..ea14a47a3 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-checkbox.vue @@ -0,0 +1,91 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-item.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-item.vue new file mode 100755 index 000000000..a65e9de0d --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-item.vue @@ -0,0 +1,248 @@ + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-radio.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-radio.vue new file mode 100755 index 000000000..6a62a4584 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-radio.vue @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-view.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-view.vue new file mode 100755 index 000000000..1d8d88a67 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/tree-view/tree-view.vue @@ -0,0 +1,128 @@ + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/debounce.js b/packages/Webkul/Ui/src/Resources/assets/js/debounce.js new file mode 100644 index 000000000..60a01b535 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/debounce.js @@ -0,0 +1,12 @@ +module.exports = function debounce (fn, delay) { + var timeoutID = null + + return function () { + clearTimeout(timeoutID) + var args = arguments + var that = this + timeoutID = setTimeout(function () { + fn.apply(that, args) + }, delay) + } +} \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/directives/alert.vue b/packages/Webkul/Ui/src/Resources/assets/js/directives/alert.vue new file mode 100755 index 000000000..7c7c5fd0b --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/directives/alert.vue @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/directives/code.vue b/packages/Webkul/Ui/src/Resources/assets/js/directives/code.vue new file mode 100755 index 000000000..473121418 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/directives/code.vue @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/directives/debounce.vue b/packages/Webkul/Ui/src/Resources/assets/js/directives/debounce.vue new file mode 100644 index 000000000..7b0f35e64 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/directives/debounce.vue @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/directives/slugify.vue b/packages/Webkul/Ui/src/Resources/assets/js/directives/slugify.vue new file mode 100755 index 000000000..6399fadb6 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/directives/slugify.vue @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/dropdown.js b/packages/Webkul/Ui/src/Resources/assets/js/dropdown.js new file mode 100755 index 000000000..8b4a361c0 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/js/dropdown.js @@ -0,0 +1,87 @@ +$(function() { + $(document).click(function(e) { + var target = e.target; + if(!$(target).parents('.dropdown-open').length || $(target).is('li') || $(target).is('a')) { + $('.dropdown-list').hide(); + $('.dropdown-toggle').removeClass('active'); + } + }); + + $('body').delegate('.dropdown-toggle', 'click', function(e) { + toggleDropdown(e); + }); + + function toggleDropdown(e) { + var currentElement = $(e.currentTarget); + + + $('.dropdown-list').hide(); + if(currentElement.hasClass('active')) { + currentElement.removeClass('active'); + } else { + currentElement.addClass('active'); + currentElement.parent().find('.dropdown-list').fadeIn(100); + currentElement.parent().addClass('dropdown-open'); + autoDropupDropdown(); + } + } + + $('.dropdown-list .search-box .control').on('input', function() { + var currentElement = $(this); + currentElement.parents(".dropdown-list").find('li').each(function() { + var text = $(this).text().trim().toLowerCase(); + var value = $(this).attr('data-id'); + if(value) { + var isTextContained = text.search(currentElement.val().toLowerCase()); + var isValueContained = value.search(currentElement.val()); + if(isTextContained < 0 && isValueContained < 0) { + $(this).hide(); + } else { + $(this).show(); + flag = 1; + } + } else { + var isTextContained = text.search(currentElement.val().toLowerCase()); + if(isTextContained < 0) { + $(this).hide(); + } else { + $(this).show(); + } + } + }); + }); + + function autoDropupDropdown() { + dropdown = $(".dropdown-open"); + if(!dropdown.find('.dropdown-list').hasClass('top-left') && !dropdown.find('.dropdown-list').hasClass('top-right') && dropdown.length) { + dropdown = dropdown.find('.dropdown-list'); + height = dropdown.height() + 50; + var topOffset = dropdown.offset().top - 70; + var bottomOffset = $(window).height() - topOffset - dropdown.height(); + + if(bottomOffset > topOffset || height < bottomOffset) { + dropdown.removeClass("bottom"); + if(dropdown.hasClass('top-right')) { + dropdown.removeClass('top-right') + dropdown.addClass('bottom-right') + } else if(dropdown.hasClass('top-left')) { + dropdown.removeClass('top-left') + dropdown.addClass('bottom-left') + } + } else { + if(dropdown.hasClass('bottom-right')) { + dropdown.removeClass('bottom-right') + dropdown.addClass('top-right') + } else if(dropdown.hasClass('bottom-left')) { + dropdown.removeClass('bottom-left') + dropdown.addClass('top-left') + } + } + } + } + + $('div').scroll(function() { + autoDropupDropdown() + }); + +}); \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/sass/_mixins.scss b/packages/Webkul/Ui/src/Resources/assets/sass/_mixins.scss new file mode 100755 index 000000000..7aa9186c5 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/sass/_mixins.scss @@ -0,0 +1,13 @@ +// Mixins +@mixin box-shadow($shadows...) { + -webkit-box-shadow: $shadows; + -moz-box-shadow: $shadows; + box-shadow: $shadows; +} + +@mixin border-radius($radius) { + -webkit-border-radius: $radius; + -moz-border-radius: $radius; + -ms-border-radius: $radius; + border-radius: $radius; +} \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/sass/_variables.scss b/packages/Webkul/Ui/src/Resources/assets/sass/_variables.scss new file mode 100755 index 000000000..a3342a9cc --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/sass/_variables.scss @@ -0,0 +1,14 @@ +$font-color: #3a3a3a; +$brand-color: #0041FF; +$selection-color: rgba(0, 64, 255, 0.6); +$info-color: #204d74; +$danger-color: #FC6868; +$success-color: #4CAF50; +$warning-color: #FFC107; +$control-border-color: #C7C7C7; +$border-color: rgba(162, 162, 162, 0.2); +$filter-toggle-color : #8e8e8e; +$color-white: #ffffff; +$color-black: #000000; +$color-black-shade : #000311; +$border-color: #e8e8e8; \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/sass/animations.scss b/packages/Webkul/Ui/src/Resources/assets/sass/animations.scss new file mode 100755 index 000000000..e2191ad68 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/sass/animations.scss @@ -0,0 +1,28 @@ +@keyframes jelly { + 0% { + transform: translateY(0px) scale(0.7); + opacity: 0; + } + 70% { + transform: translateY(5px) scale(1.05); + opacity: 1; + } + 100% { + transform: translateY(0px) scale(1); + opacity: 1; + } +} +@keyframes jelly-out { + 0% { + transform: translateY(0px) scale(1); + opacity: 1; + } + 30% { + transform: translateY(-5px) scale(1.05); + opacity: 1; + } + 100% { + transform: translateY(0px) scale(0.7); + opacity: 0; + } +} \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/sass/app.scss b/packages/Webkul/Ui/src/Resources/assets/sass/app.scss new file mode 100755 index 000000000..acc981f79 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/sass/app.scss @@ -0,0 +1,1158 @@ +// Icon scss +@import "icons"; +@import "variables"; +@import "components"; +@import "mixins"; +@import "animations"; + +* { + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +*:focus { + outline: none; +} + +//margin bottom classes +.mb-10 { + margin-bottom: 10px; +} + +.mb-15 { + margin-bottom: 15px; +} + +.mb-20 { + margin-bottom: 20px; +} + +.mb-25 { + margin-bottom: 25px; +} + +.mb-30 { + margin-bottom: 30px; +} + +.mb-35 { + margin-bottom: 35px; +} + +.mb-40 { + margin-bottom: 40px; +} + +.mb-45 { + margin-bottom: 45px; +} + +.mb-50 { + margin-bottom: 50px; +} + +.mb-60 { + margin-bottom: 60px; +} + +.mb-70 { + margin-bottom: 70px; +} + +.mb-80 { + margin-bottom: 80px; +} + +.mb-90 { + margin-bottom: 90px; +} + +//margin-top +.mt-5 { + margin-top: 5px; +} + +.mt-10 { + margin-top: 10px; +} + +.mt-15 { + margin-top: 15px; +} + +.mt-20 { + margin-top: 20px; +} + +.mt-25 { + margin-top: 25px; +} + +.mt-30 { + margin-top: 30px; +} + +.mt-35 { + margin-top: 35px; +} + +.mt-40 { + margin-top: 40px; +} + +.mt-45 { + margin-top: 45px; +} + +.mt-50 { + margin-top: 50px; +} + +.mt-60 { + margin-top: 60px; +} + +.mt-70 { + margin-top: 70px; +} + +.mt-80 { + margin-top: 80px; +} + +.mt-90 { + margin-top: 90px; +} + +body { + letter-spacing: -0.26px; + line-height: 19px; +} + +a:link, +a:hover, +a:visited, +a:focus, +a:active { + text-decoration: none; + color: $brand-color; +} + +::selection { + background-color: $selection-color; + color: $color-white; + } + +textarea { + resize: none; +} + +ul { + margin: 0; + padding: 0; + list-style: none; +} + +h1 { + font-size: 28px; + color: $font-color; + margin-top: 0; +} + +h2 { + font-size: 24px; + color: $font-color; +} + +h3 { + font-size: 20px; + color: $font-color; +} + +h4 { + font-size: 16px; + color: $font-color; +} + +h5 { + font-size: 12px; + color: $font-color; +} + +.hide { + display: none !important; +} + +.row { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; +} + +.btn { + @include box-shadow( + 0 1px 4px 0 rgba(0, 0, 0, 0.2), + 0 0 8px 0 rgba(0, 0, 0, 0.1) + ); + @include border-radius(3px); + border: none; + color: #fff; + cursor: pointer; + transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1); + font: inherit; + display: inline-block; + + &:hover, + &:active, + &:focus { + opacity: 0.75; + border: none; + } + + &.btn-sm { + padding: 6px 12px; + } + &.btn-md { + padding: 8px 16px; + } + &.btn-lg { + padding: 10px 20px; + } + &.btn-xl { + padding: 12px 24px; + font-size: 16px; + } + + &.btn-primary { + background: $brand-color; + color: #ffffff; + } + + &.btn-black { + background: #000; + color: #ffffff; + } + + &.btn-white { + background: #ffffff; + color: #000; + } + + &:disabled, + &[disabled="disabled"], + &[disabled="disabled"]:hover, + &[disabled="disabled"]:active { + cursor: not-allowed; + background: #b1b1ae; + box-shadow: none; + opacity: 1; + } +} + +.dropdown-btn { + min-width: 150px; + text-align: left; + background: #ffffff; + border: 2px solid $control-border-color; + @include border-radius(3px); + font-size: 14px; + padding: 8px 35px 8px 10px; + cursor: pointer; + position: relative; + + &:hover, + &:active, + &:focus { + opacity: 0.75; + border: 2px solid $control-border-color; + } + + .icon { + position: absolute; + right: 10px; + top: 50%; + margin-top: -4px; + } +} + +.dropdown-toggle { + cursor: pointer; +} + +.dropdown-open { + position: relative; +} + +.dropdown-list { + width: 200px; + margin-bottom: 20px; + @include box-shadow( + 0 2px 4px 0 rgba(0, 0, 0, 0.16), + 0 0 9px 0 rgba(0, 0, 0, 0.16) + ); + @include border-radius(3px); + background-color: #ffffff; + position: absolute; + display: none; + z-index: 10; + text-align: left; + + &.bottom-left { + top: 42px; + left: 0px; + } + &.bottom-right { + top: 42px; + right: 0px; + } + &.top-left { + bottom: 0px; + left: 42px; + } + &.top-right { + bottom: 0px; + right: 42px; + } + + .search-box { + padding: 20px; + border-bottom: 1px solid $border-color; + + .control { + background: #fff; + border: 2px solid $control-border-color; + @include border-radius(3px); + width: 100%; + height: 36px; + display: inline-block; + vertical-align: middle; + transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1); + padding: 0px 10px; + font-size: 15px; + + &:focus { + border-color: $brand-color; + } + } + } + + .dropdown-container { + padding: 20px; + overflow-y: auto; + + label { + font-size: 15px; + display: inline-block; + text-transform: uppercase; + color: #9e9e9e; + font-weight: 700; + padding-bottom: 5px; + } + + ul { + margin: 0px; + list-style-type: none; + padding: 0px; + + li { + padding: 5px 0px; + + a:link, + a:active, + a:visited, + a:focus { + color: #333333; + display: block; + } + a:hover { + color: $brand-color; + } + + .checkbox { + margin: 0; + } + + .control-group label { + color: $font-color; + font-size: 15px; + font-weight: 500; + text-transform: capitalize; + width: 100%; + } + } + } + + .btn { + width: 100%; + margin-top: 10px; + } + } +} + +.section { + // font-size: 16px; + + .secton-title { + font-size: 18px; + color: #8E8E8E; + padding: 15px 0; + border-bottom: 1px solid $border-color; + } + + .section-content { + display: block; + padding: 20px 0; + + .row { + display: block; + padding: 7px 0; + + .title { + width: 200px; + color: $font-color; + letter-spacing: -0.26px; + display: inline-block; + } + + .value { + color: $font-color; + letter-spacing: -0.26px; + display: inline-block; + } + } + } +} + +.table { + width: 100%; + // overflow-x: auto !important; + + table { + border-collapse: collapse; + text-align: left; + width: 100%; + + thead th { + font-weight: 700; + padding: 12px 10px; + background: #f8f9fa; + color: $font-color; + } + + tbody td { + padding: 10px; + border-bottom: solid 1px #d3d3d3; + color: $font-color; + vertical-align: top; + + &.actions { + + .action { + display: inline-flex; + } + + .icon { + cursor: pointer; + vertical-align: middle; + } + } + + &.empty { + text-align: center; + } + } + + tbody tr:last-child td { + border-bottom: none; + } + } + + .control-group { + width: 100%; + margin-bottom: 0; + min-width: 140px; + + .control { + width: 100%; + margin: 0; + } + } +} + +.pagination { + .page-item { + background: #ffffff; + border: 2px solid $control-border-color; + @include border-radius(3px); + padding: 7px 14px; + margin-right: 5px; + font-size: 16px; + display: inline-block; + color: #8e8e8e; + vertical-align: middle; + text-decoration: none; + + &.previous, + &.next { + padding: 6px 9px; + } + + &.active { + background: #0041ff; + color: #fff; + border-color: #0041ff; + } + + .icon { + vertical-align: middle; + margin-bottom: 3px; + } + } +} + +.checkbox { + position: relative; + display: block; + // vertical-align: middle; + + input { + left: 0; + opacity: 0; + position: absolute; + top: 0; + height: 24px; + width: 24px; + z-index: 100; + } + + .checkbox-view { + background-image: url("../images/Checkbox.svg"); + height: 24px; + width: 24px; + margin: 0; + display: inline-block !important; + vertical-align: middle; + margin-right: 5px; + } + + input:checked + .checkbox-view { + background-image: url("../images/Checkbox-Checked.svg"); + } + + input:disabled + .checkbox-view { + opacity: 0.5; + cursor: not-allowed; + } +} + +.radio { + position: relative; + display: block; + margin: 10px 5px 5px 0px; + + input { + left: 0; + opacity: 0; + position: absolute; + top: 0; + z-index: 100; + } + + .radio-view { + background-image: url("../images/controls.svg"); + background-position: -21px 0px; + height: 20px; + width: 20px; + margin: 0; + display: inline-block !important; + vertical-align: middle; + margin-right: 5px; + } + + input:checked + .radio-view { + background-position: -21px -21px; + } + + input:disabled + .radio-view { + opacity: 0.5; + cursor: not-allowed; + } +} + +.control-group { + display: block; + margin-bottom: 25px; + font-size: 15px; + color: #333333; + width: 750px; + max-width: 100%; + position: relative; + + label { + display: block; + color: $font-color; + + &.required::after { + content: "*"; + color: $danger-color; + font-weight: 700; + display: inline-block; + } + } + + textarea.control { + height: 100px; + padding: 10px; + } + + .control { + background: #fff; + border: 2px solid $control-border-color; + @include border-radius(3px); + width: 70%; + height: 36px; + display: inline-block; + vertical-align: middle; + transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1); + padding: 0px 10px; + font-size: 15px; + margin-top: 10px; + margin-bottom: 5px; + + &:focus { + border-color: $brand-color; + } + + &[disabled="disabled"] { + border-color: #d3d3d3; + background-color: #d3d3d3; + cursor: not-allowed; + } + + &[multiple] { + height: 100px; + } + } + + &.date, &.datetime { + &::after { + background-image: url("../images/Icon-Calendar.svg"); + width: 24px; + height: 24px; + content: ''; + display: inline-block; + vertical-align: middle; + margin-left: -34px; + margin-top: 2px; + pointer-events: none; + } + } + + .control-info { + display: block; + font-size: 14px; + color: #6F6F6F; + font-style: italic; + } + + .control-error { + display: none; + color: #ff5656; + margin-top: 5px; + } + + &.has-error .control { + border-color: $danger-color; + } + + &.has-error .control-error { + display: block; + } + + &.price { + .currency-code { + vertical-align: middle; + display: inline-block; + } + } +} + +.control-group { + .switch { + position: relative; + display: inline-block; + width: 60px; + height: 34px; + margin-top: 10px; + margin-bottom: 5px; + } + + .switch input { + opacity: 0; + width: 0; + height: 0; + } + + .slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: $filter-toggle-color; + -webkit-transition: .2s; + transition: .2s; + } + + .slider:before { + position: absolute; + content: ""; + height: 26px; + width: 26px; + left: 4px; + bottom: 4px; + background-color: $color-white; + -webkit-transition: .2s; + transition: .2s; + } + + input:checked + .slider { + background-color: $brand-color; + } + + input:focus + .slider { + box-shadow: 0 0 1px $brand-color; + } + + input:checked + .slider:before { + -webkit-transform: translateX(26px); + -ms-transform: translateX(26px); + transform: translateX(26px); + } + + /* Rounded sliders */ + .slider.round { + border-radius: 34px; + } + + .slider.round:before { + border-radius: 50%; + } +} + +.button-group { + margin-top: 20px; + margin-bottom: 20px; +} + +.alert-wrapper { + width: 300px; + top: 10px; + right: 10px; + position: fixed; + z-index: 100; + text-align: left; + + .alert { + width: 300px; + padding: 15px; + @include border-radius(3px); + display: inline-block; + @include box-shadow( + 0px 4px 15.36px 0.64px rgba(0, 0, 0, 0.1), + 0px 2px 6px 0px rgba(0, 0, 0, 0.12) + ); + position: relative; + animation: jelly 0.5s ease-in-out; + transform-origin: center top; + z-index: 500; + margin-bottom: 10px; + + &.alert-error { + background: $danger-color; + } + + &.alert-info { + background: $info-color; + } + + &.alert-success { + background: $success-color; + } + + &.alert-warning { + background: $warning-color; + } + + .icon { + position: absolute; + right: 10px; + top: 10px; + cursor: pointer; + } + + p { + color: #ffffff; + margin: 0px; + padding: 0px; + font-size: 15px; + } + } +} + +.tabs { + ul { + border-bottom: solid 1px $border-color; + + li { + display: inline-block; + + a { + padding: 15px 20px; + cursor: pointer; + margin: 0px 2px; + text-align: center; + color: #000311; + display: block; + } + + &.active a { + border-bottom: 3px solid $brand-color; + } + } + } +} + +.accordian, accordian { + display: inline-block; + width: 100%; + + .accordian-header, div[slot*="header"] { + width: 100%; + display: inline-block; + font-size: 18px; + color: $font-color; + border-top: solid 1px $border-color; + border-bottom: solid 1px $border-color; + padding: 20px 15px; + cursor: pointer; + margin-top: -1px; + + .expand-icon { + background-image: url("../images/Expand-Light.svg"); + margin-right: 10px; + margin-top: 3px; + } + + h1 { + margin: 0; + font-size: 20px; + font-weight: 500; + display: inline-block; + } + + .icon { + float: right; + + &.left { + float: left; + } + } + } + + &.error { + .accordian-header { + color: #ff5656; + } + } + + .accordian-content, div[slot*="body"] { + width: 100%; + padding: 20px 15px; + display: none; + transition: 0.3s ease all; + } + + &.active > .accordian-content { + display: inline-block; + } + + &.active > .accordian-header .expand-icon { + background-image: url("../images/Expand-Light-On.svg"); + } +} + +.tree-container { + .tree-item { + padding-left: 30px; + display: inline-block; + margin-top: 10px; + width: 100%; + + > .tree-item { + display: none; + } + + &.active > .tree-item { + display: inline-block; + } + + .checkbox { + margin: 0; + display: inline-block; + } + + .radio { + margin: 0; + display: inline-block; + } + + .expand-icon { + display: inline-block; + margin-right: 10px; + cursor: pointer; + background-image: url("../images/Expand-Light.svg"); + width: 18px; + height: 18px; + vertical-align: middle; + } + + .folder-icon { + vertical-align: middle; + margin-right: 10px; + } + + &.active { + > .expand-icon { + background-image: url("../images/Expand-Light-On.svg"); + } + } + } + + > .tree-item { + padding-left: 0; + } +} + +.panel { + @include box-shadow(0 2px 25px 0 rgba(0, 0, 0, 0.15)); + @include border-radius(5px); + background: #fff; + + .panel-content { + padding: 20px; + } +} + +modal { + display: none; +} + +.modal-open { + overflow: hidden; +} + +.modal-overlay { + display: none; + overflow-y: auto; + z-index: 10; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + position: fixed; + background: #000; + opacity: 0.7; +} + +.modal-open .modal-overlay { + display: block; +} + +.modal-container { + background: #ffffff; + top: 100px; + width: 600px; + max-width: 80%; + left: 50%; + margin-left: -300px; + position: fixed; + z-index: 11; + @include box-shadow( + 0px 15px 25px 0px rgba(0, 0, 0, 0.03), + 0px 20px 45px 5px rgba(0, 0, 0, 0.2) + ); + animation: fade-in-white 0.3s ease-in-out; + animation: jelly 0.5s ease-in-out; + @include border-radius(5px); + overflow-y: auto; + max-height: 80%; + + .modal-header { + padding: 20px; + + h3 { + display: inline-block; + font-size: 20px; + color: $font-color; + margin: 0; + } + + .icon { + float: right; + cursor: pointer; + } + } + + .modal-body { + padding: 20px; + + .control-group .control { + width: 100%; + } + } +} + +// responsive css for modal +@media only screen and (max-width: 770px) { + .modal-container { + max-width: 80%; + left: 10%; + margin-left: 0px; + } +} + +.label { + background: #E7E7E7; + @include border-radius(2px); + padding: 8px; + color: #000311; + display: inline-block; + + &.label-sm { + padding: 5px; + } + + &.label-md { + padding: 8px; + } + + &.label-lg { + padding: 11px; + } + + &.label-xl { + padding: 14px; + } +} + +.badge { + @include border-radius(50px); + color: white; + padding: 8px; + white-space: nowrap; + + &.badge-sm { + padding: 5px; + } + + &.badge-md { + padding: 3px 10px; + } + + &.badge-lg { + padding: 11px; + } + + &.badge-xl { + padding: 14px; + } + + &.badge-success { + background-color: $success-color; + } + + &.badge-info { + background-color: $brand-color; + } + + &.badge-danger { + background-color: $danger-color; + } + + &.badge-warning { + background-color: $warning-color; + } +} + +//Image wrapper +.image-wrapper { + margin-bottom: 20px; + margin-top: 10px; + display: inline-block; + width: 100%; + + .image-item { + width: 200px; + height: 200px; + margin-right: 20px; + background: #F8F9FA; + @include border-radius(3px); + display: inline-block; + position: relative; + background-image: url("../images/placeholder-icon.svg"); + background-repeat: no-repeat; + background-position: center; + margin-bottom: 20px; + float: left; + + img.preview { + width: 100%; + height: 100%; + } + + input { + display: none; + } + + .remove-image { + background-image: linear-gradient(-180deg, rgba(0,0,0,0.08) 0%, rgba(0,0,0,0.24) 100%); + @include border-radius(0 0 4px 4px); + position: absolute; + bottom: 0; + width: 100%; + padding: 10px; + text-align: center; + color: #fff; + text-shadow: 0 1px 2px rgba(0,0,0,0.24); + margin-right: 20px; + cursor: pointer; + } + + &:hover .remove-image { + display: block; + } + + &.has-image { + background-image: none; + } + } +} + +.vue-swatches__trigger { + border: 1px solid #d3d3d3; +} + + +.helper-container { + display: block; + + .group { + code { + font-weight: bold; + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/sass/components.scss b/packages/Webkul/Ui/src/Resources/assets/sass/components.scss new file mode 100755 index 000000000..50673d73c --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/sass/components.scss @@ -0,0 +1,137 @@ +@import "mixins"; + +.grid-container { + display: block; + width: 100%; +} + +.filter-row-one { + display: inline-flex; + width: 100%; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; + + .dropdown-filters { + position: absolute; + right: 25px; + } + + .per-page { + right: 250px; + + .per-page-label { + position: absolute; + right: 120px; + width: 100%; + top: 8px; + } + } +} + +.filter-row-two { + display: inline-flex; + align-items: flex-start; + flex-wrap: wrap; + margin-bottom: 10px; +} + +.search-filter { + display: inline-flex; + + .control { + font-size: 15px; + border: 2px solid $control-border-color; + border-right: none; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + border-radius: 3px; + height: 36px; + width: 280px; + padding-left: 10px; + } + + .contorl:focus { + border-color: $brand-color; + } + + .icon-wrapper { + border: 2px solid $control-border-color; + border-radius: 3px; + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; + height: 36px; + width: 36px; + margin-left: -1px; + + .search-icon { + margin-top: 3px; + margin-left: 3px; + } + } +} + +.grid-dropdown-header { + display: inline-flex; + justify-content: space-between; + align-items: center; + height: 36px; + width: 200px; + border: 2px solid $control-border-color; + border-radius: 3px; + color: #8E8E8E; + padding: 0px 5px 0px 5px; + + .arrow-icon-down { + float: right; + } +} + +.dropdown-list.dropdown-container { + padding: 15px; + width: 100%; + top: 43px; + + ul { + li { + .control-group { + margin-bottom: 15px; + } + } + } + + .apply-filter { + padding: 10px; + width: 100%; + } +} + +.filter-tag { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + font-size: 14px; + height: 28px; + border-radius: 2px; + margin-right: 20px; + + .wrapper { + margin-left: 10px; + padding: 5px 10px 5px 10px; + display: flex; + flex-direction: row; + align-items: center; + background: #E7E7E7; + font-size: 14px; + height: 28px; + color: #000311; + letter-spacing: -0.22px; + @include border-radius(2px); + + .icon.cross-icon { + margin-left: 10px; + cursor: pointer; + } + } +} \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/sass/icons.scss b/packages/Webkul/Ui/src/Resources/assets/sass/icons.scss new file mode 100755 index 000000000..ce32d3f3d --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/sass/icons.scss @@ -0,0 +1,343 @@ +// Left Side Menu Icon +%menu-properties { + width: 48px; + height: 48px; + display: inline-block; + background-size: cover; +} +.icon { + display: inline-block; + background-size: cover; +} +.dashboard-icon { + @extend %menu-properties; + background-image: url("../images/Icon-Dashboard.svg"); +} +.sales-icon { + @extend %menu-properties; + background-image: url("../images/Icon-Sales.svg"); +} +.catalog-icon { + @extend %menu-properties; + background-image: url("../images/Icon-Catalog.svg"); +} +.customer-icon { + @extend %menu-properties; + background-image: url("../images/Icon-Customers.svg"); +} +.configuration-icon { + @extend %menu-properties; + background-image: url("../images/Icon-Configure.svg"); +} +.settings-icon { + @extend %menu-properties; + background-image: url("../images/Icon-Settings.svg"); +} + +.promotion-icon { + @extend %menu-properties; + background-image: url("../images/icon-promotion.svg"); +} + +.cms-icon { + @extend %menu-properties; + background-image: url('../images/Icon-CMS.svg'); +} + +.angle-right-icon { + background-image: url("../images/Angle-Right.svg"); + width: 17px; + height: 17px; +} + +.angle-left-icon { + background-image: url("../images/Angle-Left.svg"); + width: 17px; + height: 17px; +} + +.arrow-down-icon { + background-image: url("../images/Arrow-Down-Light.svg"); + width: 14px; + height: 8px; +} + +.arrow-right-icon { + background-image: url("../images/Arrow-Right.svg"); + width: 18px; + height: 18px; +} + +.white-cross-sm-icon { + background-image: url("../images/Icon-Sm-Cross-White.svg"); + width: 18px; + height: 18px; +} + +.accordian-up-icon { + background-image: url("../images/Accordion-Arrow-Up.svg"); + width: 24px; + height: 24px; +} +.accordian-down-icon { + background-image: url("../images/Accordion-Arrow-Down.svg"); + width: 24px; + height: 24px; +} + +.cross-icon { + background-image: url("../images/Icon-Crossed.svg"); + width: 18px; + height: 18px; +} + +.trash-icon { + background-image: url("../images/Icon-Trash.svg"); + width: 24px; + height: 24px; +} + +.remove-icon { + background-image: url("../images/Icon-remove.svg"); + width: 24px; + height: 24px; +} + +.pencil-lg-icon { + background-image: url("../images/Icon-Pencil-Large.svg"); + width: 24px; + height: 24px; +} + +.eye-icon { + background-image: url("../images/Icon-eye.svg"); + width: 24px; + height: 24px; +} + +.search-icon { + background-image: url("../images/icon-search.svg"); + width: 24px; + height: 24px; +} + +.sortable-icon { + background-image: url("../images/Icon-Sortable.svg"); + width: 24px; + height: 24px; +} + +.sort-down-icon { + background-image: url("../images/Icon-Sort-Down.svg"); + width: 18px; + height: 18px; +} + +.sort-up-icon { + background-image: url("../images/Icon-Sort-Down.svg"); + width: 18px; + height: 18px; + transform: rotate(180deg); +} + +.primary-back-icon { + background-image: url("../images/Icon-Back-Primary.svg"); + width: 24px; + height: 24px; +} + +.checkbox-dash-icon { + background-image: url("../images/Checkbox-Dash.svg"); + width: 24px; + height: 24px; +} + +.account-icon { + background-image: url("../images/icon-account.svg"); + width: 24px; + height: 24px; +} + +.expand-icon { + background-image: url("../images/Expand-Light.svg"); + width: 18px; + height: 18px; +} + +.expand-on-icon { + background-image: url("../images/Expand-Light-On.svg"); + width: 18px; + height: 18px; +} + +.dark-left-icon { + background-image: url("../images/arrow-left-dark.svg"); + width: 18px; + height: 18px; +} + +.light-right-icon { + background-image: url("../images/arrow-right-light.svg"); + width: 18px; + height: 18px; +} + +.folder-icon { + background-image: url("../images/Folder-Icon.svg"); + width: 24px; + height: 24px; +} + +.star-icon { + background-image: url("../images/Star-Icon.svg"); + width: 24px; + height: 24px; +} + +.arrow-down-white-icon { + background-image: url("../images/down-arrow-white.svg"); + width: 17px; + height: 13px; +} + +.arrow-up-white-icon { + background-image: url("../images/up-arrow-white.svg"); + width: 17px; + height: 13px; +} + +.profile-pic-icon { + background-image: url("../images/Profile-Pic.svg"); + width: 60px; + height: 60px; +} + +.graph-up-icon { + background-image: url("../images/Icon-Graph-Green.svg"); + width: 24px; + height: 24px; +} + +.graph-down-icon { + background-image: url("../images/Icon-Graph-Red.svg"); + width: 24px; + height: 24px; +} + +.no-result-icon { + background-image: url("../images/limited-icon.svg"); + width: 52px; + height: 47px; +} + +.note-icon { + background-image: url("../images/icon-note.svg"); + width: 24px; + height: 24px; +} + +.list-icon { + background-image: url("../images/Icon-Listing.svg"); + width: 24px; + height: 24px; +} + +.active { + .dashboard-icon { + background-image: url("../images/Icon-Dashboard-Active.svg"); + } + + .sales-icon { + background-image: url("../images/Icon-Sales-Active.svg"); + } + + .catalog-icon { + background-image: url("../images/Icon-Catalog-Active.svg"); + } + + .customer-icon { + background-image: url("../images/Icon-Customers-Active.svg"); + } + + .settings-icon { + background-image: url("../images/Icon-Settings-Active.svg"); + } + + .configuration-icon { + background-image: url("../images/Icon-Configure-Active.svg"); + } + + .promotion-icon { + background-image: url("../images/icon-promotion-active.svg"); + } + + .cms-icon { + @extend %menu-properties; + background-image: url('../images/Icon-CMS-Active.svg'); + } + + > .arrow-down-icon { + background-image: url("../images/Arrow-Down.svg"); + width: 14px; + height: 8px; + } + + > .expand-icon { + background-image: url("../images/Expand-Light-On.svg"); + } + + &.dashboard-icon { + background-image: url("../images/Icon-Dashboard-Active.svg"); + } + + &.customer-icon { + background-image: url("../images/Icon-Customers-Active.svg"); + } + + &.sales-icon { + background-image: url("../images/Icon-Sales-Active.svg"); + } + + &.settings-icon { + background-image: url("../images/Icon-Settings-Active.svg"); + } + + &.configuration-icon { + @extend %menu-properties; + background-image: url("../images/Icon-Configure-Active.svg"); + } + + &.arrow-down-icon { + background-image: url("../images/Arrow-Down.svg"); + width: 14px; + height: 8px; + } + + &.expand-icon { + background-image: url("../images/Expand-Light-On.svg"); + } +} + +.icon-404 { + background-image: url("../images/404-image.svg"); + width: 255px; + height: 255px; +} + +.export-icon { + background-image: url("../images/Icon-Export.svg"); + width: 32px; + height: 32px; +} + +.import-icon { + background-image: url("../images/Icon-Import.svg"); + width: 32px; + height: 32px; +} + +.star-blue-icon { + width: 17px; + height: 17px; + background-image: url("../images/Icon-star.svg"); +} \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/sass/override.scss b/packages/Webkul/Ui/src/Resources/assets/sass/override.scss new file mode 100755 index 000000000..5799558a6 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/sass/override.scss @@ -0,0 +1,11 @@ +.color-red { + color: red; +} + +.color-default { + color: $font-color; +} + +.color-brand { + color: $brand-color; +} \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/lang/ar/app.php b/packages/Webkul/Ui/src/Resources/lang/ar/app.php new file mode 100644 index 000000000..cabdcd2dc --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/lang/ar/app.php @@ -0,0 +1,19 @@ + [ + 'actions' => 'الإجراءات', + 'id' => 'أعمدة المؤشر لها قيمة أكبر من الصفر فقط', + + 'massaction' => [ + 'mass-delete-confirm' => 'تنفيذ إلى حذف منتقى:resource?', + 'mass-update-status' => 'هل تريد حقا تحديث الحالة من منتقى :resource?', + 'delete' => 'هل تريد حقا حذف هذا :resource?', + 'edit' => 'هل تريد حقا تحرير هذا :resource?', + ], + + 'no-records' => 'لا توجد سجلات', + 'filter-fields-missing' => 'بعض الحقل المطلوب هو لاغ ، رجاء تفقد عمود ، حالة و قيمة صحيح', + 'click_on_action' => 'هل تريد حقا أن تؤدي هذا العمل؟', + 'items-per-page' => 'Items Per Page', + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/lang/en/app.php b/packages/Webkul/Ui/src/Resources/lang/en/app.php new file mode 100755 index 000000000..4978f92fe --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/lang/en/app.php @@ -0,0 +1,41 @@ + '
    Use class: "static-container one-column" for one column layout.
    ', + 'two-col' => '
    Use class: "static-container two-column" for two column layout.
    ', + 'three-col' => '
    Use class: "static-container three-column" for three column layout.
    ', + 'helper-classes' => 'Helper Classes', + 'datagrid' => [ + 'actions' => 'Actions', + 'id' => 'Index columns have value greater than zero only', + + 'massaction' => [ + 'mass-delete-confirm' => 'Do you really want to delete these selected :resource?', + 'mass-update-status' => 'Do you really want to update status of these selected :resource?', + 'delete' => 'Do you really want to perform this action?', + 'edit' => 'Do you really want to edit this :resource?', + ], + + 'zero-index' => 'Index columns can have values greater than zero only', + 'no-records' => 'No Records Found', + 'filter-fields-missing' => 'Some of the required field is null, please check column, condition and value properly', + 'click_on_action' => 'Do you really want to perform this action?', + 'search' => 'Search Here...', + 'filter' => 'Filter', + 'column' => 'Select Column', + 'condition' => 'Select Condition', + 'contains' => 'Contains', + 'ncontains' => 'Does not contains', + 'equals' => 'Is Equals to', + 'nequals' => 'Is Not equals to', + 'greater' => 'Greater than', + 'less' => 'Less than', + 'greatere' => 'Greater than equals to', + 'lesse' => 'Less than equals to', + 'value' => 'Select Value', + 'true' => 'True / Active', + 'false' => 'False / Inactive', + 'between' => 'Is between', + 'apply' => 'Apply', + 'items-per-page' => 'Items Per Page', + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/lang/en/form.php b/packages/Webkul/Ui/src/Resources/lang/en/form.php new file mode 100644 index 000000000..a84013cc0 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/lang/en/form.php @@ -0,0 +1,6 @@ + 'Enter :attribute', + 'select-attribute' => 'Select :attribute' + ]; \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/lang/fa/app.php b/packages/Webkul/Ui/src/Resources/lang/fa/app.php new file mode 100644 index 000000000..c57e87487 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/lang/fa/app.php @@ -0,0 +1,37 @@ + [ + 'actions' => 'عملیات', + 'id' => 'ستون های ایندکس دارای ارزش بیشتر از صفر هستند', + + 'massaction' => [ + 'mass-delete-confirm' => 'آیا واقعاً می خواهید این مورد انتخاب شده را حذف کنید :resource?', + 'mass-update-status' => 'آیا واقعاً می خواهید وضعیت انتخاب شده را به روز کنید :resource?', + 'delete' => 'آیا واقعاً می خواهید این عمل را انجام دهید؟', + 'edit' => 'آیا واقعاً می خواهید این را ویرایش کنید :resource?', + ], + + 'zero-index' => 'ستون های فهرست می توانند مقادیری بیشتر از صفر داشته باشند', + 'no-records' => 'هیچ رکوردی یافت نشد', + 'filter-fields-missing' => 'برخی از زمینه های مورد نیاز خالی است ، لطفا ستون ، شرایط و ارزش را به درستی بررسی کنید', + 'click_on_action' => 'آیا واقعاً می خواهید این عمل را انجام دهید؟', + 'search' => 'جستجو در اینجا ...', + 'filter' => 'فیلتر', + 'column' => 'انتخاب ستون', + 'condition' => 'انتخاب شرایط', + 'contains' => 'شامل می شود', + 'ncontains' => 'شامل نمی شود', + 'equals' => 'برابر است با', + 'nequals' => 'برابر نیست با', + 'greater' => 'بزرگتر از', + 'less' => 'کوجچکتر از', + 'greatere' => 'بزرگتر ویا مساوی با', + 'lesse' => 'کوچکتر ویا مساوی با', + 'value' => 'انتخاب مقدار', + 'true' => 'صحیح / فعال', + 'false' => 'غلط / غیرفعال', + 'between' => 'ما بین', + 'apply' => 'درخواست', + 'items-per-page' => 'Items Per Page', + ] +]; diff --git a/packages/Webkul/Ui/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Ui/src/Resources/lang/pt_BR/app.php new file mode 100755 index 000000000..46d1f3517 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/lang/pt_BR/app.php @@ -0,0 +1,37 @@ + [ + 'actions' => 'Ações', + 'id' => 'Colunas do índice têm valor maior que zero apenas', + + 'massaction' => [ + 'mass-delete-confirm' => 'Você realmente deseja excluir esses itens selecionados :resource?', + 'mass-update-status' => 'Você realmente deseja atualizar o status desses itens selecionados :resource?', + 'delete' => 'Você realmente deseja excluir este :resource?', + 'edit' => 'Você realmente quer editar este :resource?', + ], + + 'zero-index' => 'Colunas do índice podem ter valores maiores que zero apenas', + 'no-records' => 'Nenhum registro foi encontrado', + 'filter-fields-missing' => 'Alguns dos campos obrigatórios são nulos, por favor verifique coluna, condição e valor corretamente', + 'click_on_action' => 'Você realmente quer realizar esta ação?', + 'search' => 'Busque Aqui...', + 'filter' => 'Filtrar', + 'column' => 'Selecione a coluna', + 'condition' => 'Selecione Condição', + 'contains' => 'Contém', + 'ncontains' => 'Não contém', + 'equals' => 'É igual a', + 'nequals' => 'É diferente de', + 'greater' => 'Maior que', + 'less' => 'Menor que', + 'greatere' => 'Maior ou igual que', + 'lesse' => 'Menor ou igual que', + 'value' => 'Selecione o valor', + 'true' => 'Verdadeiro / Ativo', + 'false' => 'Falso / Inativo', + 'between' => 'Está entre', + 'apply' => 'Aplicar', + 'items-per-page' => 'Items Per Page', + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php new file mode 100644 index 000000000..fe25828a1 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php @@ -0,0 +1,84 @@ + + @if (count($records)) + @foreach ($records as $key => $record) + + @if ($enableMassActions) + + + + + + + + @endif + + @foreach ($columns as $column) + @php + $columnIndex = explode('.', $column['index']); + + $columnIndex = end($columnIndex); + @endphp + + @if (isset($column['wrapper'])) + @if (isset($column['closure']) && $column['closure'] == true) + {!! $column['wrapper']($record) !!} + @else + {{ $column['wrapper']($record) }} + @endif + @else + @if ($column['type'] == 'price') + @if (isset($column['currencyCode'])) + {{ core()->formatPrice($record->{$columnIndex}, $column['currencyCode']) }} + @else + {{ core()->formatBasePrice($record->{$columnIndex}) }} + @endif + @else + {{ $record->{$columnIndex} }} + @endif + @endif + @endforeach + + @if ($enableActions) + +
    + + @endif + + @endforeach + @else + + {{ $norecords }} + + @endif + diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/pagination.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/pagination.blade.php new file mode 100644 index 000000000..90116cf07 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/pagination.blade.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/partials/default-header.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/partials/default-header.blade.php new file mode 100644 index 000000000..6f6b34c17 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/partials/default-header.blade.php @@ -0,0 +1,33 @@ + + + @if (count($results['records']) && $results['enableMassActions']) + + + + + + + + @endif + + @foreach($results['columns'] as $key => $column) + + {{ $column['label'] }} + + @endforeach + + @if ($results['enableActions']) + + {{ __('ui::app.datagrid.actions') }} + + @endif + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/partials/mass-action-header.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/partials/mass-action-header.blade.php new file mode 100644 index 000000000..26f8e9cc6 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/partials/mass-action-header.blade.php @@ -0,0 +1,34 @@ + + @if (isset($results['massactions'])) + + +
    + + + + + +
    + @csrf() + + + +
    + +
    + +
    + +
    + + +
    +
    + + + @endif + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php new file mode 100644 index 000000000..cfec25965 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/table.blade.php @@ -0,0 +1,730 @@ +
    + + + @if (isset($results['paginated']) && $results['paginated']) + @include('ui::datagrid.pagination', ['results' => $results['records']]) + @endif + + @push('scripts') + + + + @endpush +
    diff --git a/packages/Webkul/Ui/src/Resources/views/partials/helper-classes.blade.php b/packages/Webkul/Ui/src/Resources/views/partials/helper-classes.blade.php new file mode 100644 index 000000000..bc2e3ef87 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/views/partials/helper-classes.blade.php @@ -0,0 +1,148 @@ +
    + +
    +
    +
    + ".mb-5" + +
    + +
    + ".mb-10" + +
    + +
    + ".mb-15" + +
    + +
    + ".mb-20" + +
    + +
    + ".mb-25" + +
    + +
    + ".mb-30" + +
    + +
    + ".mb-35" + +
    + +
    + ".mb-40" + +
    + +
    + ".mb-45" + +
    + +
    + ".mb-50" + +
    + +
    + ".mb-60" + +
    + +
    + ".mb-70" + +
    + +
    + ".mb-80" + +
    + +
    + ".mb-90" + +
    +
    + +
    +
    + ".mt-5" + +
    + +
    + ".mt-10" + +
    + +
    + ".mt-15" + +
    + +
    + ".mt-20" + +
    + +
    + ".mt-25" + +
    + +
    + ".mt-30" + +
    + +
    + ".mt-35" + +
    + +
    + ".mt-40" + +
    + +
    + ".mt-45" + +
    + +
    + ".mt-50" + +
    + +
    + ".mt-60" + +
    + +
    + ".mt-70" + +
    + +
    + ".mt-80" + +
    + +
    + ".mt-90" + +
    +
    +
    +
    \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/views/partials/pagination.blade.php b/packages/Webkul/Ui/src/Resources/views/partials/pagination.blade.php new file mode 100755 index 000000000..6f130142d --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/views/partials/pagination.blade.php @@ -0,0 +1,50 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/packages/Webkul/Ui/src/Resources/views/partials/ui-kit.blade.php b/packages/Webkul/Ui/src/Resources/views/partials/ui-kit.blade.php new file mode 100755 index 000000000..3a4efe988 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/views/partials/ui-kit.blade.php @@ -0,0 +1,409 @@ + + + + + + + + + + + +
    + + + + +
    + + + +
    +
    +
    + + + This is control information + This field is mandatory +
    + +
    + + + This is control information + This field is mandatory +
    + +
    + + + This is control information +
    + +
    + + + This is control information +
    + +
    + + + + + Radio Value 1 + + + + + + Radio Value 2 + + + + + + Radio Value (Disabled) + +
    + +
    + + + + + Checkbox Value 1 + + + + + + Checkbox Value 2 + + + + + + Checkbox Value (Disabled) + +
    +
    +
    + + +
    +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    +
    + + +
    + +
    + + +
    + Label Small + Label Medium + Label Large + Label Extra Large +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Cloumn Header 1Cloumn Header 2Cloumn Header 3Cloumn Header 4
    Cloumn 1 Row 1 ValueCloumn 2 Row 1 ValueCloumn 3 Row 1 ValueCloumn 4 Row 1 Value
    Cloumn 1 Row 2 ValueCloumn 2 Row 2 ValueCloumn 3 Row 2 ValueCloumn 4 Row 2 Value
    Cloumn 1 Row 3 ValueCloumn 2 Row 3 ValueCloumn 3 Row 3 ValueCloumn 4 Row 3 Value
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + + + +
    +
    +
    + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/webpack.mix.js b/packages/Webkul/Ui/webpack.mix.js new file mode 100755 index 000000000..7cf1185f3 --- /dev/null +++ b/packages/Webkul/Ui/webpack.mix.js @@ -0,0 +1,39 @@ +const mix = require("laravel-mix"); + +if (mix == 'undefined') { + const { mix } = require("laravel-mix"); +} + +require("laravel-mix-merge-manifest"); + +if (mix.inProduction()) { + var publicPath = 'publishable/assets'; +} else { + var publicPath = "../../../public/vendor/webkul/ui/assets"; +} + +mix.setPublicPath(publicPath).mergeManifest(); +mix.disableNotifications(); + +mix.inProduction() + +mix.js( + [ + __dirname + "/src/Resources/assets/js/app.js", + __dirname + "/src/Resources/assets/js/dropdown.js" + ], + "js/ui.js" +) + .copy(__dirname + "/src/Resources/assets/images", publicPath + "/images") + .sass(__dirname + "/src/Resources/assets/sass/app.scss", "css/ui.css") + .options({ + processCssUrls: false + }); + +if (!mix.inProduction()) { + mix.sourceMaps(); +} + +if (mix.inProduction()) { + mix.version(); +} \ No newline at end of file diff --git a/packages/Webkul/User/.gitignore b/packages/Webkul/User/.gitignore new file mode 100755 index 000000000..30bc16279 --- /dev/null +++ b/packages/Webkul/User/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/packages/Webkul/User/composer.json b/packages/Webkul/User/composer.json new file mode 100755 index 000000000..beff71085 --- /dev/null +++ b/packages/Webkul/User/composer.json @@ -0,0 +1,27 @@ +{ + "name": "bagisto/laravel-user", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\User\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\User\\Providers\\UserServiceProvider" + ], + "aliases": { + "Bouncer": "Webkul\\User\\Facades\\Bouncer" + } + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/User/src/Bouncer.php b/packages/Webkul/User/src/Bouncer.php new file mode 100755 index 000000000..bd7bb23a2 --- /dev/null +++ b/packages/Webkul/User/src/Bouncer.php @@ -0,0 +1,36 @@ +guard('admin')->check() && auth()->guard('admin')->user()->role->permission_type == 'all') { + return true; + } else { + if (! auth()->guard('admin')->check() || ! auth()->guard('admin')->user()->hasPermission($permission)) + return false; + } + + return true; + } + + /** + * Checks if user allowed or not for certain action + * + * @param String $permission + * @return Void + */ + public static function allow($permission) + { + if (! auth()->guard('admin')->check() || ! auth()->guard('admin')->user()->hasPermission($permission)) + abort(401, 'This action is unauthorized'); + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Contracts/Admin.php b/packages/Webkul/User/src/Contracts/Admin.php new file mode 100644 index 000000000..b0d26f31b --- /dev/null +++ b/packages/Webkul/User/src/Contracts/Admin.php @@ -0,0 +1,7 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('admin_password_resets'); + } +} diff --git a/packages/Webkul/User/src/Database/Migrations/2018_06_12_111907_create_admins_table.php b/packages/Webkul/User/src/Database/Migrations/2018_06_12_111907_create_admins_table.php new file mode 100755 index 000000000..659967653 --- /dev/null +++ b/packages/Webkul/User/src/Database/Migrations/2018_06_12_111907_create_admins_table.php @@ -0,0 +1,37 @@ +increments('id'); + $table->string('name'); + $table->string('email')->unique(); + $table->string('password')->nullable(); + $table->boolean('status')->default(0); + $table->integer('role_id')->unsigned(); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('admins'); + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Database/Migrations/2018_06_13_055341_create_roles_table.php b/packages/Webkul/User/src/Database/Migrations/2018_06_13_055341_create_roles_table.php new file mode 100755 index 000000000..d26a53fe5 --- /dev/null +++ b/packages/Webkul/User/src/Database/Migrations/2018_06_13_055341_create_roles_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('name'); + $table->string('description')->nullable(); + $table->string('permission_type'); + $table->json('permissions')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('roles'); + } +} diff --git a/packages/Webkul/User/src/Database/Seeders/.gitkeep b/packages/Webkul/User/src/Database/Seeders/.gitkeep new file mode 100755 index 000000000..e69de29bb diff --git a/packages/Webkul/User/src/Database/Seeders/AdminsTableSeeder.php b/packages/Webkul/User/src/Database/Seeders/AdminsTableSeeder.php new file mode 100755 index 000000000..517d9b4cc --- /dev/null +++ b/packages/Webkul/User/src/Database/Seeders/AdminsTableSeeder.php @@ -0,0 +1,23 @@ +delete(); + + DB::table('admins')->insert([ + 'id' => 1, + 'name' => 'Example', + 'email' => 'admin@example.com', + 'password' => bcrypt('admin123'), + 'status' => 1, + 'role_id' => 1, + ]); + } +} diff --git a/packages/Webkul/User/src/Database/Seeders/DatabaseSeeder.php b/packages/Webkul/User/src/Database/Seeders/DatabaseSeeder.php new file mode 100755 index 000000000..19a5897b0 --- /dev/null +++ b/packages/Webkul/User/src/Database/Seeders/DatabaseSeeder.php @@ -0,0 +1,19 @@ +call(RolesTableSeeder::class); + $this->call(AdminsTableSeeder::class); + } +} diff --git a/packages/Webkul/User/src/Database/Seeders/RolesTableSeeder.php b/packages/Webkul/User/src/Database/Seeders/RolesTableSeeder.php new file mode 100755 index 000000000..98d006342 --- /dev/null +++ b/packages/Webkul/User/src/Database/Seeders/RolesTableSeeder.php @@ -0,0 +1,24 @@ +delete(); + + DB::table('roles')->delete(); + + DB::table('roles')->insert([ + 'id' => 1, + 'name' => 'Administrator', + 'description' => 'Administrator rolem', + 'permission_type' => 'all' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Facades/Bouncer.php b/packages/Webkul/User/src/Facades/Bouncer.php new file mode 100755 index 000000000..e2dfda10b --- /dev/null +++ b/packages/Webkul/User/src/Facades/Bouncer.php @@ -0,0 +1,18 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AccountController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->_config = request('_config'); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function edit() + { + $user = auth()->guard('admin')->user(); + + return view($this->_config['view'], compact('user')); + } + + /** + * Update the specified resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function update() + { + $user = auth()->guard('admin')->user(); + + $this->validate(request(), [ + 'name' => 'required', + 'email' => 'email|unique:admins,email,' . $user->id, + 'password' => 'nullable|min:6|confirmed', + 'current_password' => 'required|min:6' + ]); + + $data = request()->input(); + + if (! Hash::check($data['current_password'], auth()->guard('admin')->user()->password)) { + session()->flash('warning', trans('admin::app.users.users.password-match')); + + return redirect()->back(); + } + + if (! $data['password']) + unset($data['password']); + else + $data['password'] = bcrypt($data['password']); + + $user->update($data); + + session()->flash('success', trans('admin::app.users.users.account-save')); + + return back(); + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Http/Controllers/Controller.php b/packages/Webkul/User/src/Http/Controllers/Controller.php new file mode 100755 index 000000000..a62c059c2 --- /dev/null +++ b/packages/Webkul/User/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ForgetPasswordController extends Controller +{ + use SendsPasswordResetEmails; + + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->_config = request('_config'); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'email' => 'required|email' + ]); + + $response = $this->broker()->sendResetLink( + request(['email']) + ); + + if ($response == Password::RESET_LINK_SENT) { + session()->flash('success', trans($response)); + + return back(); + } + + return back() + ->withInput(request(['email'])) + ->withErrors( + ['email' => trans($response)] + ); + } + + /** + * Get the broker to be used during password reset. + * + * @return \Illuminate\Contracts\Auth\PasswordBroker + */ + public function broker() + { + return Password::broker('admins'); + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Http/Controllers/ResetPasswordController.php b/packages/Webkul/User/src/Http/Controllers/ResetPasswordController.php new file mode 100755 index 000000000..b4b4d0bb7 --- /dev/null +++ b/packages/Webkul/User/src/Http/Controllers/ResetPasswordController.php @@ -0,0 +1,112 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class ResetPasswordController extends Controller +{ + use ResetsPasswords; + + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->_config = request('_config'); + } + + /** + * Display the password reset view for the given token. + * + * If no token is present, display the link request form. + * + * @param string|null $token + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function create($token = null) + { + return view($this->_config['view'])->with( + ['token' => $token, 'email' => request('email')] + ); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'token' => 'required', + 'email' => 'required|email', + 'password' => 'required|confirmed|min:6', + ]); + + $response = $this->broker()->reset( + request(['email', 'password', 'password_confirmation', 'token']), function ($admin, $password) { + $this->resetPassword($admin, $password); + } + ); + + if ($response == Password::PASSWORD_RESET) { + return redirect()->route($this->_config['redirect']); + } + + return back() + ->withInput(request(['email'])) + ->withErrors([ + 'email' => trans($response) + ]); + } + + /** + * Reset the given admin's password. + * + * @param \Illuminate\Contracts\Auth\CanResetPassword $admin + * @param string $password + * @return void + */ + protected function resetPassword($admin, $password) + { + $admin->password = Hash::make($password); + + $admin->setRememberToken(Str::random(60)); + + $admin->save(); + + event(new PasswordReset($admin)); + + auth()->guard('admin')->login($admin); + } + + /** + * Get the broker to be used during password reset. + * + * @return \Illuminate\Contracts\Auth\PasswordBroker + */ + public function broker() + { + return Password::broker('admins'); + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Http/Controllers/RoleController.php b/packages/Webkul/User/src/Http/Controllers/RoleController.php new file mode 100755 index 000000000..7a8c5a0aa --- /dev/null +++ b/packages/Webkul/User/src/Http/Controllers/RoleController.php @@ -0,0 +1,157 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class RoleController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * RoleRepository object + * + * @var array + */ + protected $roleRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\User\Repositories\RoleRepository $roleRepository + * @return void + */ + public function __construct(RoleRepository $roleRepository) + { + $this->middleware('admin'); + + $this->roleRepository = $roleRepository; + + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'name' => 'required', + 'permission_type' => 'required', + ]); + + Event::dispatch('user.role.create.before'); + + $role = $this->roleRepository->create(request()->all()); + + Event::dispatch('user.role.create.after', $role); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Role'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $role = $this->roleRepository->findOrFail($id); + + return view($this->_config['view'], compact('role')); + } + + /** + * Update the specified resource in storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id) + { + $this->validate(request(), [ + 'name' => 'required', + 'permission_type' => 'required', + ]); + + Event::dispatch('user.role.update.before', $id); + + $role = $this->roleRepository->update(request()->all(), $id); + + Event::dispatch('user.role.update.after', $role); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Role'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $role = $this->roleRepository->findOrFail($id); + + if ($role->admins->count() >= 1) { + session()->flash('error', trans('admin::app.response.being-used', ['name' => 'Role', 'source' => 'Admin User'])); + } else if($this->roleRepository->count() == 1) { + session()->flash('error', trans('admin::app.response.last-delete-error', ['name' => 'Role'])); + } else { + try { + Event::dispatch('user.role.delete.before', $id); + + $this->roleRepository->delete($id); + + Event::dispatch('user.role.delete.after', $id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Role'])); + + return response()->json(['message' => true], 200); + } catch(\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Role'])); + } + } + + return response()->json(['message' => false], 400); + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Http/Controllers/SessionController.php b/packages/Webkul/User/src/Http/Controllers/SessionController.php new file mode 100755 index 000000000..de5d7ab6c --- /dev/null +++ b/packages/Webkul/User/src/Http/Controllers/SessionController.php @@ -0,0 +1,101 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class SessionController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->middleware('admin')->except(['create','store']); + + $this->_config = request('_config'); + + $this->middleware('guest', ['except' => 'destroy']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + if (auth()->guard('admin')->check()) { + return redirect()->route('admin.dashboard.index'); + } else { + if (strpos(url()->previous(), 'admin') !== false) { + $intendedUrl = url()->previous(); + } else { + $intendedUrl = route('admin.dashboard.index'); + } + + session()->put('url.intended', $intendedUrl); + + return view($this->_config['view']); + } + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'email' => 'required|email', + 'password' => 'required' + ]); + + $remember = request('remember'); + + if (! auth()->guard('admin')->attempt(request(['email', 'password']), $remember)) { + session()->flash('error', trans('admin::app.users.users.login-error')); + + return redirect()->back(); + } + + if (auth()->guard('admin')->user()->status == 0) { + session()->flash('warning', trans('admin::app.users.users.activate-warning')); + + auth()->guard('admin')->logout(); + + return redirect()->route('admin.session.create'); + } + + return redirect()->intended(route($this->_config['redirect'])); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + auth()->guard('admin')->logout(); + + return redirect()->route($this->_config['redirect']); + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Http/Controllers/UserController.php b/packages/Webkul/User/src/Http/Controllers/UserController.php new file mode 100755 index 000000000..8a680fcc6 --- /dev/null +++ b/packages/Webkul/User/src/Http/Controllers/UserController.php @@ -0,0 +1,221 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class UserController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * AdminRepository object + * + * @var Object + */ + protected $adminRepository; + + /** + * RoleRepository object + * + * @var Object + */ + protected $roleRepository; + + /** + * Create a new controller instance. + * + * @param \Webkul\User\Repositories\AdminRepository $adminRepository + * @param \Webkul\User\Repositories\RoleRepository $roleRepository + * @return void + */ + public function __construct( + AdminRepository $adminRepository, + RoleRepository $roleRepository + ) + { + $this->adminRepository = $adminRepository; + + $this->roleRepository = $roleRepository; + + $this->_config = request('_config'); + + $this->middleware('guest', ['except' => 'destroy']); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\View\View + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + $roles = $this->roleRepository->all(); + + return view($this->_config['view'], compact('roles')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Webkul\User\Http\Requests\UserForm $request + * @return \Illuminate\Http\RedirectResponse + */ + public function store(UserForm $request) + { + $data = $request->all(); + + if (isset($data['password']) && $data['password']) + $data['password'] = bcrypt($data['password']); + + Event::dispatch('user.admin.create.before'); + + $admin = $this->adminRepository->create($data); + + Event::dispatch('user.admin.create.after', $admin); + + session()->flash('success', trans('admin::app.response.create-success', ['name' => 'User'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param integer $id + * @return \Illuminate\View\View + */ + public function edit($id) + { + $user = $this->adminRepository->findOrFail($id); + + $roles = $this->roleRepository->all(); + + return view($this->_config['view'], compact('user', 'roles')); + } + + /** + * Update the specified resource in storage. + * + * @param \Webkul\User\Http\Requests\UserForm $request + * @param int $id + * @return \Illuminate\Http\RedirectResponse + */ + public function update(UserForm $request, $id) + { + $data = $request->all(); + + if (! $data['password']) + unset($data['password']); + else + $data['password'] = bcrypt($data['password']); + + if (isset($data['status'])) { + $data['status'] = 1; + } else { + $data['status'] = 0; + } + + Event::dispatch('user.admin.update.before', $id); + + $admin = $this->adminRepository->update($data, $id); + + Event::dispatch('user.admin.update.after', $admin); + + session()->flash('success', trans('admin::app.response.update-success', ['name' => 'User'])); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\JsonResponse|\Illuminate\View\View + */ + public function destroy($id) + { + $user = $this->adminRepository->findOrFail($id); + + if ($this->adminRepository->count() == 1) { + session()->flash('error', trans('admin::app.response.last-delete-error', ['name' => 'Admin'])); + } else { + Event::dispatch('user.admin.delete.before', $id); + + if (auth()->guard('admin')->user()->id == $id) { + return view('admin::customers.confirm-password'); + } + + try { + $this->adminRepository->delete($id); + + session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Admin'])); + + Event::dispatch('user.admin.delete.after', $id); + + return response()->json(['message' => true], 200); + } catch (Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Admin'])); + } + } + + return response()->json(['message' => false], 400); + } + + /** + * destroy current after confirming + * + * @return mixed + */ + public function destroySelf() + { + $password = request()->input('password'); + + if (Hash::check($password, auth()->guard('admin')->user()->password)) { + if ($this->adminRepository->count() == 1) { + session()->flash('error', trans('admin::app.users.users.delete-last')); + } else { + $id = auth()->guard('admin')->user()->id; + + Event::dispatch('user.admin.delete.before', $id); + + $this->adminRepository->delete($id); + + Event::dispatch('user.admin.delete.after', $id); + + session()->flash('success', trans('admin::app.users.users.delete-success')); + + return redirect()->route('admin.session.create'); + } + } else { + session()->flash('warning', trans('admin::app.users.users.incorrect-password')); + + return redirect()->route($this->_config['redirect']); + } + } +} diff --git a/packages/Webkul/User/src/Http/Middleware/Bouncer.php b/packages/Webkul/User/src/Http/Middleware/Bouncer.php new file mode 100755 index 000000000..f7b5c8efa --- /dev/null +++ b/packages/Webkul/User/src/Http/Middleware/Bouncer.php @@ -0,0 +1,45 @@ +check()) { + return redirect()->route('admin.session.create'); + } + + $this->checkIfAuthorized($request); + + return $next($request); + } + + public function checkIfAuthorized($request) + { + if (! $role = auth()->guard('admin')->user()->role) + abort(401, 'This action is unauthorized.'); + + if ($role->permission_type == 'all') { + return; + } else { + $acl = app('acl'); + + if ($acl && isset($acl->roles[Route::currentRouteName()])) { + bouncer()->allow($acl->roles[Route::currentRouteName()]); + } + } + } +} diff --git a/packages/Webkul/User/src/Http/Requests/UserForm.php b/packages/Webkul/User/src/Http/Requests/UserForm.php new file mode 100755 index 000000000..67b97171c --- /dev/null +++ b/packages/Webkul/User/src/Http/Requests/UserForm.php @@ -0,0 +1,42 @@ +rules = [ + 'name' => 'required', + 'email' => 'email|unique:admins,email', + 'password' => 'nullable|confirmed', + 'status' => 'sometimes', + 'role_id' => 'required' + ]; + + if ($this->method() == 'PUT') { + $this->rules['email'] = 'email|unique:admins,email,' . $this->route('id'); + } + + return $this->rules; + } +} diff --git a/packages/Webkul/User/src/Http/helpers.php b/packages/Webkul/User/src/Http/helpers.php new file mode 100755 index 000000000..f6ad1d7d2 --- /dev/null +++ b/packages/Webkul/User/src/Http/helpers.php @@ -0,0 +1,8 @@ +make(\Webkul\User\Bouncer::class); + } + } +?> \ No newline at end of file diff --git a/packages/Webkul/User/src/Models/Admin.php b/packages/Webkul/User/src/Models/Admin.php new file mode 100755 index 000000000..5757e1ff6 --- /dev/null +++ b/packages/Webkul/User/src/Models/Admin.php @@ -0,0 +1,66 @@ +belongsTo(RoleProxy::modelClass()); + } + + /** + * Send the password reset notification. + * + * @param string $token + * @return void + */ + public function sendPasswordResetNotification($token) + { + $this->notify(new AdminResetPassword($token)); + } + + /** + * Checks if admin has permission to perform certain action. + * + * @param String $permission + * @return Boolean + */ + public function hasPermission($permission) + { + if ($this->role->permission_type == 'custom' && ! $this->role->permissions) + return false; + + return in_array($permission, $this->role->permissions); + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Models/AdminProxy.php b/packages/Webkul/User/src/Models/AdminProxy.php new file mode 100644 index 000000000..06721d054 --- /dev/null +++ b/packages/Webkul/User/src/Models/AdminProxy.php @@ -0,0 +1,10 @@ + 'array' + ]; + + /** + * Get the admins. + */ + public function admins() + { + return $this->hasMany(AdminProxy::modelClass()); + } +} diff --git a/packages/Webkul/User/src/Models/RoleProxy.php b/packages/Webkul/User/src/Models/RoleProxy.php new file mode 100644 index 000000000..e5e58dc85 --- /dev/null +++ b/packages/Webkul/User/src/Models/RoleProxy.php @@ -0,0 +1,10 @@ +token); + } + + return (new MailMessage) + ->view('shop::emails.admin.forget-password', [ + 'user_name' => $notifiable->name, + 'token' => $this->token + ]); + } +} diff --git a/packages/Webkul/User/src/Providers/ModuleServiceProvider.php b/packages/Webkul/User/src/Providers/ModuleServiceProvider.php new file mode 100644 index 000000000..cefb5bd71 --- /dev/null +++ b/packages/Webkul/User/src/Providers/ModuleServiceProvider.php @@ -0,0 +1,13 @@ +aliasMiddleware('admin', BouncerMiddleware::class); + + $this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + $this->registerBouncer(); + } + + /** + * Register Bouncer as a singleton. + * + * @return void + */ + protected function registerBouncer() + { + $loader = AliasLoader::getInstance(); + $loader->alias('Bouncer', BouncerFacade::class); + + $this->app->singleton('bouncer', function () { + return new Bouncer(); + }); + } +} diff --git a/packages/Webkul/User/src/Repositories/AdminRepository.php b/packages/Webkul/User/src/Repositories/AdminRepository.php new file mode 100755 index 000000000..673c1839e --- /dev/null +++ b/packages/Webkul/User/src/Repositories/AdminRepository.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AdminRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\User\Contracts\Admin'; + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Repositories/RoleRepository.php b/packages/Webkul/User/src/Repositories/RoleRepository.php new file mode 100755 index 000000000..573c1db44 --- /dev/null +++ b/packages/Webkul/User/src/Repositories/RoleRepository.php @@ -0,0 +1,24 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class RoleRepository extends Repository +{ + /** + * Specify Model class name + * + * @return mixed + */ + function model() + { + return 'Webkul\User\Contracts\Role'; + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/resources/manifest.php b/packages/Webkul/User/src/resources/manifest.php new file mode 100644 index 000000000..b5b3bebaf --- /dev/null +++ b/packages/Webkul/User/src/resources/manifest.php @@ -0,0 +1,6 @@ + 'Webkul Bagisto User', + 'version' => '0.0.1' + ]; diff --git a/phpunit.xml b/phpunit.xml new file mode 100755 index 000000000..c9e326b69 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,33 @@ + + + + + ./tests/Feature + + + + ./tests/Unit + + + + + ./app + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100755 index 000000000..b75525bed --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Handle Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100755 index 000000000..e69de29bb diff --git a/public/index.php b/public/index.php new file mode 100644 index 000000000..128cf2cf5 --- /dev/null +++ b/public/index.php @@ -0,0 +1,79 @@ + + */ + +define('LARAVEL_START', microtime(true)); + +/* +|-------------------------------------------------------------------------- +| Turn On The Lights +|-------------------------------------------------------------------------- +| +| We need to illuminate PHP development, so let us turn on the lights. +| This bootstraps the framework and gets it ready for use, then it +| will load up this application so that we can run it and send +| the responses back to the browser and delight our users. +| +*/ + +$app = require_once __DIR__.'/../bootstrap/app.php'; + +/* +|-------------------------------------------------------------------------- +| Run The Application +|-------------------------------------------------------------------------- +| +| Once we have the application, we can handle the incoming request +| through the kernel, and send the associated response back to +| the client's browser allowing them to enjoy the creative +| and wonderful application we have prepared for them. +| +*/ + +$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); + +$response = $kernel->handle( + $request = Illuminate\Http\Request::capture() +); + +$response->send(); + +$kernel->terminate($request, $response); \ No newline at end of file diff --git a/public/installer/Admin.php b/public/installer/Admin.php new file mode 100755 index 000000000..16b6a197c --- /dev/null +++ b/public/installer/Admin.php @@ -0,0 +1,130 @@ + + + + +
    +
    +

    Admin Details

    + +
    +
    +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + \ No newline at end of file diff --git a/public/installer/AdminConfig.php b/public/installer/AdminConfig.php new file mode 100755 index 000000000..2172f3591 --- /dev/null +++ b/public/installer/AdminConfig.php @@ -0,0 +1,113 @@ +connect_error) { + $data['connection'] = $conn->connect_error; + } + + $email = $_POST['admin_email']; + $name = $_POST['admin_name']; + $password = password_hash($_POST['admin_password'], PASSWORD_BCRYPT, ['cost' => 10]); + + // Deleting migrated admin + $deleteAdmin = "DELETE FROM admins WHERE id=1"; + $conn->query($deleteAdmin); + + // query for insertion + $sql = "INSERT INTO admins (name, email, password, role_id, status) + VALUES ('".$name."', '".$email."', '".$password."', '1', '1')"; + + if ($conn->query($sql) === TRUE) { + $data['insert_success'] = 'Data Successfully inserted into database'; + } else { + $data['insert_fail'] = "Error: " . $sql . "
    " . $conn->error; + } + + $conn->close(); + } else { + $data['support_error'] = 'Bagisto currently support MySQL only. Press OK to still continue or change you DB connection to MySQL'; + } + + $storage_output = exec('cd ../.. && php artisan storage:link 2>&1'); + + // if there are no errors process our form, then return a message + // show a message of success and provide a true success variable + $data['success'] = true; + $data['message'] = 'Success!'; + } + + // return all our data to an AJAX call + echo json_encode($data); \ No newline at end of file diff --git a/public/installer/CSS/style.css b/public/installer/CSS/style.css new file mode 100755 index 000000000..db093a41a --- /dev/null +++ b/public/installer/CSS/style.css @@ -0,0 +1,191 @@ +body { + margin: 0; + font-size: 16px; + font-family: "Montserrat", sans-serif; + color: #000311; + text-align: center; + background: white; + position: relative; + height: 100%; +} + +.initial-display .logo { + width: 150px; +} + +.initial-display p { + font-size: 24px; + color: #333333; + text-align: center; + font-weight: 600; + margin-top: 50px; +} + +.prepare-btn { + box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.2), 0 0 8px 0 rgba(0, 0, 0, 0.1); + border-radius: 3px; + border: none; + cursor: pointer; + font: inherit; + display: inline-block; + background: #0041FF; + color: #ffffff; + padding: 10px 20px; + margin-top: 20px; +} + +.footer { + bottom: 0; + position: absolute; + width: 100%; + padding-bottom: 20px; +} + +.left-patern { + position: absolute; + left: 0; + bottom: 0; +} + +.right-patern { + position: absolute; + right: 0; + bottom: 0; +} + +.content { + border: 1px solid #979797; + border-radius: 3px; + width: 600px; + height: 392px; + margin-left: calc(50% - 300px); + text-align: left; + overflow-x: scroll; +} + +.title { + font-size: 16px; + color: #151515; + line-height: 30px; + text-align: left; + margin-top: 30px; + margin-bottom: 10px; +} + +span { + font-size: 16px; + color: #333333; + line-height: 30px; +} + +.welcome, .environment, .migration, .permission, .admin, .finish { + display : none; +} + +.control-group { + display: block; + margin-bottom: 25px; + font-size: 15px; + color: #333333; + width: 750px; + max-width: 100%; + position: relative; +} + +.control-group label { + display: block; + color: #3a3a3a; +} + +.control-group .control { + background: #fff; + border: 2px solid #C7C7C7; + border-radius: 3px; + width: 100%; + height: 36px; + display: inline-block; + vertical-align: middle; + -webkit-transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1); + transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1); + padding: 0px 10px; + font-size: 15px; + margin-top: 10px; + margin-bottom: 5px; +} + +.control-group label.required::after { + content: "*"; + color: #FC6868; + font-weight: 700; + display: inline-block; +} + +.form-error { + color: #ff5656 !important; +} + +.control-group.has-error .control { + border-color: #FC6868 !important; +} + +pre.bash { + background-color: black; + color: white; + font-size: medium ; + font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace; + width: 100%; + display: inline-block; + height: 100%; +} + +.cp-round:before { + border-radius: 50%; + content: " "; + width: 48px; + height: 48px; + display: inline-block; + box-sizing: border-box; + border-top: solid 6px #bababa; + border-right: solid 6px #bababa; + border-bottom: solid 6px #bababa; + border-left: solid 6px #bababa; + position: absolute; + top: calc(50% - 24px); + left: calc(50% - 24px); +} + +.check { + line-height: 40px; +} + +.cp-round:after { + border-radius: 50%; + content: " "; + width: 48px; + height: 48px; + display: inline-block; + box-sizing: border-box; + border-top: solid 6px #0041FF; + border-right: solid 6px #bababa; + border-bottom: solid 6px #bababa; + border-left: solid 6px #bababa; + position: absolute; + top: calc(50% - 24px); + left: calc(50% - 24px); + animation: spin 1s ease-in-out infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.composer { + position: absolute; + top: calc(50% + 24px); + display: none; +} + +.message { + padding-left: 140px; +} diff --git a/public/installer/Classes/Requirement.php b/public/installer/Classes/Requirement.php new file mode 100755 index 000000000..e033d4ddf --- /dev/null +++ b/public/installer/Classes/Requirement.php @@ -0,0 +1,161 @@ + [ + 'openssl', + 'pdo', + 'mbstring', + 'tokenizer', + 'JSON', + 'cURL', + ], + // 'apache' => [ + // 'mod_rewrite', + // ] + ]; + + $results = []; + + foreach($requirements as $type => $requirement) + { + switch ($type) { + // check php requirements + case 'php': + foreach($requirements[$type] as $requirement) + { + $results['requirements'][$type][$requirement] = true; + + if(!extension_loaded($requirement)) + { + $results['requirements'][$type][$requirement] = false; + + $results['errors'] = true; + } + } + break; + + // check apache requirements + // case 'apache': + // foreach ($requirements[$type] as $requirement) { + // // if function doesn't exist we can't check apache modules + // if(function_exists('apache_get_modules')) + // { + // $results['requirements'][$type][$requirement] = true; + + // if(!in_array($requirement,apache_get_modules())) + // { + // $results['requirements'][$type][$requirement] = false; + + // $results['errors'] = true; + // } + // } + // } + //break; + } + } + + return $results; + } + + /** + * Check PHP version requirement. + * + * @return array + */ + public function checkPHPversion() + { + /** + * Minimum PHP Version Supported (Override is in installer.php config file). + * + * @var _minPhpVersion + */ + $_minPhpVersion = '7.1.17'; + + $currentPhpVersion = $this->getPhpVersionInfo(); + $supported = false; + + if (version_compare((str_pad($currentPhpVersion['version'], 6, "0")), $_minPhpVersion) >= 0) { + $supported = true; + } + + $phpStatus = [ + 'full' => $currentPhpVersion['full'], + 'current' => $currentPhpVersion['version'], + 'minimum' => $_minPhpVersion, + 'supported' => $supported + ]; + + return $phpStatus; + } + + /** + * Get current Php version information + * + * @return array + */ + private static function getPhpVersionInfo() + { + $currentVersionFull = PHP_VERSION; + preg_match("#^\d+(\.\d+)*#", $currentVersionFull, $filtered); + $currentVersion = $filtered[0]; + + return [ + 'full' => $currentVersionFull, + 'version' => $currentVersion + ]; + } + + /** + * Check composer installation. + * + * @return array + */ + public function composerInstall() + { + $location = str_replace('\\', '/', getcwd()); + $currentLocation = explode("/", $location); + array_pop($currentLocation); + array_pop($currentLocation); + $desiredLocation = implode("/", $currentLocation); + $autoLoadFile = $desiredLocation . '/' . 'vendor' . '/' . 'autoload.php'; + + if (file_exists($autoLoadFile)) { + $data['composer_install'] = 0; + } else { + $data['composer_install'] = 1; + $data['composer'] = 'Composer dependencies is not Installed.Go to root of project, run "composer install" command to install composer dependencies & refresh page again.'; + } + + return $data; + } + + /** + * Render view for class. + * + */ + public function render() + { + $requirements = $this->checkRequirements(); + + $phpVersion = $this->checkPHPversion(); + + $composerInstall = $this->composerInstall(); + + ob_start(); + + include __DIR__ . '/../Views/requirements.blade.php'; + + return ob_get_clean(); + } +} diff --git a/public/installer/Classes/Welcome.php b/public/installer/Classes/Welcome.php new file mode 100755 index 000000000..a18c507fa --- /dev/null +++ b/public/installer/Classes/Welcome.php @@ -0,0 +1,17 @@ + +
    +

    Email Configuration

    +
    +
    +
    + + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +

    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 + + + icon-cart + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-dropdown-left.svg b/packages/Webkul/Shop/publishable/assets/images/icon-dropdown-left.svg new file mode 100755 index 000000000..ddc827bf8 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-dropdown-left.svg @@ -0,0 +1,10 @@ + + + + icon-dropdown-left + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-dropdown.svg b/packages/Webkul/Shop/publishable/assets/images/icon-dropdown.svg new file mode 100644 index 000000000..dd459433e --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-dropdown.svg @@ -0,0 +1,10 @@ + + + + icon-dropdown + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-filter.svg b/packages/Webkul/Shop/publishable/assets/images/icon-filter.svg new file mode 100755 index 000000000..292a6b68a --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-filter.svg @@ -0,0 +1,10 @@ + + + + icon-filter + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-grid-view.svg b/packages/Webkul/Shop/publishable/assets/images/icon-grid-view.svg new file mode 100755 index 000000000..2412dfbb6 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-grid-view.svg @@ -0,0 +1,17 @@ + + + + icon-grid-view + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-list-view.svg b/packages/Webkul/Shop/publishable/assets/images/icon-list-view.svg new file mode 100755 index 000000000..e6df3dc85 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-list-view.svg @@ -0,0 +1,19 @@ + + + + icon-list-view + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-menu-back.svg b/packages/Webkul/Shop/publishable/assets/images/icon-menu-back.svg new file mode 100755 index 000000000..25bd3c717 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-menu-back.svg @@ -0,0 +1,13 @@ + + + + icon-menu-back + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-menu-close.svg b/packages/Webkul/Shop/publishable/assets/images/icon-menu-close.svg new file mode 100755 index 000000000..014866710 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-menu-close.svg @@ -0,0 +1,13 @@ + + + + icon-menu-close + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-menu.svg b/packages/Webkul/Shop/publishable/assets/images/icon-menu.svg new file mode 100755 index 000000000..4dd357aa5 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-menu.svg @@ -0,0 +1,20 @@ + + + + icon-menu + Created with Sketch. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-search.svg b/packages/Webkul/Shop/publishable/assets/images/icon-search.svg new file mode 100755 index 000000000..8afb677fb --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-search.svg @@ -0,0 +1,11 @@ + + + + icon-search + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-share.svg b/packages/Webkul/Shop/publishable/assets/images/icon-share.svg new file mode 100755 index 000000000..4e3860f01 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-share.svg @@ -0,0 +1,10 @@ + + + + icon-share + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/icon-sort.svg b/packages/Webkul/Shop/publishable/assets/images/icon-sort.svg new file mode 100755 index 000000000..f52b8f0da --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/icon-sort.svg @@ -0,0 +1,13 @@ + + + + icon-sort + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/instagram.svg b/packages/Webkul/Shop/publishable/assets/images/instagram.svg new file mode 100755 index 000000000..ed03e2fd6 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/instagram.svg @@ -0,0 +1,13 @@ + + + + instagram + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/jeans.jpg b/packages/Webkul/Shop/publishable/assets/images/jeans.jpg new file mode 100755 index 0000000000000000000000000000000000000000..bd57eca4496f276c512cd061acd0bd348e2ae9d3 GIT binary patch literal 4565 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 literal 0 HcmV?d00001 diff --git a/packages/Webkul/Shop/publishable/assets/images/jeans_big.jpg b/packages/Webkul/Shop/publishable/assets/images/jeans_big.jpg new file mode 100755 index 0000000000000000000000000000000000000000..6d636e5bf1cf9e523f425bffc07a77a3e5596deb GIT binary patch literal 13696 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 L{Qqq+xfuUHhB88Z literal 0 HcmV?d00001 diff --git a/packages/Webkul/Shop/publishable/assets/images/linkedin.svg b/packages/Webkul/Shop/publishable/assets/images/linkedin.svg new file mode 100755 index 000000000..3e3def86d --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/linkedin.svg @@ -0,0 +1,13 @@ + + + + linkedin + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/logo.svg b/packages/Webkul/Shop/publishable/assets/images/logo.svg new file mode 100755 index 000000000..bf61fdad9 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/logo.svg @@ -0,0 +1,13 @@ + + + + Logo + Created with Sketch. + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/new.png b/packages/Webkul/Shop/publishable/assets/images/new.png new file mode 100755 index 0000000000000000000000000000000000000000..4279858665ad826b1d678bdc2ddf671d5f9b171d GIT binary patch literal 4769 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 literal 0 HcmV?d00001 diff --git a/packages/Webkul/Shop/publishable/assets/images/offer-zone.svg b/packages/Webkul/Shop/publishable/assets/images/offer-zone.svg new file mode 100755 index 000000000..dc2f60ebd --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/offer-zone.svg @@ -0,0 +1,13 @@ + + + + icon-offer + Created with Sketch. + + + + + % + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/payment.svg b/packages/Webkul/Shop/publishable/assets/images/payment.svg new file mode 100755 index 000000000..32d40e2bf --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/payment.svg @@ -0,0 +1,13 @@ + + + + tab/heading/icon/payment + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/product/large-product-placeholder.png b/packages/Webkul/Shop/publishable/assets/images/product/large-product-placeholder.png new file mode 100755 index 0000000000000000000000000000000000000000..e839910ccb43d249c2259100efa6929803ad7bd1 GIT binary patch literal 12914 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 S0sln8pnuWm!uxX$_x=N20pnc& literal 0 HcmV?d00001 diff --git a/packages/Webkul/Shop/publishable/assets/images/product/meduim-product-placeholder.png b/packages/Webkul/Shop/publishable/assets/images/product/meduim-product-placeholder.png new file mode 100755 index 0000000000000000000000000000000000000000..0aa66dc5200c0a9b9e96da022f344e7db1004be2 GIT binary patch literal 7119 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 VR;Si}W&EK7=xP~hR;Xj~{|2acysrQN literal 0 HcmV?d00001 diff --git a/packages/Webkul/Shop/publishable/assets/images/product/small-product-placeholder.png b/packages/Webkul/Shop/publishable/assets/images/product/small-product-placeholder.png new file mode 100755 index 0000000000000000000000000000000000000000..8526a85f5f5735a9ce2894e304d9ae3dc4fdc259 GIT binary patch literal 2412 zcmbW3Su`667snGxNh7h82&%TRHkN2@)wB&_>`IGTqP8^A+ES{BsYc!NB}oT_HJnrXCszgm45diX)T%DUMz@S3+nEnl+fzD|B{dB zXY|+5t8%ONeht}75)xgnT#Jf{@htJQ`NY`z`Z4mm;@-i&XBY2r6A@y3^V2JQY-ngj z`SpazYflJ)rOYkwa`5>6(jHX7D zNMGDi6BL@W{!vEDj`P}XRu(QuUyZ~W{SxtW{A zyD_fF5o-6;6I4$&3jOdTDm3(Bm$a;S0Ndv@7J+UPL}Z)Ejt@flrp`)AKPmpHJ(CZzE$*N3ebAu&&&T&qfJDq`4RxMjpnb#u!0u) zBl#>|eqaf?e*;f$^^?o^NPo_yxX)a@iJuEb3RnAinm&G8b_WTeS9>8+B)3Z= zPi`XGwUIU7yE2eA$Sy0N4&=O2Xjk09o)h$9i3#mfXQw&BTvP2%08**9Rq{gI!OJ9N zjlU=xRV^HEZ|^Hs8}3Bvs%aOQzck)-R#9~}-(vnEOmaQWyRA0{Vb14rxpq35sqfB4 zF88kvfD~q1(<5jqa=nM2uAOj*ekR?!YgXrX#lp-1&UUHQ{goyy(0!7GlCPdHaW$V4 zv(!ie%oO{$$ej`+=afIN3w>THTx(S2A{59uN%b3$xh|R!L2qD8yvu0RZnC~U2$^a) z(AM>m))_SQ5Kf-{7bc6Q<-&t%&zc1>KVV^+B2H+P!2aluFHl}W!e}r#ho9apA6~*1 zl=DMBUBZ^k&d!De2KITJ7_452ndb3$^<9o5(9Hgsc!hJ6;ozVkjo%0gV?&;h{XN^k zo|QG--b#Qx0-cYEUL|bp??!eh*Ke;(o8LoRk5^)-Ifg+>-JhI8T!g#6Hf;BlhL3hwt2kPE`QL;~%l2mce z_~+2HZ_@2&3<*MZKj#Usmpdm4M1Y3=__}bgluye89vb~jB>INTctv9m$}k`|EE%9P zyN##Zo5q*w&`4phzKCY$%YC%SFnbTcmm40mbx0=-^Q&zgy10+?U*YSF^yXbLh26&~ zW0^Y###3-dUk>CHakq-P)bkZ<^YB7-d%2)m_-kUs&%k;8y{5 zLk9JJk6;uv)V(|0^OjqyIWUfkiCmUbCF$j15AR#)>FzFrXX{tLGPYu)+spsrq#F7T z1*083RbGU6p|j{#-l)?WkeWr;Gud46cP z<+OPX=S&Eu&{skW#!|kV%`YP^3ShDR8+@nuV4oiH@wqahUBrN~T7coyc?N+YQYf59 z=n@zZv$W{goj(yp?%Znx7+kwE;hTYBv@Eb<6mK!2B) zuqy^v3SX#Ri1!Ayv#rxF|4J=4Od^Y_qH2RC(8f>Om6 z$#$ssW@MC|2^qo?>27$W{eKF}x2x`{na>xc^2XS}-ePL&cZ>;ZCTlF^(S++~=M&~B zbFQBK7w|n42EWN!dw7_s!N>oEH%#pL_B{S!8~4)$+$&{{>wzW2Bu~8&d1{Z}R5Hm0 ztx(Rq^cStm-rHWIbJ6}05sjUJb1Qy-zKxIN27FCxY-}Xxio+XG4SO9DFu!_`_<%tMX(HpFe=37d*|TzR#s^!P8nPrxilbLoechz02(qmYTY+mVrfqhqH#?k&Hg z*)p%TG&PO3#%wu=XM~wNKmY0&OHx;P=x^~F3E@lircw_R%0^UVB{X2I`EISTyRPtV zOH0di2^eRz)@xyX3zV(Jz2T&gp7y3J>LIl@#izs#Z)>Ur?^6_y33ie>K9rB0Hd%z~ zQ4Ox?3Ji4}ReKj8RU;8-GMpN~eBhuZ3#4}!o*K9{fJ6Rdob1LaJCFOKIMPu4b2(E2 zlXA#9<$9j44Gdkf43^NGSX|My%XFqh=DEOuz(u!TaQdZ$*zYT*X{Xiw{UgZp<5b=o znak>DS(+ox^ zNmUS)eWFk$zt{~mMDTvld_A!z;j$X#82DnroV7T{qFmj2C5OtsTa*(sB=eAe+}{F1 zoP3%b1g5|I5qvLG(pc>rj!q5;K9#*O#ZCRhrCMFfT68JsW#+!gRcbk=e5pVQOkWLB z4ZAmGbLdjUivLxJM3jYvz;q56P5$c>n+a literal 0 HcmV?d00001 diff --git a/packages/Webkul/Shop/publishable/assets/images/selected.svg b/packages/Webkul/Shop/publishable/assets/images/selected.svg new file mode 100755 index 000000000..ee452e928 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/selected.svg @@ -0,0 +1,11 @@ + + + + radio/selected + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/shipping.svg b/packages/Webkul/Shop/publishable/assets/images/shipping.svg new file mode 100755 index 000000000..811d9dba2 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/shipping.svg @@ -0,0 +1,15 @@ + + + + tab/heading/icon/shipping + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/twitter.svg b/packages/Webkul/Shop/publishable/assets/images/twitter.svg new file mode 100755 index 000000000..aba946d0c --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/twitter.svg @@ -0,0 +1,13 @@ + + + + twitter + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/unselected.svg b/packages/Webkul/Shop/publishable/assets/images/unselected.svg new file mode 100755 index 000000000..1040c9d5e --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/unselected.svg @@ -0,0 +1,10 @@ + + + + radio/unselected + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/wishlist-added.svg b/packages/Webkul/Shop/publishable/assets/images/wishlist-added.svg new file mode 100755 index 000000000..fcd0ba228 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/wishlist-added.svg @@ -0,0 +1,10 @@ + + + + Wishlist-Add + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/images/wishlist.svg b/packages/Webkul/Shop/publishable/assets/images/wishlist.svg new file mode 100755 index 000000000..fa0012118 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/images/wishlist.svg @@ -0,0 +1,10 @@ + + + + Wishlist + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Shop/publishable/assets/js/shop.js b/packages/Webkul/Shop/publishable/assets/js/shop.js new file mode 100755 index 000000000..c8e0ee7b6 --- /dev/null +++ b/packages/Webkul/Shop/publishable/assets/js/shop.js @@ -0,0 +1,2 @@ +/*! For license information please see shop.js.LICENSE */ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=0)}({0:function(e,t,n){n("uPOf"),e.exports=n("w/dW")},"2SVd":function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},"5oMp":function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},"8oxB":function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var u,l=[],c=!1,d=-1;function f(){c&&u&&(c=!1,u.length?l=u.concat(l):d=-1,l.length&&p())}function p(){if(!c){var e=s(f);c=!0;for(var t=l.length;t;){for(u=l,l=[];++d1)for(var n=1;n3?u.length%3:0;return s+(h?u.substr(0,h)+o.thousand:"")+u.substr(h).replace(/(\d{3})(?=\d)/g,"$1"+o.thousand)+(a?o.decimal+m(Math.abs(e),a).split(".")[1]:"")},y=i.formatMoney=function(e,t,n,r,o,a){if(l(e))return f(e,(function(e){return y(e,t,n,r,o,a)}));e=v(e);var s=d(c(t)?t:{symbol:t,precision:n,thousand:r,decimal:o,format:a},i.settings.currency),u=h(s.format);return(e>0?u.pos:e<0?u.neg:u.zero).replace("%s",s.symbol).replace("%v",g(Math.abs(e),p(s.precision),s.thousand,s.decimal))};i.formatColumn=function(e,t,n,r,o,a){if(!e)return[];var s=d(c(t)?t:{symbol:t,precision:n,thousand:r,decimal:o,format:a},i.settings.currency),m=h(s.format),y=m.pos.indexOf("%s")0?m.pos:e<0?m.neg:m.zero).replace("%s",s.symbol).replace("%v",g(Math.abs(e),p(s.precision),s.thousand,s.decimal));return n.length>b&&(b=n.length),n}));return f(w,(function(e,t){return u(e)&&e.length0&&t-1 in e)}_.fn=_.prototype={jquery:"3.4.1",constructor:_,length:0,toArray:function(){return u.call(this)},get:function(e){return null==e?u.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=_.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return _.each(this,e)},map:function(e){return this.pushStack(_.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(u.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|"+I+")"+I+"*"),U=new RegExp(I+"|>"),V=new RegExp(W),Z=new RegExp("^"+M+"$"),Y={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+I+"*(even|odd|(([+-]|)(\\d*)n|)"+I+"*(?:([+-]|)"+I+"*(\\d+)|))"+I+"*\\)|)","i"),bool:new RegExp("^(?:"+j+")$","i"),needsContext:new RegExp("^"+I+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+I+"*((?:-\\d)?\\d*)"+I+"*\\)|)(?=[^-]|$)","i")},X=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+I+"?|("+I+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){f()},ae=we((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{L.apply($=N.call(x.childNodes),x.childNodes),$[x.childNodes.length].nodeType}catch(e){L={apply:$.length?function(e,t){D.apply(e,N.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var o,s,l,c,d,h,g,y=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:x)!==p&&f(t),t=t||p,v)){if(11!==T&&(d=K.exec(e)))if(o=d[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(y&&(l=y.getElementById(o))&&b(t,l)&&l.id===o)return r.push(l),r}else{if(d[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+" "]&&(!m||!m.test(e))&&(1!==T||"object"!==t.nodeName.toLowerCase())){if(g=e,y=t,1===T&&U.test(e)){for((c=t.getAttribute("id"))?c=c.replace(re,ie):t.setAttribute("id",c=w),s=(h=a(e)).length;s--;)h[s]="#"+c+" "+be(h[s]);g=h.join(","),y=ee.test(e)&&ge(t.parentNode)||t}try{return L.apply(r,y.querySelectorAll(g)),r}catch(t){A(e,!0)}finally{c===w&&t.removeAttribute("id")}}}return u(e.replace(F,"$1"),t,r,i)}function ue(){var e=[];return function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}}function le(e){return e[w]=!0,e}function ce(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function de(e,t){for(var n=e.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function pe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ve(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function me(e){return le((function(t){return t=+t,le((function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!X.test(t||n&&n.nodeName||"HTML")},f=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:x;return a!==p&&9===a.nodeType&&a.documentElement?(h=(p=a).documentElement,v=!o(p),x!==p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",oe,!1):i.attachEvent&&i.attachEvent("onunload",oe)),n.attributes=ce((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=ce((function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=J.test(p.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=w,!p.getElementsByName||!p.getElementsByName(w).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&v){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&v){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&v)return t.getElementsByClassName(e)},g=[],m=[],(n.qsa=J.test(p.querySelectorAll))&&(ce((function(e){h.appendChild(e).innerHTML="
    ",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+I+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+I+"*(?:value|"+j+")"),e.querySelectorAll("[id~="+w+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+w+"+*").length||m.push(".#.+[+~]")})),ce((function(e){e.innerHTML="";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+I+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&m.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")}))),(n.matchesSelector=J.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),g.push("!=",W)})),m=m.length&&new RegExp(m.join("|")),g=g.length&&new RegExp(g.join("|")),t=J.test(h.compareDocumentPosition),b=t||J.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},O=t?function(e,t){if(e===t)return d=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===p||e.ownerDocument===x&&b(x,e)?-1:t===p||t.ownerDocument===x&&b(x,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===p?-1:t===p?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===x?-1:s[r]===x?1:0},p):p},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&f(e),n.matchesSelector&&v&&!A[t+" "]&&(!g||!g.test(t))&&(!m||!m.test(t)))try{var r=y.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return se(t,p,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!==p&&f(e),b(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==p&&f(e);var i=r.attrHandle[t.toLowerCase()],o=i&&z.call(r.attrHandle,t.toLowerCase())?i(e,t,!v):void 0;return void 0!==o?o:n.attributes||!v?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(d=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(O),d){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=se.selectors={cacheLength:50,createPseudo:le,match:Y,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Y.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=k[e+" "];return t||(t=new RegExp("(^|"+I+")"+e+"("+I+"|$)"))&&k(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(H," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,d,f,p,h,v=o!==a?"nextSibling":"previousSibling",m=t.parentNode,g=s&&t.nodeName.toLowerCase(),y=!u&&!s,b=!1;if(m){if(o){for(;v;){for(f=t;f=f[v];)if(s?f.nodeName.toLowerCase()===g:1===f.nodeType)return!1;h=v="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&y){for(b=(p=(l=(c=(d=(f=m)[w]||(f[w]={}))[f.uniqueID]||(d[f.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],f=p&&m.childNodes[p];f=++p&&f&&f[v]||(b=p=0)||h.pop();)if(1===f.nodeType&&++b&&f===t){c[e]=[T,p,b];break}}else if(y&&(b=p=(l=(c=(d=(f=t)[w]||(f[w]={}))[f.uniqueID]||(d[f.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===b)for(;(f=++p&&f&&f[v]||(b=p=0)||h.pop())&&((s?f.nodeName.toLowerCase()!==g:1!==f.nodeType)||!++b||(y&&((c=(d=f[w]||(f[w]={}))[f.uniqueID]||(d[f.uniqueID]={}))[e]=[T,b]),f!==t)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return i[w]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=P(e,o[a])]=!(n[r]=o[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:le((function(e){var t=[],n=[],r=s(e.replace(F,"$1"));return r[w]?le((function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return se(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:le((function(e){return Z.test(e||"")||se.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=v?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ve(!1),disabled:ve(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:me((function(){return[0]})),last:me((function(e,t){return[t-1]})),eq:me((function(e,t,n){return[n<0?n+t:n]})),even:me((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:me((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1&&(o[l]=!(a[l]=d))}}else g=Te(g===a?g.splice(h,g.length):g),i?i(null,a,g,u):L.apply(a,g)}))}function ke(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=we((function(e){return e===t}),s,!0),d=we((function(e){return P(t,e)>-1}),s,!0),f=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):d(e,n,r));return t=null,i}];u1&&xe(f),u>1&&be(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(F,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var d,h,m,g=0,y="0",b=o&&[],w=[],x=l,_=o||i&&r.find.TAG("*",c),k=T+=null==x?1:Math.random()||.1,C=_.length;for(c&&(l=a===p||a||c);y!==C&&null!=(d=_[y]);y++){if(i&&d){for(h=0,a||d.ownerDocument===p||(f(d),s=!v);m=e[h++];)if(m(d,a||p,s)){u.push(d);break}c&&(T=k)}n&&((d=!m&&d)&&g--,o&&b.push(d))}if(g+=y,n&&y!==g){for(h=0;m=t[h++];)m(b,w,a,s);if(o){if(g>0)for(;y--;)b[y]||w[y]||(w[y]=E.call(u));w=Te(w)}L.apply(u,w),c&&!o&&w.length>0&&g+t.length>1&&se.uniqueSort(u)}return c&&(T=k,l=x),b};return n?le(o):o}(o,i))).selector=e}return s},u=se.select=function(e,t,n,i){var o,u,l,c,d,f="function"==typeof e&&e,p=!i&&a(e=f.selector||e);if(n=n||[],1===p.length){if((u=p[0]=p[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&v&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;f&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=Y.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((d=r.find[c])&&(i=d(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&be(u)))return L.apply(n,i),n;break}}return(f||s(e,p))(i,t,!v,n,!t||ee.test(e)&&ge(t.parentNode)||t),n},n.sortStable=w.split("").sort(O).join("")===w,n.detectDuplicates=!!d,f(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))})),ce((function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")}))||de("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||de("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute("disabled")}))||de(j,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(n);_.find=S,_.expr=S.selectors,_.expr[":"]=_.expr.pseudos,_.uniqueSort=_.unique=S.uniqueSort,_.text=S.getText,_.isXMLDoc=S.isXML,_.contains=S.contains,_.escapeSelector=S.escape;var A=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&_(e).is(n))break;r.push(e)}return r},O=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},z=_.expr.match.needsContext;function $(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var E=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,t,n){return y(t)?_.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?_.grep(e,(function(e){return e===t!==n})):"string"!=typeof t?_.grep(e,(function(e){return d.call(t,e)>-1!==n})):_.filter(t,e,n)}_.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?_.find.matchesSelector(r,e)?[r]:[]:_.find.matches(e,_.grep(t,(function(e){return 1===e.nodeType})))},_.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(_(e).filter((function(){for(t=0;t1?_.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&z.test(e)?_(e):e||[],!1).length}});var L,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(_.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:N.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof _?t[0]:t,_.merge(this,_.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:a,!0)),E.test(r[1])&&_.isPlainObject(t))for(r in t)y(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=a.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(_):_.makeArray(e,this)}).prototype=_.fn,L=_(a);var P=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function I(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}_.fn.extend({has:function(e){var t=_(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&_.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?_.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?d.call(_(e),this[0]):d.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(_.uniqueSort(_.merge(this.get(),_(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),_.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return A(e,"parentNode")},parentsUntil:function(e,t,n){return A(e,"parentNode",n)},next:function(e){return I(e,"nextSibling")},prev:function(e){return I(e,"previousSibling")},nextAll:function(e){return A(e,"nextSibling")},prevAll:function(e){return A(e,"previousSibling")},nextUntil:function(e,t,n){return A(e,"nextSibling",n)},prevUntil:function(e,t,n){return A(e,"previousSibling",n)},siblings:function(e){return O((e.parentNode||{}).firstChild,e)},children:function(e){return O(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:($(e,"template")&&(e=e.content||e),_.merge([],e.childNodes))}},(function(e,t){_.fn[e]=function(n,r){var i=_.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=_.filter(r,i)),this.length>1&&(j[e]||_.uniqueSort(i),P.test(e)&&i.reverse()),this.pushStack(i)}}));var M=/[^\x20\t\r\n\f]+/g;function R(e){return e}function W(e){throw e}function H(e,t,n,r){var i;try{e&&y(i=e.promise)?i.call(e).done(t).fail(n):e&&y(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}_.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return _.each(e.match(M)||[],(function(e,n){t[n]=!0})),t}(e):_.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?_.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},_.extend({Deferred:function(e){var t=[["notify","progress",_.Callbacks("memory"),_.Callbacks("memory"),2],["resolve","done",_.Callbacks("once memory"),_.Callbacks("once memory"),0,"resolved"],["reject","fail",_.Callbacks("once memory"),_.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return _.Deferred((function(n){_.each(t,(function(t,r){var i=y(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&y(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(e,r,i){var o=0;function a(e,t,r,i){return function(){var s=this,u=arguments,l=function(){var n,l;if(!(e=o&&(r!==W&&(s=void 0,u=[n]),t.rejectWith(s,u))}};e?c():(_.Deferred.getStackHook&&(c.stackTrace=_.Deferred.getStackHook()),n.setTimeout(c))}}return _.Deferred((function(n){t[0][3].add(a(0,n,y(i)?i:R,n.notifyWith)),t[1][3].add(a(0,n,y(e)?e:R)),t[2][3].add(a(0,n,y(r)?r:W))})).promise()},promise:function(e){return null!=e?_.extend(e,i):i}},o={};return _.each(t,(function(e,n){var a=n[2],s=n[5];i[n[1]]=a.add,s&&a.add((function(){r=s}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),o[n[0]]=function(){return o[n[0]+"With"](this===o?void 0:this,arguments),this},o[n[0]+"With"]=a.fireWith})),i.promise(o),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=u.call(arguments),o=_.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?u.call(arguments):n,--t||o.resolveWith(r,i)}};if(t<=1&&(H(e,o.done(a(n)).resolve,o.reject,!t),"pending"===o.state()||y(i[n]&&i[n].then)))return o.then();for(;n--;)H(i[n],a(n),o.reject);return o.promise()}});var F=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;_.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&F.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},_.readyException=function(e){n.setTimeout((function(){throw e}))};var q=_.Deferred();function B(){a.removeEventListener("DOMContentLoaded",B),n.removeEventListener("load",B),_.ready()}_.fn.ready=function(e){return q.then(e).catch((function(e){_.readyException(e)})),this},_.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--_.readyWait:_.isReady)||(_.isReady=!0,!0!==e&&--_.readyWait>0||q.resolveWith(a,[_]))}}),_.ready.then=q.then,"complete"===a.readyState||"loading"!==a.readyState&&!a.documentElement.doScroll?n.setTimeout(_.ready):(a.addEventListener("DOMContentLoaded",B),n.addEventListener("load",B));var U=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===T(n))for(s in i=!0,n)U(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,y(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(_(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each((function(){K.remove(this,e)}))}}),_.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,_.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=_.queue(e,t),r=n.length,i=n.shift(),o=_._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,(function(){_.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:_.Callbacks("once memory").add((function(){J.remove(e,[t+"queue",n])}))})}}),_.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,ge=/^$|^module$|\/(?:java|ecma)script/i,ye={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function be(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&$(e,t)?_.merge([e],n):n}function we(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=se(o),a=be(d.appendChild(o),"script"),l&&we(a),n)for(c=0;o=a[c++];)ge.test(o.type||"")&&n.push(o);return d}xe=a.createDocumentFragment().appendChild(a.createElement("div")),(Te=a.createElement("input")).setAttribute("type","radio"),Te.setAttribute("checked","checked"),Te.setAttribute("name","t"),xe.appendChild(Te),g.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",g.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue;var Ce=/^key/,Se=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ae=/^([^.]*)(?:\.(.+)|)/;function Oe(){return!0}function ze(){return!1}function $e(e,t){return e===function(){try{return a.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ze;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return _().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=_.guid++)),e.each((function(){_.event.add(this,t,i,r,n)}))}function De(e,t,n){n?(J.set(e,t,!1),_.event.add(e,t,{namespace:!1,handler:function(e){var r,i,o=J.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(_.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=u.call(arguments),J.set(this,t,o),r=n(this,t),this[t](),o!==(i=J.get(this,t))||r?J.set(this,t,!1):i={},o!==i)return e.stopImmediatePropagation(),e.preventDefault(),i.value}else o.length&&(J.set(this,t,{value:_.event.trigger(_.extend(o[0],_.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===J.get(e,t)&&_.event.add(e,t,Oe)}_.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,d,f,p,h,v,m=J.get(e);if(m)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&_.find.matchesSelector(ae,i),n.guid||(n.guid=_.guid++),(u=m.events)||(u=m.events={}),(a=m.handle)||(a=m.handle=function(t){return void 0!==_&&_.event.triggered!==t.type?_.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;l--;)p=v=(s=Ae.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(d=_.event.special[p]||{},p=(i?d.delegateType:d.bindType)||p,d=_.event.special[p]||{},c=_.extend({type:p,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&_.expr.match.needsContext.test(i),namespace:h.join(".")},o),(f=u[p])||((f=u[p]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(p,a)),d.add&&(d.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?f.splice(f.delegateCount++,0,c):f.push(c),_.event.global[p]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,d,f,p,h,v,m=J.hasData(e)&&J.get(e);if(m&&(u=m.events)){for(l=(t=(t||"").match(M)||[""]).length;l--;)if(p=v=(s=Ae.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){for(d=_.event.special[p]||{},f=u[p=(r?d.delegateType:d.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=f.length;o--;)c=f[o],!i&&v!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,d.remove&&d.remove.call(e,c));a&&!f.length&&(d.teardown&&!1!==d.teardown.call(e,h,m.handle)||_.removeEvent(e,p,m.handle),delete u[p])}else for(p in u)_.event.remove(e,p+t[l],n,r,!0);_.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=_.event.fix(e),u=new Array(arguments.length),l=(J.get(this,"events")||{})[s.type]||[],c=_.event.special[s.type]||{};for(u[0]=s,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:_.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ne=/\s*$/g;function Ie(e,t){return $(e,"table")&&$(11!==t.nodeType?t:t.firstChild,"tr")&&_(e).children("tbody")[0]||e}function Me(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function We(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n1&&"string"==typeof h&&!g.checkClone&&Pe.test(h))return e.each((function(i){var o=e.eq(i);v&&(t[0]=h.call(this,i,o.html())),Fe(o,t,n,r)}));if(f&&(o=(i=ke(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=_.map(be(i,"script"),Me)).length;d")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=se(e);if(!(g.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||_.isXMLDoc(e)))for(a=be(s),r=0,i=(o=be(e)).length;r0&&we(a,!u&&be(e,"script")),s},cleanData:function(e){for(var t,n,r,i=_.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?_.event.remove(n,r):_.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),_.fn.extend({detach:function(e){return qe(this,e,!0)},remove:function(e){return qe(this,e)},text:function(e){return U(this,(function(e){return void 0===e?_.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Fe(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ie(this,e).appendChild(e)}))},prepend:function(){return Fe(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ie(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Fe(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Fe(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(_.cleanData(be(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return _.clone(this,e,t)}))},html:function(e){return U(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ye[(me.exec(e)||["",""])[1].toLowerCase()]){e=_.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function ot(e,t,n){var r=Ue(e),i=(!g.boxSizingReliable()||n)&&"border-box"===_.css(e,"boxSizing",!1,r),o=i,a=Ze(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Be.test(a)){if(!n)return a;a="auto"}return(!g.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===_.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===_.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?"border":"content"),o,r,a)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}_.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ze(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=et.test(t),l=e.style;if(u||(t=Je(s)),a=_.cssHooks[t]||_.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=de(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(_.cssNumber[s]?"":"px")),g.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return et.test(t)||(t=Je(s)),(a=_.cssHooks[t]||_.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ze(e,t,r)),"normal"===i&&t in nt&&(i=nt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),_.each(["height","width"],(function(e,t){_.cssHooks[t]={get:function(e,n,r){if(n)return!Ke.test(_.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,t,r):ce(e,tt,(function(){return ot(e,t,r)}))},set:function(e,n,r){var i,o=Ue(e),a=!g.scrollboxSize()&&"absolute"===o.position,s=(a||r)&&"border-box"===_.css(e,"boxSizing",!1,o),u=r?it(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-it(e,t,"border",!1,o)-.5)),u&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=_.css(e,t)),rt(0,n,u)}}})),_.cssHooks.marginLeft=Ye(g.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Ze(e,"marginLeft"))||e.getBoundingClientRect().left-ce(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),_.each({margin:"",padding:"",border:"Width"},(function(e,t){_.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(_.cssHooks[e+t].set=rt)})),_.fn.extend({css:function(e,t){return U(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ue(e),i=t.length;a1)}}),_.Tween=at,at.prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||_.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(_.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=_.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}},at.prototype.init.prototype=at.prototype,at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=_.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){_.fx.step[e.prop]?_.fx.step[e.prop](e):1!==e.elem.nodeType||!_.cssHooks[e.prop]&&null==e.elem.style[Je(e.prop)]?e.elem[e.prop]=e.now:_.style(e.elem,e.prop,e.now+e.unit)}}},at.propHooks.scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},_.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},_.fx=at.prototype.init,_.fx.step={};var st,ut,lt=/^(?:toggle|show|hide)$/,ct=/queueHooks$/;function dt(){ut&&(!1===a.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(dt):n.setTimeout(dt,_.fx.interval),_.fx.tick())}function ft(){return n.setTimeout((function(){st=void 0})),st=Date.now()}function pt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ht(e,t,n){for(var r,i=(vt.tweeners[t]||[]).concat(vt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){_.removeAttr(this,e)}))}}),_.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?_.prop(e,t,n):(1===o&&_.isXMLDoc(e)||(i=_.attrHooks[t.toLowerCase()]||(_.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void _.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=_.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!g.radioValue&&"radio"===t&&$(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?_.removeAttr(e,n):e.setAttribute(n,n),n}},_.each(_.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=gt[t]||_.find.attr;gt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=gt[a],gt[a]=i,i=null!=n(e,t,r)?a:null,gt[a]=o),i}}));var yt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;function wt(e){return(e.match(M)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function Tt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(M)||[]}_.fn.extend({prop:function(e,t){return U(this,_.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[_.propFix[e]||e]}))}}),_.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&_.isXMLDoc(e)||(t=_.propFix[t]||t,i=_.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=_.find.attr(e,"tabindex");return t?parseInt(t,10):yt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(_.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),_.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){_.propFix[this.toLowerCase()]=this})),_.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(y(e))return this.each((function(t){_(this).addClass(e.call(this,t,xt(this)))}));if((t=Tt(e)).length)for(;n=this[u++];)if(i=xt(n),r=1===n.nodeType&&" "+wt(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=wt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(y(e))return this.each((function(t){_(this).removeClass(e.call(this,t,xt(this)))}));if(!arguments.length)return this.attr("class","");if((t=Tt(e)).length)for(;n=this[u++];)if(i=xt(n),r=1===n.nodeType&&" "+wt(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=wt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):y(e)?this.each((function(n){_(this).toggleClass(e.call(this,n,xt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=_(this),a=Tt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=xt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+wt(xt(n))+" ").indexOf(t)>-1)return!0;return!1}});var _t=/\r/g;_.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=y(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,_(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=_.map(i,(function(e){return null==e?"":e+""}))),(t=_.valHooks[this.type]||_.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))}))):i?(t=_.valHooks[i.type]||_.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(_t,""):null==n?"":n:void 0}}),_.extend({valHooks:{option:{get:function(e){var t=_.find.attr(e,"value");return null!=t?t:wt(_.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),_.each(["radio","checkbox"],(function(){_.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=_.inArray(_(e).val(),t)>-1}},g.checkOn||(_.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),g.focusin="onfocusin"in n;var kt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};_.extend(_.event,{trigger:function(e,t,r,i){var o,s,u,l,c,d,f,p,v=[r||a],m=h.call(e,"type")?e.type:e,g=h.call(e,"namespace")?e.namespace.split("."):[];if(s=p=u=r=r||a,3!==r.nodeType&&8!==r.nodeType&&!kt.test(m+_.event.triggered)&&(m.indexOf(".")>-1&&(g=m.split("."),m=g.shift(),g.sort()),c=m.indexOf(":")<0&&"on"+m,(e=e[_.expando]?e:new _.Event(m,"object"==typeof e&&e)).isTrigger=i?2:3,e.namespace=g.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:_.makeArray(t,[e]),f=_.event.special[m]||{},i||!f.trigger||!1!==f.trigger.apply(r,t))){if(!i&&!f.noBubble&&!b(r)){for(l=f.delegateType||m,kt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(r.ownerDocument||a)&&v.push(u.defaultView||u.parentWindow||n)}for(o=0;(s=v[o++])&&!e.isPropagationStopped();)p=s,e.type=o>1?l:f.bindType||m,(d=(J.get(s,"events")||{})[e.type]&&J.get(s,"handle"))&&d.apply(s,t),(d=c&&s[c])&&d.apply&&G(s)&&(e.result=d.apply(s,t),!1===e.result&&e.preventDefault());return e.type=m,i||e.isDefaultPrevented()||f._default&&!1!==f._default.apply(v.pop(),t)||!G(r)||c&&y(r[m])&&!b(r)&&((u=r[c])&&(r[c]=null),_.event.triggered=m,e.isPropagationStopped()&&p.addEventListener(m,Ct),r[m](),e.isPropagationStopped()&&p.removeEventListener(m,Ct),_.event.triggered=void 0,u&&(r[c]=u)),e.result}},simulate:function(e,t,n){var r=_.extend(new _.Event,n,{type:e,isSimulated:!0});_.event.trigger(r,null,t)}}),_.fn.extend({trigger:function(e,t){return this.each((function(){_.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return _.event.trigger(e,t,n,!0)}}),g.focusin||_.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){_.event.simulate(t,e.target,_.event.fix(e))};_.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}}));var St=n.location,At=Date.now(),Ot=/\?/;_.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||_.error("Invalid XML: "+e),t};var zt=/\[\]$/,$t=/\r?\n/g,Et=/^(?:submit|button|image|reset|file)$/i,Dt=/^(?:input|select|textarea|keygen)/i;function Lt(e,t,n,r){var i;if(Array.isArray(t))_.each(t,(function(t,i){n||zt.test(e)?r(e,i):Lt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)}));else if(n||"object"!==T(t))r(e,t);else for(i in t)Lt(e+"["+i+"]",t[i],n,r)}_.param=function(e,t){var n,r=[],i=function(e,t){var n=y(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!_.isPlainObject(e))_.each(e,(function(){i(this.name,this.value)}));else for(n in e)Lt(n,e[n],t,i);return r.join("&")},_.fn.extend({serialize:function(){return _.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=_.prop(this,"elements");return e?_.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!_(this).is(":disabled")&&Dt.test(this.nodeName)&&!Et.test(e)&&(this.checked||!ve.test(e))})).map((function(e,t){var n=_(this).val();return null==n?null:Array.isArray(n)?_.map(n,(function(e){return{name:t.name,value:e.replace($t,"\r\n")}})):{name:t.name,value:n.replace($t,"\r\n")}})).get()}});var Nt=/%20/g,Pt=/#.*$/,jt=/([?&])_=[^&]*/,It=/^(.*?):[ \t]*([^\r\n]*)$/gm,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,Wt={},Ht={},Ft="*/".concat("*"),qt=a.createElement("a");function Bt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(y(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ut(e,t,n,r){var i={},o=e===Ht;function a(s){var u;return i[s]=!0,_.each(e[s]||[],(function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function Vt(e,t){var n,r,i=_.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&_.extend(!0,e,r),e}qt.href=St.href,_.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:St.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(St.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ft,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":_.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Vt(Vt(e,_.ajaxSettings),t):Vt(_.ajaxSettings,e)},ajaxPrefilter:Bt(Wt),ajaxTransport:Bt(Ht),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,i,o,s,u,l,c,d,f,p,h=_.ajaxSetup({},t),v=h.context||h,m=h.context&&(v.nodeType||v.jquery)?_(v):_.event,g=_.Deferred(),y=_.Callbacks("once memory"),b=h.statusCode||{},w={},x={},T="canceled",k={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=It.exec(o);)s[t[1].toLowerCase()+" "]=(s[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=s[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return c?o:null},setRequestHeader:function(e,t){return null==c&&(e=x[e.toLowerCase()]=x[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)k.always(e[k.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||T;return r&&r.abort(t),C(0,t),this}};if(g.promise(k),h.url=((e||h.url||St.href)+"").replace(Rt,St.protocol+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=a.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=qt.protocol+"//"+qt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=_.param(h.data,h.traditional)),Ut(Wt,h,t,k),c)return k;for(f in(d=_.event&&h.global)&&0==_.active++&&_.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),i=h.url.replace(Pt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(Nt,"+")):(p=h.url.slice(i.length),h.data&&(h.processData||"string"==typeof h.data)&&(i+=(Ot.test(i)?"&":"?")+h.data,delete h.data),!1===h.cache&&(i=i.replace(jt,"$1"),p=(Ot.test(i)?"&":"?")+"_="+At+++p),h.url=i+p),h.ifModified&&(_.lastModified[i]&&k.setRequestHeader("If-Modified-Since",_.lastModified[i]),_.etag[i]&&k.setRequestHeader("If-None-Match",_.etag[i])),(h.data&&h.hasContent&&!1!==h.contentType||t.contentType)&&k.setRequestHeader("Content-Type",h.contentType),k.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ft+"; q=0.01":""):h.accepts["*"]),h.headers)k.setRequestHeader(f,h.headers[f]);if(h.beforeSend&&(!1===h.beforeSend.call(v,k,h)||c))return k.abort();if(T="abort",y.add(h.complete),k.done(h.success),k.fail(h.error),r=Ut(Ht,h,t,k)){if(k.readyState=1,d&&m.trigger("ajaxSend",[k,h]),c)return k;h.async&&h.timeout>0&&(u=n.setTimeout((function(){k.abort("timeout")}),h.timeout));try{c=!1,r.send(w,C)}catch(e){if(c)throw e;C(-1,e)}}else C(-1,"No Transport");function C(e,t,a,s){var l,f,p,w,x,T=t;c||(c=!0,u&&n.clearTimeout(u),r=void 0,o=s||"",k.readyState=e>0?4:0,l=e>=200&&e<300||304===e,a&&(w=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(h,k,a)),w=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(h,w,k,l),l?(h.ifModified&&((x=k.getResponseHeader("Last-Modified"))&&(_.lastModified[i]=x),(x=k.getResponseHeader("etag"))&&(_.etag[i]=x)),204===e||"HEAD"===h.type?T="nocontent":304===e?T="notmodified":(T=w.state,f=w.data,l=!(p=w.error))):(p=T,!e&&T||(T="error",e<0&&(e=0))),k.status=e,k.statusText=(t||T)+"",l?g.resolveWith(v,[f,T,k]):g.rejectWith(v,[k,T,p]),k.statusCode(b),b=void 0,d&&m.trigger(l?"ajaxSuccess":"ajaxError",[k,h,l?f:p]),y.fireWith(v,[k,T]),d&&(m.trigger("ajaxComplete",[k,h]),--_.active||_.event.trigger("ajaxStop")))}return k},getJSON:function(e,t,n){return _.get(e,t,n,"json")},getScript:function(e,t){return _.get(e,void 0,t,"script")}}),_.each(["get","post"],(function(e,t){_[t]=function(e,n,r,i){return y(n)&&(i=i||r,r=n,n=void 0),_.ajax(_.extend({url:e,type:t,dataType:i,data:n,success:r},_.isPlainObject(e)&&e))}})),_._evalUrl=function(e,t){return _.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){_.globalEval(e,t)}})},_.fn.extend({wrapAll:function(e){var t;return this[0]&&(y(e)&&(e=e.call(this[0])),t=_(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return y(e)?this.each((function(t){_(this).wrapInner(e.call(this,t))})):this.each((function(){var t=_(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=y(e);return this.each((function(n){_(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){_(this).replaceWith(this.childNodes)})),this}}),_.expr.pseudos.hidden=function(e){return!_.expr.pseudos.visible(e)},_.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},_.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Zt={0:200,1223:204},Yt=_.ajaxSettings.xhr();g.cors=!!Yt&&"withCredentials"in Yt,g.ajax=Yt=!!Yt,_.ajaxTransport((function(e){var t,r;if(g.cors||Yt&&!e.crossDomain)return{send:function(i,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);t=function(e){return function(){t&&(t=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Zt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),r=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout((function(){t&&r()}))},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),_.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),_.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return _.globalEval(e),e}}}),_.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),_.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=_(" + \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/assets/js/lang/locales.js b/packages/Webkul/Shop/src/Resources/assets/js/lang/locales.js new file mode 100644 index 000000000..d01d696c7 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/assets/js/lang/locales.js @@ -0,0 +1,28 @@ +export const messages = { + ar: { + required : (field) => 'حقل' + field + ' مطلوب', + alpha : (field) => field + ' يجب ان يحتوي على حروف فقط', + alpha_num : (field) => field + ' قد يحتوي فقط على حروف وارقام', + min : (field, length) => 'الحقل ' + field + ' يجب ان يحتوي على ' + length + ' حروف على الأقل', + numeric : (field) => field + ' يمكن ان يحتوي فقط على ارقام', + oneOf : (field) => 'الحقل ' + field + 'يجب ان يكون قيمة صحيحة', + regex : (field) => 'الحقل' + field+ ' غير صحيح', + required_if : (field) => 'حقل' + field + ' مطلوب', + size : (field, size) => field + ' يجب ان يكون اقل من ' + size + ' كيلوبايت', + min_value : (field, min) => 'قيمة الحقل' + field + ' يجب ان تكون اكبر من ' + min + ' او تساويها', + alpha_spaces : (field) => field + ' قد يحتوي فقط على حروف ومسافات', + between : (field, min, max) => 'قيمة ' +field+ ' يجب ان تكون ما بين ' + min + ' و ' + max, + confirmed : (field) => field + ' لا يماثل التأكيد', + digits : (field, length) => field + ' يجب ان تحتوي فقط على ارقام والا يزيد عددها عن ' + length + ' رقم', + dimensions : (field, width, height) => field + ' يجب ان تكون بمقاس ' + width + ' بكسل في ' + height + ' بكسل', + email : (field) => field + ' يجب ان يكون بريدا اليكتروني صحيح', + excluded : (field) => 'الحقل' + field +'غير صحيح', + ext : (field) =>'نوع مل'+ field + 'غير صحيح', + image : (field) => field + ' يجب ان تكون صورة', + integer : (field) => 'الحقل ' +field + ' يجب ان يكون عدداً صحيحاً', + length : (field, length) => 'حقل'+ field + ' يجب الا يزيد عن ' + length, + max_value : (field, min) => 'قيمة الحقل '+ field + ' يجب ان تكون اصغر من ' + min + ' او تساويها', + max : (field, length) => 'الحقل' + field + 'يجب ان يحتوي على ' + length + ' حروف على الأكثر', + mimes : (field) => 'نوع ملف' + field + 'غير صحيح' + } +} diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/_animations.scss b/packages/Webkul/Shop/src/Resources/assets/sass/_animations.scss new file mode 100644 index 000000000..74fd56283 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/assets/sass/_animations.scss @@ -0,0 +1,4 @@ +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/_mixins.scss b/packages/Webkul/Shop/src/Resources/assets/sass/_mixins.scss new file mode 100755 index 000000000..e69de29bb diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/_variables.scss b/packages/Webkul/Shop/src/Resources/assets/sass/_variables.scss new file mode 100755 index 000000000..29d95c0ec --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/assets/sass/_variables.scss @@ -0,0 +1,38 @@ +@import url("https://fonts.googleapis.com/css?family=Montserrat:400,500"); + +//shop variables +$brand-color: #0031F0; +$background-color: #F2F2F2; +$border-color: #C7C7C7; +$font-dark: #242424; +$font-light: #A5A5A5; +$link-color: #2650EF; +$black: #121212; +$disc-price: #FF6472; +$radio-button: #FF6472; +$radio-button-disabled: rgba(255, 100, 113, 0.400); +$danger-color: rgb(251, 57, 73); +$disc-price-pro: #A5A5A5; +$other-font-color: #5E5E5E; +$title-color: #8E8E8E; +$address-card-border-color: #E8E8E8; +$bold-color: #3A3A3A; +$sticker-color: #2ED04C; +$stock-color: #4CAF50; +$rating-color: #FC6868; +$star-color: #d4d4d4; +$error-color: #ff5656; +$line-bar-color: #D8D8D8; +$btn-background-color: #fff; +$info-color: #204d74; +$ltgray: lightgray; +$listcolor: #333333; +$spnr-color: #bababa; +$shadow-color: #ccc; +$shadow-color1: #cccccc; +$outline-hvr: #eaeaec; +$review-details: #5e5e5e; +//shop variables ends here + +// +$font-montserrat: "Montserrat", sans-serif; \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/app.scss b/packages/Webkul/Shop/src/Resources/assets/sass/app.scss new file mode 100755 index 000000000..4d79f6143 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/assets/sass/app.scss @@ -0,0 +1,4430 @@ +@import "variables"; +@import "icons"; +@import "mixins"; +@import "animations"; + +//override UA +body { + margin: 0; + padding: 0; + font-weight: 500; + max-width: 100%; + width: auto; + color: $font-dark; + font-size: 16px; +} + +* { + font-family: $font-montserrat; +} + +*::-webkit-input-placeholder { + font-family: $font-montserrat; +} + +*::-moz-input-placeholder { + font-family: $font-montserrat; +} + +textarea { + resize: none; +} + +input { + font-family: $font-montserrat; +} + +.btn { + border-radius: 0px !important; +} + +//pagination +.pagination.shop{ + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; +} + +@media only screen and (max-width: 770px) { + .pagination.shop { + justify-content: space-between; + + .page-item { + display: none; + + &.previous, + &.next { + display: block; + } + } + } +} + +//components +.bold { + font-weight: bold; + color: $bold-color; +} + +/* The container */ +.radio-container { + display: block; + position: relative; + padding-left: 35px; + margin-bottom: 12px; + cursor: pointer; + font-size: 16px; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + + input { + position: absolute; + opacity: 0; + cursor: pointer; + top: 0px; + left: 0px; + } + + /* Create a custom radio button */ + .checkmark { + position: absolute; + top: 0; + left: 0; + height: 16px; + width: 16px; + background-color: white; + border: 2px solid $disc-price; + border-radius: 50%; + } + + /* Create the indicator (the dot/circle - hidden when not checked) */ + .checkmark:after { + content: ""; + position: absolute; + display: none; + } + + .checkmark:after { + top: 2px; + left: 2px; + width: 8px; + height: 8px; + border-radius: 50%; + background: $disc-price; + } +} + +/* Show the indicator (dot/circle) when checked */ +.radio-container input:checked ~ .checkmark:after { + display: block; +} + +/* Show the indic */ +.radio-container input:disabled ~ .checkmark { + display: block; + border: 2px solid $radio-button-disabled; +} + +//CSS for loader +.cp-spinner { + width: 48px; + height: 48px; + display: inline-block; + box-sizing: border-box; +} + +//Spinner style +.cp-round:before { + border-radius: 50%; + content: " "; + width: 48px; + height: 48px; + display: inline-block; + box-sizing: border-box; + border-top: solid 6px $spnr-color; + border-right: solid 6px $spnr-color; + border-bottom: solid 6px $spnr-color; + border-left: solid 6px $spnr-color; + position: absolute; + top: 0; + left: 0; +} + +.cp-round:after { + border-radius: 50%; + content: " "; + width: 48px; + height: 48px; + display: inline-block; + box-sizing: border-box; + border-top: solid 6px $brand-color; + border-right: solid 6px transparent; + border-bottom: solid 6px transparent; + border-left: solid 6px transparent; + position: absolute; + top: 0; + left: 0; + animation: spin 1s ease-in-out infinite; +} + +.radio { + margin: 10px 0 0px 0px !important; +} + +.checkbox { + margin: 10px 0 0px 0px; + + .checkbox-view { + height: 16px !important; + width: 16px !important; + background-image: url("../images/checkbox.svg") !important; + } + + input:checked + .checkbox-view { + background-image: url("../images/checkbox-checked.svg") !important; + } +} + +.pull-right { + float:right; +} + +//wishlist icon hover properties +.add-to-wishlist { + .wishlist-icon { + &:hover { + background-image: url('../images/wishlist-added.svg'); + } + } +} + +.add-to-wishlist.already { + pointer-events: none; + + .wishlist-icon { + background-image: url('../images/wishlist-added.svg') !important; + } +} + +//product page price styles +.product-price { + margin-bottom: 14px; + width: 100%; + font-weight: 600; + word-break: break-all; + + .price-label { + font-size: 14px; + font-weight: 400; + margin-right: 5px; + } + + .regular-price { + color: $font-light; + text-decoration: line-through; + margin-right: 10px; + } + + .special-price { + color: $disc-price; + } +} + +//horizontal rule +.horizontal-rule { + display: block; + width: 100%; + height: 1px; + background: $border-color; +} + +//Customer account section header +.account-head { + .account-heading { + font-size: 28px; + color: $font-dark; + text-transform: capitalize; + text-align: left; + } + + .account-action { + font-size: 17px; + margin-top: 1%; + color: $brand-color; + float: right; + } + + .horizontal-rule { + margin-top: 1.1%; + width: 100%; + height: 1px; + vertical-align: middle; + background: $border-color; + } +} + +//denotes the item card that are used in account pages +.account-item-card { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + width: 100%; + height: 125px; + + .media-info { + display: flex; + flex-direction: row; + + .media { + height: 125px; + width: 110px; + } + + .info { + margin-left: 20px; + display: flex; + flex-direction: column; + justify-content: space-evenly; + + .stars .icon { + height: 16px; + width: 16px; + } + } + } + + .operations { + height: 120px; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + + a { + width: 100%; + span { + float: right; + } + } + } +} + +//Account items list +.account-items-list { + display: block; + width: 100%; + + .grid-container { + margin-top: 40px; + } +} +//no search results +.search-result-status { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.grid-container { + margin-top: 20px; +} + +//main store front layouting +.main-container-wrapper { + max-width: 1300px; + width: auto; + padding-left: 15px; + padding-right: 15px; + margin-left: auto; + margin-right: auto; + + .content-container { + display: block; + margin-bottom: 40px; + } + + // product card, requires no changes for responsiveness. + .product-grid-4 { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(235px, 1fr)); + grid-auto-rows: auto; + grid-column-gap: 30px; + grid-row-gap: 15px; + justify-items: center; + } + + .product-grid-3 { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(235px, 1fr)); + grid-gap: 27px; + grid-auto-rows: auto; + justify-items: center; + } + + .product-card { + position: relative; + padding: 15px; + + .product-image { + max-height: 350px; + max-width: 280px; + margin-bottom: 10px; + background: $background-color; + + img { + display: block; + height: 100%; + } + } + + .product-name { + margin-bottom: 14px; + width: 100%; + color: $font-dark; + + a { + color: $font-dark; + } + } + + .product-description { + display: none; + } + + .product-ratings { + width: 100%; + + .icon { + width: 16px; + height: 16px; + } + } + + .cart-wish-wrap { + display: inline-flex; + justify-content: flex-start; + align-items: center; + height: 40px; + + .addtocart { + margin-right: 10px; + text-transform: uppercase; + text-align: left; + box-shadow: 1px 1px 0px $shadow-color; + } + + .add-to-wishlist { + margin-top: 5px; + background: transparent; + border: 0; + cursor: pointer; + padding: 0; + } + } + + .sticker { + border-bottom-right-radius: 15px; + position: absolute; + top: 15px; + left: 15px; + text-transform: uppercase; + padding: 4px 13px; + font-size: 14px; + color: $btn-background-color; + box-shadow: 1px 1px 1px $shadow-color1; + font-weight: 500; + + &.sale { + background: $disc-price; + } + + &.new { + background: $sticker-color; + } + } + } + + .product-card:hover { + box-shadow: 0 1px 2px rgba(0,0,0,0.05); + -webkit-box-shadow: 0px 2px 16px 4px rgba(40, 44, 63, 0.07); + -moz-box-shadow: 0px 2px 16px 4px rgba(40, 44, 63, 0.07); + box-shadow: 0px 2px 16px 4px rgba(40, 44, 63, 0.07); + transition: .3s; + // outline: 1px solid $outline-hvr; + } + + @media only screen and (max-width: 580px) { + .main-container-wrapper { + padding: 0px; + } + } + //product components + @media only screen and (max-width: 551px) { + .product-grid-3 { + grid-template-columns: 48.5% 48.5%; + grid-column-gap: 20px; + } + } + + @media only screen and (max-width: 854px) { + .product-image { + img { + display: block; + width: 100%; + } + } + + .product-grid-4 { + grid-template-columns: 29.5% 29.5% 29.5%; + grid-column-gap: 35px; + } + + .product-card:hover { + padding: 5px; + } + } + + @media only screen and (max-width: 653px) { + .product-image { + img { + display: block; + width: 100%; + } + } + + .product-grid-4 { + grid-template-columns: 48.5% 48.5%; + grid-column-gap: 17px; + } + } + + @media only screen and (max-width: 425px) { + .product-card { + font-size: 90%; + + .product-image { + img { + display: block; + width: 100%; + } + } + + .btn.btn-md { + padding: 5px; + } + } + + .product-grid-4 { + grid-template-columns: 48.5% 48.5%; + grid-column-gap: 10px; + } + } + + .product-list { + min-height: 200px; + + .product-card { + width: 100%; + display: flex; + flex-direction: row; + align-items: center; + margin-bottom: 20px; + + .product-image { + float: left; + width: 30%; + height: 350px; + + img { + height: 100%; + width: 100%; + } + } + + .product-information { + float: right; + width: 70%; + padding-left: 30px; + } + + &:last-child { + margin-bottom: 0; + } + } + + &.empty { + h2 { + font-size: 20px; + } + } + } + + section.featured-products { + display: block; + margin-bottom: 5%; + + .featured-heading { + width: 100%; + text-align: center; + text-transform: uppercase; + font-size: 18px; + margin-bottom: 20px; + + .featured-separator { + color: $ltgray; + } + } + } + + section.news-update { + display: block; + box-sizing: border-box; + width: 100%; + margin-bottom: 5%; + + .news-update-grid { + display: grid; + grid-template-columns: 58.5% 40%; + grid-gap: 20px; + + .block1 { + display: block; + box-sizing: border-box; + + img { + display: flex; + height: 100%; + width: 100%; + } + } + + .block2 { + display: block; + box-sizing: border-box; + display: grid; + grid-template-rows: repeat(2, minmax(50%, 1fr)); + grid-row-gap: 20px; + + .sub-block1 { + display: block; + box-sizing: border-box; + + img { + width: 100%; + } + } + + .sub-block2 { + display: block; + box-sizing: border-box; + + img { + width: 100%; + } + } + } + } + } +} + +//slider styles +section.slider-block { + display: block; + margin-left: auto; + margin-right: auto; + margin-bottom: 5%; + + div.slider-content { + position: relative; + height: 500px; + margin-left: auto; + margin-right: auto; + + + ul.slider-images { + + .show-content { + display: none; + } + + li{ + position: absolute; + visibility: hidden; + } + + li.show { + display:block; + position: relative; + visibility: visible; + width: 100%; + animation-name: example; + animation-duration: 4s; + + .show-content { + display: flex; + position: absolute; + flex-direction: row; + justify-content: center; + align-items: center; + color: $font-dark; + height: 100%; + width: 100%; + top: 0px; + + // * { + // color: blue; + // font-size: 112px; + // } + } + } + + @keyframes example { + 0% {opacity: 0.1;} + 100% {opacity: 1;} + } + + li img { + max-height: 500px; + width: 100%; + } + } + + div.slider-control { + display: block; + cursor: pointer; + position: absolute; + user-select: none; + bottom: 2%; + right: 2%; + + .dark-left-icon { + background-color: $background-color; + height: 48px; + width: 48px; + max-height: 100%; + max-width: 100%; + } + + .light-right-icon { + background-color: $font-dark; + height: 48px; + width: 48px; + max-height: 100%; + max-width: 100%; + } + } + } +} + +//responsive css for slider +@media only screen and (max-width: 770px) { + section.slider-block { + div.slider-content { + div.slider-control { + display: flex; + justify-content:space-between; + bottom: 46%; + right: 0%; + width:100%; + } + } + } +} + +//header navigation +.header { + margin-top: 16px; + margin-bottom: 21px; + user-select: none; + + .header-top { + margin-bottom: 16px; + display: flex; + max-width: 100%; + width: auto; + margin-left: auto; + margin-right: auto; + align-items: center; + justify-content: space-between; + + div.left-content { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + + ul.logo-container { + margin-right: 12px; + + li { + display: flex; + + img { + max-width: 120px; + max-height: 40px; + } + } + } + + ul.search-container { + li.search-group { + display: inline-flex; + justify-content: center; + align-items: center; + + .search-field { + height: 38px; + border: 2px solid $border-color; + border-radius: 3px; + border-right: none; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + padding-left: 12px; + font-size: 14px; + } + + .search-icon-wrapper { + box-sizing: border-box; + height: 38px; + width: 38px; + border: 2px solid $border-color; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + + button { + background: $btn-background-color; + border: 0; + padding: 3px 5px; + } + } + } + } + } + + div.right-content { + .right-content-menu { + > li { + display: inline-block; + border-right: 2px solid $border-color; + padding: 0 15px; + min-height: 15px; + padding-top: 3px; + + &:first-child { + padding-left: 0; + } + + &:last-child { + border-right: 0; + padding-right: 0; + } + + .icon { + vertical-align: middle; + + &:not(.arrow-down-icon) { + margin-right: 5px; + } + } + + .arrow-down-icon { + width: 12px; + height: 6px; + } + } + + .cart-dropdown-container { + border-right: 0; + padding-right: 0; + } + + .cart-link { + pointer-events: none; + } + + ul.dropdown-list { + display: none; + margin-top: 14px; + + li { + border-right: none; + padding: 5px 10px 5px 10px; + display: block; + + a { + color: $listcolor; + } + } + } + + .currency { + position: absolute; + right: 0px; + width: 100px; + } + + .account { + position: absolute; + right: 0px; + + li { + padding: 20px !important; + + ul { + margin-top: 5px; + } + + ul > li { + padding: 5px 10px 5px 0px !important; + } + } + } + + .guest { + width: 300px; + + .btn.btn-sm { + padding: 9px 25px; + } + } + + .cart-dropdown-container { + .dropdown-list { + width: 387px; + } + + .dropdown-list .dropdown-container { + padding: 0; + + .dropdown-cart { + color: $font-dark; + } + + .dropdown-cart > .dropdown-header { + width: 100%; + padding: 8px 16px; + border-bottom: 1px solid $border-color; + } + + .dropdown-cart > .dropdown-header p { + display: inline; + line-height: 25px; + } + + .dropdown-cart > .dropdown-header i { + float: right; + height: 22px; + width: 22px; + } + + .dropdown-cart > .dropdown-header p.heading { + font-weight: lighter; + } + + .dropdown-content { + padding-top: 8px; + margin-bottom: 55px; + width: 100%; + max-height: 329px; + overflow-y: auto; + } + + .dropdown-content .item { + display: flex; + flex-direction: row; + border-bottom: 1px solid $border-color; + padding: 8px 16px; + } + + .dropdown-content .item img { + height: 75px; + width: 75px; + margin-right: 8px; + } + + .dropdown-content .item-details { + height: auto; + } + + .item-details .item-name { + font-size: 16px; + font-weight: bold; + margin-bottom: 8px; + } + + .item-details .item-options { + margin-bottom: 8px; + } + + .item-details .item-price { + margin-bottom: 8px; + } + + .item-details .item-qty { + font-weight: lighter; + margin-bottom: 8px; + } + + .dropdown-footer { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + padding: 8px 16px; + position: absolute; + bottom: 0; + width: 100%; + background: #fff; + border-top: 1px solid $border-color; + + .btn { + margin: 0; + } + } + + .dropdown-footer .btn { + max-width: 170px; + text-align: center; + } + } + } + } + + .search-box, .menu-box { + display: none; + } + } + } + + .header-bottom { + height: 47px; + margin-left: auto; + margin-right: auto; + border-top: 1px solid $border-color; + border-bottom: 1px solid $border-color; + display: block; + + ul.nav { + display: block; + font-size:16px; + max-width: 100%; + width: auto; + margin-left: auto; + margin-right: auto; + } + + .nav ul { + margin: 0; + padding:0; + border: 1px solid $border-color; + box-shadow: 1px 1px 1px 0 rgba(0,0,0,0.40); + } + + .nav a { + display:block; + color: $font-dark; + text-decoration: none; + padding: 0.8em 0.3em 0.8em 0.5em; + text-transform: capitalize; + letter-spacing: -0.38px; + position: relative; + } + + .nav li > .icon{ + display: none; + } + + .nav { + vertical-align: top; + display: inline-block; + } + + .nav li { + position: relative; + } + + .nav > li { + float: left; + margin-right: 1px; + height: 45px; + } + + .nav > li > a { + margin-bottom: 1px; + } + + .nav > li > a .icon{ + display: none; + } + + .nav li li a { + margin-top: 1px; + white-space: initial; + word-break: break-word; + width: 200px; + } + + .nav li a:first-child:nth-last-child(2):before { + content: ""; + position: absolute; + height: 0; + width: 0; + border: 5px solid transparent; + top: 50% ; + right:5px; + } + + /* submenu positioning */ + + .nav ul { + position: absolute; + white-space: nowrap; + border: 1px solid $border-color; + background-color:white; + z-index: 10000; + left: -99999em; + } + + .nav > li:hover { + background-color: $background-color; + } + + .nav > li:hover > ul { + left: auto; + min-width: 100%; + } + + .nav > li li:hover { + background-color: $background-color; + } + + .nav > li li:hover > ul { + left: 100%; + margin-left: 1px; + top: -2px; + } + + .nav > li:hover > a:first-child:nth-last-child(2):before { + margin-top:-5px + } + + .nav li li > a:first-child:nth-last-child(2):before { + margin-top: -5px + } + + .nav li li:hover > a:first-child:nth-last-child(2):before { + right: 10px; + } + } + + .search-responsive { + display: none; + + .search-content { + border-bottom: 1px solid $border-color; + border-top: 1px solid $border-color; + height: 50px; + display: flex; + align-items: center; + justify-content: space-between; + + .search { + width: 80%; + border: none; + font-size: 16px; + } + + .right { + float: right; + } + } + } +} + +@media all and (max-width: 720px) { + .header { + .currency-switcher { + display: none !important; + } + + .header-top { + div.right-content { + display: inherit; + + .menu-box { + display: inline-block; + margin-left:10px; + } + + .search-box { + display: inline-block; + margin-right: 10px; + cursor: pointer; + } + + .right-content-menu { + > li { + border-right: none; + padding: 0 2px; + + .icon:not(.arrow-down-icon) { + margin-right: 0px; + } + } + + .cart-link { + pointer-events: all; + } + + .arrow-down-icon, .name { + display: none; + } + + .cart-dropdown-container { + .dropdown-container { + display: none; + } + } + } + } + } + + .header-bottom { + height: auto; + display: none; + + .nav a { + display:inline-block; + } + + ul.nav , .nav li{ + height: auto; + } + + .nav > li { + float: none; + } + + .nav li > .icon{ + float: right; + display: block; + } + + .icon.icon-arrow-down { + margin-right: 5px; + } + + .nav li .left{ + height: 16px; + width: 16px; + } + + .nav li a > .icon{ + display: none; + } + + .nav ul { + position: unset; + border: none; + box-shadow: none; + } + + .nav > li li:hover > ul { + margin-left: 0px; + top: 0px; + } + } + } + + ul.search-container { + display: none !important; + } + + ul.account-dropdown-container { + display: none !important; + } + + ul.cart-dropdown-container { + display: none !important; + } +} + +@media all and (max-width: 400px) { + .header { + .header-top { + div.right-content { + .right-content-menu .guest { + width: 240px; + + .btn.btn-sm { + padding: 7px 14px; + } + } + } + } + } +} + +//footer +.footer { + background-color: $background-color; + padding-left: 10%; + padding-right: 10%; + width: 100%; + display: inline-block; + + .footer-content { + .footer-list-container { + display: grid; + padding-top: 40px; + padding-bottom: 40px; + padding-left: 10px; + padding-right: 10px; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + grid-auto-rows: auto; + grid-row-gap: 1vh; + + .list-container { + .list-heading { + + text-transform: uppercase; + color: rgba(165, 165, 165, 1); + } + + .list-group { + padding-top: 25px; + + a { + color: $font-dark; + } + + li { + margin-bottom: 12px; + list-style-type: none; + text-transform: uppercase; + + span.icon { + display: inline-block; + vertical-align: middle; + margin-right: 5px; + height: 24px; + width: 24px; + } + } + } + + .form-container { + padding-top: 5px; + + .control-group { + .subscribe-field { + width: 100%; + } + + .btn-primary { + background-color: $font-dark; + margin-top: 8px; + border-radius: 0px; + text-align: center; + } + + .locale-switcher { + width: 100%; + } + } + } + + .currency { + display: none; + } + } + } + } +} + +@media all and (max-width: 720px) { + .footer { + padding-left: 15px; + + .footer-list-container { + padding-left: 0px !important; + } + + .currency { + display: block !important; + } + } +} + +.footer-bottom { + width: 100%; + height: 70px; + font-size: 16px; + color: $font-light; + letter-spacing: -0.26px; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + + p { + padding: 0px 15px; + } +} + +//category page +.main { + .category-container { + display: flex; + flex-direction: row; + width: 100%; + + .layered-filter-wrapper { + width: 25%; + float: left; + padding-right: 20px; + min-height: 1px; + + .filter-title { + border-bottom: 1px solid $border-color; + color: $font-dark; + padding: 10px 0; + } + + .filter-attributes { + .filter-attributes-item { + border-bottom: 1px solid $border-color; + padding-bottom: 10px; + + .filter-attributes-title { + padding: 10px 40px 0 10px; + color: $other-font-color; + cursor: pointer; + position: relative; + + .remove-filter-link { + font-weight: 400; + color: $brand-color; + margin-right: 10px; + } + + .icon { + background-image: url('../images/icon-dropdown.svg') !important; + width: 10px; + height: 10px; + position: absolute; + right: 15px; + top: 14px; + } + } + + .filter-attributes-content { + padding: 10px; + display: none; + + ol.items { + padding: 0; + margin: 0; + list-style: none none; + + li.item { + padding: 8px 0; + color: $other-font-color; + + .checkbox { + margin: 0; + } + + .color-swatch { + display: inline-block; + margin-right: 5px; + min-width: 20px; + height: 20px; + border: 1px solid #c7c7c7; + border-radius: 3px; + float: right; + } + } + } + + .price-range-wrapper { + margin-top: 21px; + } + } + + &.active { + .filter-attributes-content { + display: block; + } + + .filter-attributes-title .icon { + background-image: url('../images//arrow-up.svg') !important; + } + } + } + } + } + + .responsive-layred-filter { + display: none; + @extend .layered-filter-wrapper; + width: 100%; + float: none; + padding-right: 0px; + margin-top: -25px !important; + } + + .category-block { + width: 80%; + display: block; + + .hero-image { + display: inline-block; + visibility: visible; + width: 100%; + + img { + max-height: 400px; + max-width: 100%; + } + } + } + } + + .top-toolbar { + width: 100%; + display: inline-block; + + .page-info { + float: left; + color: $font-dark; + line-height: 45px; + + span { + display: none; + + &:first-child { + display: inline; + } + } + } + + .pager { + float: right; + + label { + margin-right: 5px; + } + + select { + background: $background-color; + border: 1px solid $border-color; + border-radius: 3px; + color: $font-dark; + padding: 10px; + } + + .view-mode { + display: inline-block; + margin-right: 20px; + + a, span { + display: inline-block; + vertical-align: middle; + + &.grid-view { + margin-right: 10px; + } + } + + .sort-filter { + display: none; + } + } + + .sorter { + display: inline-block; + margin-right: 10px; + } + + .limiter { + display: inline-block; + } + } + } + + .bottom-toolbar { + display: block; + margin-top: 40px; + margin-bottom: 40px; + text-align: center; + } +} + +//category page responsivs css +@media only screen and (max-width: 840px) { + .main { + .layered-filter-wrapper{ + display: none; + } + + .category-block { + width: 100% !important; + + .top-toolbar { + display: flex; + flex-direction: column; + + .page-info { + border-bottom: 1px solid $border-color; + line-height: 15px; + margin-top: 10px; + + span { + display: inline; + + &:first-child{ + display: none; + } + } + + .sort-filter { + float: right; + cursor: pointer; + } + } + + .pager { + margin-top: 20px; + display: none; + + .view-mode { + display: none; + } + } + } + + .responsive-layred-filter { + display: block; + } + } + } +} + +// product pages css starts here +section.product-detail { + color: $font-dark; + + div.category-breadcrumbs { + display: inline; + } + + div.layouter { + display: block; + margin-top: 20px; + margin-bottom: 20px; + + .form-container { + display: flex; + flex-direction: row; + // justify-content: space-between; + width: 100%; + + div.product-image-group { + margin-right: 30px; + width: 604px; + height: 650px; + max-width: 604px; + position: sticky; + top: 10px; + + div { + display: flex; + flex-direction: row; + cursor: pointer; + + .thumb-list { + display: flex; + flex-direction: column; + margin-right: 4px; + min-width: 120px; + overflow: hidden; + position: relative; + justify-content: flex-start; + max-height: 480px; + + .thumb-frame { + border: 2px solid transparent; + background: $background-color; + width: 120px; + max-height: 120px; + + &.active { + border-color: $brand-color; + } + + img { + height: 100%; + width: 100%; + } + } + + .gallery-control { + width: 100%; + position: absolute; + text-align: center; + cursor: pointer; + z-index: 1; + + .overlay { + opacity: 0.3; + background: $font-dark; + width: 100%; + height: 18px; + position: absolute; + left: 0; + z-index: -1; + } + + .icon { + z-index: 2; + } + + &.top { + top: 0; + } + + &.bottom { + bottom: 0; + } + } + } + + .product-hero-image { + display: block; + position: relative; + background: $background-color; + width: 100%; + max-height: 480px; + height: 100%; + + img { + width: 100%; + height: auto; + max-height: 480px; + } + + .add-to-wishlist { + background-image: url('../images/wishlist.svg'); + position: absolute; + top: 10px; + right: 12px; + background-color: transparent; + border: 0; + cursor: pointer; + padding: 0; + width: 32px; + height: 32px; + + &:hover { + background-image: url('../images/wishlist-added.svg'); + } + } + + .add-to-wishlist.already { + background-image: url('../images/wishlist-added.svg') !important; + } + + .share { + position: absolute; + top: 10px; + right: 45px; + } + } + } + + .add-to-buttons { + display: none; + flex-direction: row; + margin-top: 10px; + width: 79.5%; + float: right; + justify-content: space-between; + + + .addtocart { + width: 49%; + background: black; + white-space: normal; + text-transform: uppercase; + } + + .buynow { + width: 49%; + white-space: nowrap; + text-transform: uppercase; + } + } + } + + .details { + width: 50%; + overflow-wrap: break-word; + + .product-price { + margin-bottom: 14px; + word-break: break-all; + + .sticker { + display: none; + } + } + + .product-ratings { + margin-bottom: 20px; + + .icon { + width: 16px; + height: 16px; + } + + .total-reviews { + display: inline-block; + margin-left: 15px; + } + } + + .product-heading { + font-size: 24px; + color: $font-dark; + margin-bottom: 15px; + } + + .product-price { + margin-bottom: 15px; + word-break: break-all; + + .special-price { + font-size: 24px; + } + } + + .stock-status { + margin-bottom: 15px; + font-weight: 600; + color: $rating-color; + + &.active { + color: $stock-color; + } + } + + .description { + margin-bottom: 15px; + + ul { + padding-left: 40px; + list-style: disc; + } + } + + .quantity { + padding-top: 15px; + border-top: solid 1px rgba(162, 162, 162, 0.2); + } + + .downloadable-container { + .sample-list { + padding: 15px 0; + border-top: solid 1px rgba(162, 162, 162, 0.2); + + h3 { + font-size: 16px; + margin-top: 0; + } + + ul { + li { + margin-bottom: 5px; + + &:last-child { + margin-bottom: 0; + } + } + } + } + + .link-list { + padding: 15px 0; + border-top: solid 1px rgba(162, 162, 162, 0.2); + + h3 { + font-size: 16px; + margin-top: 0; + } + + ul { + li { + margin-bottom: 15px; + + &:last-child { + margin-bottom: 0; + } + + .checkbox { + display: inline-block; + margin: 0; + } + + a { + float: right; + margin-top: 3px; + } + } + } + } + } + + .grouped-product-container { + .grouped-product-list { + padding: 15px 0; + border-top: solid 1px rgba(162, 162, 162, 0.2); + + ul { + li { + margin-bottom: 15px; + width: 100%; + display: inline-block; + + &:last-child { + margin-bottom: 0; + } + + &:first-child { + span { + font-weight: 600; + + &:last-child { + float: right; + width: 50px; + text-align: left; + } + } + } + + .name { + vertical-align: middle; + display: inline-block; + + .product-price { + margin-top: 5px; + margin-bottom: 0; + font-size: 14px; + word-break: break-all; + + .special-price { + font-size: 16px; + } + } + } + + .qty { + float: right; + + .control-group { + max-width: initial; + width: auto; + text-align: center; + margin-bottom: 0; + border-top: 0; + padding-top: 0; + + label { + display: none; + } + + .control { + height: 38px; + width: 60px; + text-align: center; + line-height: 38px; + } + } + } + } + } + } + } + + .bundle-options-wrapper { + .bundle-option-list { + padding: 15px 0; + border-top: solid 1px rgba(162, 162, 162, 0.2); + + h3 { + font-size: 16px; + margin: 0; + color: #242424; + } + + .bundle-option-item { + border-bottom: solid 1px rgba(162, 162, 162, 0.2); + padding: 15px 0; + width: 100%; + display: inline-block; + + &:last-child { + border-bottom: 0; + padding-bottom: 0; + } + + .control-group { + margin-bottom: 0; + color: #5E5E5E; + + label { + color: #242424; + } + + .control { + color: #5E5E5E; + } + + .price { + margin-left: 15px; + } + } + + .quantity { + border-top: 0; + padding-bottom: 0; + + &.has-error { + button { + border-color: #FC6868; + color: #FC6868; + } + } + } + + .control-error { + float: left; + width: 100%; + } + + &.has-error { + button { + border-color: #FC6868; + color: #FC6868; + } + } + } + } + + .bundle-summary { + padding: 15px 0; + border-top: solid 1px rgba(162, 162, 162, 0.2); + + h3 { + font-size: 16px; + margin: 0; + color: #242424; + } + + .quantity { + border-top: 0; + } + + .bundle-price { + font-weight: 600; + font-size: 24px; + color: #FF6472; + margin-top: 10px; + } + + ul.bundle-items { + li { + margin-bottom: 20px; + + &:last-child { + margin-bottom: 0; + } + + .selected-products { + color: #5E5E5E; + } + } + } + } + } + + .full-description { + * { + max-width: 100%; + } + + ul { + padding-left: 40px; + list-style: disc; + } + } + + .full-specifications { + td { + padding: 10px 0; + color: $other-font-color; + + &:first-child { + padding-right: 40px; + } + } + } + + .accordian .accordian-header { + padding-left: 0; + font-weight: 600; + } + + .accordian .accordian-content { + padding: 20px 0px; + } + + .attributes { + display: block; + width: 100%; + border-bottom: solid 1px rgba(162, 162, 162, 0.2); + + .attribute.control-group { + margin-bottom: 20px; + + .swatch-container { + margin-top: 10px; + display: inline-block; + + .swatch { + display: inline-block; + margin-right: 5px; + min-width: 40px; + height: 40px; + + span { + min-width: 38px; + height: 38px; + float: left; + border: 1px solid $border-color; + border-radius: 3px; + line-height: 36px; + text-align: center; + cursor: pointer; + padding: 0 10px; + } + + img { + width: 38px; + height: 38px; + border: 1px solid $border-color; + border-radius: 3px; + cursor: pointer; + background: rgb(242, 242, 242); + } + + input:checked + span, input:checked + img { + border: 1px solid $font-dark; + } + + input { + display: none; + } + } + + .no-options { + color: $danger-color; + } + } + } + } + } + } + } +} +// product pages css ends here + +.accordian, accordian { + .accordian-header, div[slot*="header"] { + font-size: 16px !important; + } +} + +// product pages responsive css start here +@media only screen and (max-width: 720px) { + section.product-detail div.layouter .form-container { + flex-direction: column; + + div.product-image-group { + margin-right: 0px; + max-width: none; + width: auto; + min-height: 400px; + height: auto; + position: unset; + + .loader { + margin-left: 47%; + } + + div { + flex-direction: column-reverse; + + .thumb-list { + + margin-top: 5px; + flex-direction: row; + overflow-x: scroll; + margin-right: 0px; + + .thumb-frame { + img { + height: 100%; + width: auto; + } + } + + .gallery-control { + display: none; + } + } + + .product-hero-image{ + display: flex; + + img { + margin-left: auto; + margin-right: auto; + width: 480px; + } + } + + .wrap { + flex-direction: row; + width: 100% !important; + } + } + + .add-to-buttons { + width: 100%; + } + } + + .details { + width: 100%; + margin-top: 20px; + } + } +} + +@media only screen and (max-width: 510px) { + section.product-detail div.layouter .form-container { + div.product-image-group { + .product-hero-image img { + width: 100% !important; + } + } + } +} + +//product pages responsive css end here + +//rating and reviews of product pages +.rating-reviews { + + .rating-header { + padding: 20px 0; + } + + .stars { + .icon { + width: 16px; + height: 16px; + } + } + + .overall { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + + .review-info { + .number { + font-size: 34px; + } + + .total-reviews { + margin-top: 10px; + } + } + } + + .reviews { + margin-top: 40px; + margin-bottom: 40px; + + .review { + margin-bottom: 25px; + + .title { + margin-bottom: 5px; + } + + .stars { + margin-bottom: 15px; + display: inline-block; + } + + .message { + margin-bottom: 10px; + } + + .reviewer-details { + color: $review-details; + } + } + + .view-all { + margin-top:15px; + color: $brand-color; + margin-bottom:15px; + } + } +} + +/* cart pages and elements css begins here */ +section.cart { + width: 100%; + color: $font-dark; + margin-bottom: 80px; + margin-top: 20px; + + .title { + font-size: 24px; + } + + .cart-content { + margin-top: 20px; + width: 100%; + display: inline-block; + + .left-side { + width: 70%; + float: left; + + .misc-controls { + width: 100%; + display: inline-flex; + align-items: center; + justify-content: space-between; + + margin-top: 20px; + + a.link { + margin-right: 15px; + } + + div { + button { + margin-right: 15px; + } + } + } + } + + .right-side { + width: 30%; + display: inline-block; + padding-left: 40px; + } + } +} + +.cart-item-list { + .item { + padding: 10px; + display: flex; + flex-direction: row; + border: 1px solid $border-color; + border-radius: 2px; + + .item-image { + margin-right: 15px; + + img { + height: 160px; + width: 160px; + } + } + + .item-details { + display: flex; + flex-direction: column; + justify-content: flex-start; + width: 100%; + + .item-title { + font-size: 18px; + margin-bottom: 10px; + font-weight: 600; + + a { + color: $font-dark; + } + } + + .price { + margin-bottom: 10px; + font-size: 18px; + font-weight: 600; + } + + .summary { + margin-bottom: 17px; + } + + .misc { + display: flex; + width: 100%; + flex-direction: row; + justify-content: flex-start; + align-items: flex-start; + margin-top: 10px; + + .control-group { + font-size: 16px !important; + margin: 0px; + width: auto; + + .wrap { + display: inline-flex; + align-items: center; + } + + label { + margin-right: 15px; + } + + .control { + height: 38px; + width: 60px; + text-align: center; + line-height: 38px; + } + } + + .remove, .towishlist { + line-height: 35px; + margin-left: 15px; + } + } + } + + .error-message { + color: $disc-price; + } + } +} + +.quantity { + display: inline-block !important; + + label { + margin-bottom: 10px; + } + + button { + width: 40px; + height: 38px; + font-size: 16px; + background: #ffffff; + border: 1px solid #C7C7C7; + float: left; + cursor: pointer; + + &.decrease { + border-radius: 3px 0px 0px 3px; + } + + &.increase { + border-radius: 0px 3px 3px 0px; + } + } + + &.control-group { + .control { + text-align: center; + float: left; + width: 60px; + height: 38px; + margin: 0; + border: 1px solid #C7C7C7; + border-right: none; + border-left: none; + border-radius: 0px; + + &:focus { + border-color: #C7C7C7; + } + } + } +} + +.coupon-container { + .discount-control { + .control-group { + margin-top: 20px; + + .control { + width: 100%; + } + } + } + + .applied-coupon-details { + margin-top: 30px; + + .right { + float: right; + + .icon { + vertical-align: text-bottom; + margin-bottom: 1px; + cursor: pointer; + } + } + } +} + +.order-summary { + h3 { + font-size: 16px; + margin-top: 0; + } + + .item-detail { + margin-top:12px; + + label { + &.right { + float: right; + } + } + } + + .payable-amount { + margin-top: 17px; + border-top: 1px solid $border-color; + padding-top: 12px; + + label { + font-weight: bold; + + &.right { + float:right; + } + } + } + + .discount-details-group { + } +} + +// cart pages responsive css start +@media only screen and (max-width: 815px) { + section.cart { + .cart-content { + display: block; + + .left-side { + width: 100%; + float: none; + + .misc-controls { + position: relative; + top: 180px; + margin-top: 0px; + } + } + + .right-side { + width: 100%; + padding-left: 0px; + position: relative; + top: -20px; + } + } + } +} + +@media only screen and (max-width: 600px) { + section.cart { + .cart-content { + .left-side { + .cart-item-list { + .item { + display: flex; + flex-direction: column; + + .item-details { + margin-top: 10px; + + .misc { + display: flex; + flex-wrap: wrap; + line-height: 40px; + } + } + } + } + } + } + } +} + +@media only screen and (max-width: 574px) { + section.cart { + .cart-content { + .left-side { + .misc-controls { + display: block; + top:160px; + + div { + button { + width: 100%; + margin-top: 10px; + } + + a { + margin-top: 10px; + width: 100%; + text-align: center; + } + } + } + } + + .right-side { + top: -100px; + } + } + } +} + +//cart pages responsive css end +.checkout-method-group { + .line-one { + display: inline-flex; + align-items: center; + + .radio-container { + padding-left: 28px; + } + + .method-label { + margin-top: 4px; + } + } + + .line-two { + margin-left: 30px; + } +} + +// checkout starts here +.checkout-process { + display: flex; + flex-direction: row; + width: 100%; + margin-top: 20px; + margin-bottom: 20px; + font-size: 16px; + color: $font-dark; + + .col-main { + width: 70%; + margin-right: 5%; + + ul.checkout-steps { + width: 100%; + display: inline-flex; + justify-content: space-between; + width: 100%; + padding-bottom: 15px; + border-bottom: 1px solid $border-color; + + li { + height: 48px; + display:flex; + + .decorator { + height: 48px; + width: 48px; + border: 1px solid black; + border-radius: 50%; + display: inline-flex; + border: 1px solid $border-color; + background-repeat: no-repeat; + background-position: center; + + &.address-info { + background-image: url('../images/address.svg'); + } + + &.shipping { + background-image: url('../images/shipping.svg'); + } + + &.payment { + background-image: url('../images/payment.svg'); + } + + &.review { + background-image: url('../images/finish.svg'); + } + } + + &.completed { + cursor: pointer; + + .decorator { + background-image: url('../images/complete.svg'); + } + } + + span { + margin-left: 7px; + margin-top: auto; + margin-bottom: auto; + } + + &.active { + color: $link-color; + + .decorator { + border: 1px solid $link-color; + } + } + } + } + + .step-content { + padding-top: 20px; + + .form-header { + display: inline-flex; + align-items: center; + justify-content: space-between; + width: 100%; + height: 30px; + + .checkout-step-heading { + font-size: 24px; + font-weight: bold; + float: left; + } + + .btn { + float: right; + font-size: 14px; + } + } + + .form-container { + border-bottom: 1px solid $border-color; + padding-top: 20px; + padding-bottom: 20px; + } + + .shipping-methods { + font-size: 16px; + + .ship-method-carrier { + margin-bottom: 15px; + font-weight: bold; + } + } + + .payment-methods { + .radio-container { + padding-left: 28px; + } + + .control-info { + margin-left: 28px; + } + } + + .address-summary { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + width: 100%; + + div.billing-address { + margin-right: 25%; + } + + div.billing-address, div.shipping-address { + .horizontal-rule { + width: 40px; + background: #242424; + } + } + + .label { + width: 10%; + } + + .address-card-list { + width: 85%; + } + } + + .cart-item-list { + .item { + .row { + .title { + width: 100px; + display: inline-block; + color: $font-light; + font-weight: 500; + margin-bottom: 10px; + } + + .value { + font-size: 18px; + font-weight: 600; + } + } + } + } + + .order-description { + display: inline-block; + width: 100%; + + .shipping { + margin-bottom: 25px; + } + + .decorator { + height: 48px; + width: 48px; + border-radius: 50%; + border: 1px solid $border-color; + vertical-align: middle; + display: inline-block; + text-align: center; + + .icon { + margin-top: 7px; + } + } + + .text { + font-weight: 600; + vertical-align: middle; + display: inline-block; + + .info { + font-weight: 500; + margin-top: 2px; + } + } + } + } + } + + .col-right { + width: 25%; + padding-left: 40px; + } +} +// checkout ends here + +// checkout responsive start here +@media only screen and (max-width: 770px) { + .checkout-process { + .col-main { + width: 100%; + padding-right: 0px; + + ul.checkout-steps{ + border-bottom: none; + padding-bottom: 0px; + + span { + display: none; + } + + .line{ + flex-grow: 1; + border-bottom: 1px solid $border-color; + margin-left: 5px; + margin-right: 5px; + } + } + } + + .step-content { + padding-top: 0px; + + .control-group .control { + width:100%; + } + } + + .col-right { + display: none; + } + } +} + +@media only screen and (max-width: 480px) { + .checkout-process { + .col-main { + .step-content { + .address, .order-description { + display: flex; + flex-direction: column; + + .billing-address, .pull-left { + width: 100% !important; + } + + .shipping-address, .pull-right { + width: 100% !important; + margin-top: 20px; + } + } + } + } + } +} + +// checkout responsive +.attached-products-wrapper { + margin-bottom: 80px; + + .title { + margin-bottom: 40px; + font-size: 18px; + color: $font-dark; + text-align: center; + position: relative; + + .border-bottom { + border-bottom: 1px solid rgba(162, 162, 162, 0.2); + display: inline-block; + width: 100px; + position: absolute; + top: 40px; + left: 50%; + margin-left: -50px; + } + } + + .horizontal-rule { + height: 1px; + background: $border-color; + width: 148px; + margin-bottom: 24px; + margin-left:auto; + margin-right:auto; + } +} + +// review page start here +section.review { + .category-breadcrumbs { + display: inline; + } + + .review-layouter { + display: flex; + + .product-info { + max-width: 25%; + + .product-name { + font-size: 24px; + } + + .product-image { + img { + height: 280px; + width: 280px; + } + } + + .product-name a { + color: $font-dark; + } + + .product-price { + margin-top: 10px; + word-break: break-all; + + .pro-price { + color: $disc-price; + } + + .pro-price-not { + margin-left: 10px; + font-size: 16px; + color: $disc-price-pro; + } + + .offer { + margin-left: 10px; + font-size: 16px; + } + } + } + + .review-form { + margin-left: 20px; + width: 55%; + + .heading { + color: $font-dark; + font-weight: 600; + + .right { + float: right; + margin-top: -10px; + } + } + + .star { + font-size: 23px; + color: $star-color; + transition: all .2s; + } + + .star:before { + content: '\2605'; + } + + .control-group { + .control { + width: 100%; + } + } + + .review-detail{ + height: 150px; + border: 1px solid firebrick; + margin-top: 30px; + display: flex; + flex-direction: row; + + .rating-review { + margin-top: 40px; + margin-left: 20px; + width: 48%; + + .avg-rating-count{ + span { + font-size: 34px; + text-align: center; + } + } + } + + .rating-calculate { + .progress-only { + width:20px; + border: 1px solid blue; + } + } + } + } + + .ratings-reviews { + display: flex; + align-items: center; + justify-content: space-between; + + .left-side { + padding: 40px 20px 40px 20px; + width: 50%; + + .rate { + font-size: 34px; + } + + .stars .icon { + height: 16px; + width: 16px; + } + } + + .right-side { + width: 50%; + + .rater { + display: inline-flex; + align-items: center; + padding-top: 5px; + width: 100%; + + .star-name { + margin-right: 5px; + width: 35px; + } + + .rate-number { + width:15px; + } + + .percentage { + width: 50px; + margin-right: 10px; + + span { + float: right; + white-space: nowrap; + } + } + + .line-bar { + height: 4px; + width: calc(100% - 100px); + margin-right: 5px; + margin-left: 5px; + background: $line-bar-color; + + .line-value { + background-color: $brand-color; + } + } + } + } + } + } +} +// review page end here + +// review responsive css start here +@media only screen and (max-width: 770px) { + section.review { + .category-breadcrumbs{ + display: none; + } + + .review-layouter { + flex-direction: column; + + .product-info { + max-width: 100%; + + .product-image, .product-name, .product-price { + max-width: 280px; + margin-left: auto; + margin-right: auto; + word-break: break-all; + } + } + + .review-form { + width: 100%; + margin-left: 0px; + + .heading { + .right { + margin-top: 50px; + } + } + + .ratings-reviews { + flex-direction: column; + width: 100%; + + .left-side { + width: 100%; + padding: 0px 0px 40px 0px; + margin-top: -30px; + } + + .right-side { + width: 100%; + + .rater .percentage { + margin-right: 0px; + } + } + } + } + } + } +} +//review responsive css end here + + +//customers auth page css goes here +.auth-content { + padding-top: 5%; + padding-bottom: 5%; + + .sign-up-text { + margin-bottom: 2%; + margin-left: auto; + margin-right: auto; + text-align: center; + font-size: 18px; + color: $font-light; + + text-align: center; + } + + .login-form { + margin-left: auto; + margin-right: auto; + display: flex; + + border: 1px solid $border-color; + flex-direction: column; + max-width: 500px; + min-width: 320px; + padding: 25px; + + .login-text { + font-size: 24px; + font-weight: 600; + margin-bottom: 30px; + } + + .control-group { + margin-bottom: 15px !important; + + .control { + width: 100% !important; + } + } + + .forgot-password-link { + font-size: 17px; + color: $brand-color; + + margin-bottom: 5%; + } + + .signup-confirm { + margin-bottom: 5%; + } + + .btn-primary { + width: 100%; + text-transform: uppercase; + } + } +} + +//customer account pages layouts +.account-content { + width: 100%; + display: flex; + flex-direction: row; + margin-top: 5.5%; + margin-bottom: 5.5%; + + .sidebar { + display: flex; + flex-direction: column; + align-content: center; + justify-content: flex-start; + width: 20%; + height: 100%; + } + + .menu-block { + margin-bottom: 30px; + + &:last-child { + margin-bottom: 0; + } + + .menu-block-title { + padding-bottom: 10px; + font-size: 18px; + + .right { + display: none; + } + } + + .menubar { + border: 1px solid $border-color; + color: $font-light; + position: relative; + + li { + width: 95%; + height: 50px; + margin-left: 5%; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + border-bottom: 1px solid $border-color; + text-align: center; + + a { + color: $other-font-color; + width: 100%; + text-align: left; + } + + .icon { + display: none; + position: absolute; + right: 12px; + } + } + + li:first-child { + border-top: none; + } + + li:last-child { + border-bottom: none; + } + + li.active { + a { + color: $brand-color; + } + + .icon { + display: inline-block; + } + } + } + } + + //customer account pages content + .account-layout { + margin-left: 40px; + width: 80%; + + .account-head { + + .back-icon { + display: none; + } + } + + .responsive-empty { + display: none; + } + } +} + +//Account content inside a table +.account-table-content { + color: $font-dark; + margin-top: 1.4%; + + table { + width: 100%; + + tbody { + tr { + height: 45px; + + td { + width: 250px; + } + } + } + } +} + +//address holder and address card +.address-holder { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: flex-start; + flex-wrap: wrap; + width: 100%; +} + +.address-card { + width: 260px; + border: 1px solid $border-color; + padding: 15px; + margin-right: 15px; + margin-bottom: 15px; + + .control-group { + width: 15px; + height: 15px; + margin-top: 10px; + } + + .details { + font-weight: lighter; + + span { + display: block; + } + + .control-links { + width: 90%; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + + .btn { + height: 30px; + } + } + } +} + +.edit-form { + display: flex; + border: 1px solid $border-color; + flex-direction: column; + min-height: 345px; + padding: 25px; +} + +//customer account page responsive layout +@media only screen and (max-width: 770px) { + .account-content { + flex-direction: column; + + .sidebar { + width: 100%; + + .menu-block { + .menu-block-title { + height: 50px; + padding-top: 13px; + border-bottom: 1px solid $border-color; + border-top: 1px solid $border-color; + + .right { + display: block; + float: right; + align-self: center; + } + } + + .menubar { + border: 0; + display: none; + + > li { + margin-left: 0; + width: 100%; + + .icon { + right: 0px; + } + } + + > li:last-child { + border-bottom: 1px solid $border-color; + } + } + } + } + + .account-layout { + margin-left: 0%; + margin-top: 20px; + width: 100%; + + .account-head { + display: flex; + justify-content: space-between; + border-bottom: 1px solid $border-color; + border-top: 1px solid $border-color; + height: 50px; + margin-top: 10px; + + .account-action { + margin-top: 12px; + margin-left: 15px; + } + + .back-icon { + display: block; + } + + span { + margin-top: 13px; + font-size: 18px; + } + + .horizontal-rule { + display: none; + } + } + + .account-table-content { + margin-top: 2%; + + table tbody tr { + height: 70px; + + td { + display: block; + } + } + + .address-holder { + justify-content: center; + } + } + } + + .account-items-list , .edit-form { + margin-top: 20px; + + .responsive-empty { + display: block; + } + } + + .control-group .control { + width: 100%; + } + } +} + +.sale-container { + color: $other-font-color; + + .sale-section { + + .secton-title { + font-size: 18px; + color: $title-color; + padding: 15px 0; + border-bottom: 1px solid $border-color; + } + + .section-content { + display: block; + padding: 20px 0; + border-bottom: 1px solid $address-card-border-color; + + .row { + display: block; + padding: 7px 0; + + .title { + width: 200px; + letter-spacing: -0.26px; + display: inline-block; + } + + .value { + letter-spacing: -0.26px; + display: inline-block; + } + } + + .order-box-container { + display: inline-block; + width: 100%; + + .box { + float: left; + width: 25%; + + .box-title { + padding: 10px 0; + font-size: 18px; + color: $title-color; + } + + .box-content { + color: $bold-color; + padding-right: 10px; + } + } + } + + .qty-row { + display: block; + } + } + } + + .totals { + padding-top: 20px; + display: inline-block; + width: 100%; + border-top: solid 1px $address-card-border-color; + + .sale-summary { + height: 130px; + float: right; + border-collapse: collapse; + + tr { + + td { + padding: 5px 8px; + width: auto; + color: $bold-color; + } + + &.bold { + font-weight: 600; + font-size: 15px; + } + + &.border { + td { + border-bottom: 1px solid $border-color; + } + } + } + } + } +} + +@media only screen and (max-width: 770px) { + .sale-container { + .sale-section { + .section-content { + border-bottom: none; + padding: 10px 0; + + .row { + display: flex; + flex-direction: column; + + .title { + line-height: 20px; + } + } + + .totals { + border-top: none; + + .sale-summary { + width: 100%; + + tr td { + &:nth-child(2) { + display: none; + } + } + } + } + + .order-box-container { + display: flex; + flex-direction: column; + + .box { + width: 100%; + margin: 10px auto; + } + } + + .qty-row { + display: inline; + } + } + } + } +} + +//verify account +.verify-account { + text-align: center; + background: $info-color; + width: 200px; + margin-right: auto; + margin-left: auto; + border-radius: 4px; + + a { + color: $btn-background-color !important; + } +} + +// css for loader +.cp-spinner { + position: absolute; + left: calc(50% - 24px); + margin-top: calc(40% - 24px); +} + +@media only screen and (max-width: 720px) { + .cp-spinner { + left: 50%; + margin-left: -24px; + top: 50%; + margin-top: -24px; + } +} + +//css for responsive error pages +@media only screen and (max-width: 720px) { + .error-container .wrapper { + flex-direction: column-reverse !important; + margin: 10px 0px 20px 0px !important; + align-items: start !important; + height: 100% !important; + } +} + +// responsive table +@media only screen and (max-width: 770px) { + .table { + table { + width: 100%; + } + + table thead { + display: none; + } + + table tbody { + tr td:before { + content: attr(data-value); + font-size: 15px; + font-weight: 600; + display: inline-block; + width: 120px; + } + + td { + border-bottom: none !important; + display: block; + width: 100% !important; + + div { + position: relative; + left: 100px; + top: -20px; + } + } + + tr { + border: 1px solid $border-color; + } + } + } +} + +.show-wishlist { + z-index: -1 !important; +} + +.filter-row-one .dropdown-filters { + position: relative !important; + right: 1px !important; +} + +@media only screen and (max-width: 770px) { + .table { + .grid-container { + margin-top: 10px; + overflow-x: hidden; + + .filter-row-one { + display: block; + + .dropdown-filters { + margin-top: 10px; + } + } + } + } +} +/// rtl css start here +.rtl { + direction: rtl; + + //header css start here + .header { + .header-top { + div.left-content { + ul.logo-container { + margin-right: 0px; + margin-left: 12px; + } + + ul.search-container li.search-group { + .search-field { + border: 2px solid $border-color; + padding-right: 12px; + padding-left: 0px; + border-radius: 2px; + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; + } + + .search-icon-wrapper { + border: 2px solid $border-color; + border-right: none; + border-radius: 2px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + } + } + } + + div.right-content { + .right-content-menu { + > li { + border-right: 2px solid $border-color; + padding: 0 15px 0 15px; + + &:last-child { + padding-left: 0; + } + + &:first-child { + border-right: 0; + padding-right: 0; + } + } + + .cart-dropdown-container { + .dropdown-list { + left: 0px; + right: unset !important; + } + + .count { + display: inline-block; + } + } + + .account, .currency { + right: unset; + left: 0px; + } + + .guest { + div { + display: flex; + justify-content: space-between; + } + } + } + } + } + + .header-bottom { + .nav > li { + float: right; + margin-right: 0px; + margin-left: 1px; + } + + .nav a { + padding: 0.8em 0.5em 0.8em 0.3em !important; + } + + .nav li a > .icon { + transform: rotate(180deg); + } + + .nav > li li:hover > ul { + left: unset !important; + right: 100% !important; + } + + .nav ul { + left: 99999em; + } + } + + .search-responsive .search-content .right { + float: left; + } + } + + .dropdown-list { + text-align: right; + + &.bottom-right { + left: 0px; + right: auto; + } + } + + @media only screen and (max-width: 720px) { + .header{ + .header-top div.right-content { + .menu-box { + margin-left: 0px; + margin-right: 5px; + } + + .right-content-menu { + .account { + position: absolute; + left: 0px; + right: auto; + } + + > li { + padding: 0; + border: 0; + } + } + + .search-box { + margin-left: 5px; + } + } + + .header-bottom { + .nav > li { + float: none; + } + .nav li > .icon { + float: left; + transform: rotate(180deg); + } + .icon.icon-arrow-down { + margin-left: 5px; + } + } + } + } + + // header css end here + + // slider start + section.slider-block div.slider-content div.slider-control { + left: 2%; + right: auto; + + .slider-left { + float: left; + } + + .slider-right { + margin-left: 5px; + } + } + + @media only screen and (max-width: 720px) { + section.slider-block div.slider-content div.slider-control { + left: 0%; + } + } + //slider end + + // product card + .main-container-wrapper .product-card .sticker { + left: auto; + right: 20px; + } + + .main-container-wrapper .product-card .cart-wish-wrap .addtocart { + margin-right: 0px; + margin-left: 10px; + } + // product card end + + // product page start here + section.product-detail div.layouter .form-container { + div.product-image-group { + margin-right: 0px; + margin-left: 30px; + + .add-to-buttons { + float: left !important; + } + } + + div .thumb-list { + margin-left: 4px; + margin-right: 0px; + } + + .details { + .accordian .accordian-header { + padding: 20px 0px 20px 15px; + + .icon { + float: left; + } + + .expand-icon { + margin-left: 10px; + } + } + + .full-specifications { + td { + &:first-child { + padding-right: 0px; + padding-left: 40px; + } + } + } + + .product-ratings .total-reviews { + margin-left: 0px; + margin-right: 15px; + } + } + } + + @media only screen and (max-width: 720px) { + section.product-detail div.layouter .form-container div.product-image-group { + margin-right: 0px; + margin-left: 0px; + } + } + + // product page end here + + //category page start here + .main .category-container .layered-filter-wrapper, .main .category-container .responsive-layred-filter { + padding-right: 0px; + padding-left: 20px; + } + + .main .top-toolbar { + .pager { + float: left; + + .view-mode { + margin-right: 0px; + margin-left: 20px; + } + + .sorter { + margin-right: 0px; + margin-left: 10px; + } + + label { + margin-right: 0px; + margin-left: 5px; + } + } + + .page-info { + float: right; + } + } + //category page end here + + //product review page + section.review .review-layouter .review-form { + margin-left: 0px; + margin-right: 20px; + + .heading .right { + float: left; + } + + .ratings-reviews .right-side .rater { + .star-name { + margin-right: 0px; + margin-left: 5px; + } + } + } + + @media only screen and (max-width: 770px) { + section.review .review-layouter .review-form { + margin-right: 0px; + } + } + //product review page end here + + //add to cart start here + section.cart .cart-content { + .left-side { + width: 70%; + float: right; + + .misc-controls a.link { + margin-left: 15px; + margin-right: 0px; + } + } + + .right-side { + width: 30%; + padding-right: 40px; + padding-left: 0px; + } + } + + .order-summary .item-detail, .payable-amount { + label.right { + float: left; + } + } + + .item div { + margin-left: 15px; + margin-right: 0px !important; + } + + .cart-item-list .item .item-details .misc { + div.qty-text { + margin-right: 0px; + margin-left: 10px; + } + + input.box { + margin-right: 0px; + margin-left: 30px; + } + + .remove { + margin-left: 30px; + margin-right: 0px; + } + + .control-group label { + margin-left: 15px; + margin-right: 0px; + } + } + + @media only screen and (max-width: 770px) { + section.cart .cart-content { + .left-side { + width: 100%; + float: none; + + .misc-controls div button { + margin-right: 0px; + } + } + + .right-side { + width: 100%; + padding-right: 0px; + } + } + } + + //add to cart page end here + + //checkout process page start here + .checkout-process { + .col-right { + padding-left: 0px; + padding-right: 40px; + } + + .col-main { + padding-left: 40px; + padding-right: 0px; + + ul.checkout-steps li span { + margin-right: 7px; + margin-left: 0px; + } + + .step-content { + .form-header { + h1 { + float: right; + } + + .btn { + float: left; + } + } + + .payment-methods .control-info { + margin-right: 28px; + margin-left: 0px; + } + + .order-description, .address { + .pull-left, .billing-address { + float: right !important; + } + + .pull-right, .shipping-address { + float: left !important; + } + } + } + } + } + + .checkbox { + margin: 10px 0px 5px 5px; + } + + .radio { + margin: 10px 0px 5px 5px; + + .radio-view { + margin-left: 5px; + margin-right: 0px; + } + + input { + right: 0; + left: auto; + } + } + + @media only screen and (max-width: 770px) { + .checkout-process .col-main { + padding-left: 0px; + } + } + //checkout process page end here + + //customer page start here + .account-content { + .account-layout { + margin-left: 0px; + margin-right: 40px; + } + + .menu-block .menubar li { + margin-left: 0%; + margin-right: 5%; + + a { + text-align: right; + } + + .icon { + right: unset; + left: 12px; + transform: rotate(180deg); + } + } + } + + .account-head .account-action { + float: left; + } + + .account-item-card { + .media-info .info { + margin-right: 20px; + margin-left: 0px; + } + + .operations a span { + float: left; + } + } + + .table table { + text-align: right; + } + + .sale-container { + .totals .sale-summary { + float: left; + } + + .sale-section .section-content .order-box-container { + display: flex; + } + } + + @media all and (max-width: 770px) { + .account-content { + .account-layout { + margin-right: 0px; + + .account-head .account-action { + margin-left: 0px; + } + } + + .sidebar .menu-block { + .menu-block-title { + .right { + float: left; + } + } + + .menubar { + > li { + margin-right: 0%; + } + } + } + } + } + //customer page end here + + // footer start + .footer .footer-content .footer-list-container .list-container .list-group li span.icon { + margin-left: 5px; + margin-right: 0px; + } + + @media all and (max-width: 720px) { + .footer { + padding-right: 15px; + padding-left: 10%; + + .footer-list-container { + padding-right: 0px !important; + } + } + } + // footer end + + // css for loader + .cp-spinner { + position: absolute; + right: calc(50% - 24px); + margin-top: calc(40% - 24px); + } + + @media only screen and (max-width: 720px) { + .cp-spinner { + right: 50%; + margin-right: -24px; + left: auto; + } + } + + .product-list { + .product-card .product-information { + padding-left: 0px; + padding-right: 30px; + float: left; + } + } + + .zoom-image-direction { + left: 0; + right: 476px !important; + } +} +/// rtl css end here + + +.banner-container { + width: 100%; + float: left; + padding: 0 18px; + margin-bottom: 40px; + + .left-banner { + padding-right: 20px; + width: 60%; + float: left; + + img { + width: 100%; + } + } + + .right-banner { + padding-left: 20px; + width: 40%; + float: left; + + img { + max-width: 100%; + + &:first-child { + padding-bottom: 20px; + display: block; + } + + &:last-child { + padding-top: 20px; + display: block; + } + } + } +} + +@media all and (max-width: 720px) { + .banner-container { + .left-banner { + padding-right: 0; + width: 100%; + } + + .right-banner { + padding-left: 0; + width: 100%; + + img { + &:first-child { + padding-bottom: 0; + padding-top: 25px; + } + + &:last-child { + padding-top: 25px; + } + } + } + } +} + +// Static content pages layout +.static-container { + display: block; + width: 100%; + padding: 10px; + margin-left: auto; + margin-right: auto; + + &.one-column { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + } + + &.two-column { + display: grid; + grid-template-columns: 48% 48%; + grid-column-gap: 4%; + } + + &.three-column { + display: grid; + grid-template-columns: 30% 30% 30%; + grid-column-gap: 4%; + } +} + +.item-options { + font-size: 14px; + font-weight: 200; + + b { + font-weight: 500; + } +} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/icons.scss b/packages/Webkul/Shop/src/Resources/assets/sass/icons.scss new file mode 100755 index 000000000..1ce4b31b1 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/assets/sass/icons.scss @@ -0,0 +1,159 @@ +.icon { + display: inline-block; + background-size: cover; +} + +.dropdown-right-icon { + background-image:URL('../images/icon-dropdown-left.svg'); + width: 8px; + height: 8px; + margin-left: auto; + margin-bottom: 2px; +} + +.icon-menu-close { + background-image:URL('../images/icon-menu-close.svg'); + width: 24px; + height: 24px; + margin-left: auto; +} + +.icon-menu-close-adj { + background-image:URL('../images/cross-icon-adj.svg'); + width: 32px; + height: 32px; + margin-left: auto; +} + +.grid-view-icon { + background-image:URL('../images/icon-grid-view.svg'); + width: 24px; + height: 24px; +} + +.list-view-icon { + background-image:URL('../images/icon-list-view.svg'); + width: 24px; + height: 24px; +} + +.sort-icon { + background-image:URL('../images/icon-sort.svg'); + width: 32px; + height: 32px; +} + +.filter-icon { + background-image:URL('../images/icon-filter.svg'); + width: 32px; + height: 32px; +} + +.whishlist-icon { + background-image:URL('../images/wishlist.svg'); + width: 24px; + height: 24px; +} + +.share-icon { + background-image:URL('../images/icon-share.svg'); + width: 24px; + height: 24px; +} + +.icon-menu { + background-image:URL('../images/icon-menu.svg'); + width: 24px; + height: 24px; +} + +.icon-search { + background-image:URL('../images/icon-search.svg'); + width: 24px; + height: 24px; +} + +.icon-menu-back { + background-image:URL('../images/icon-menu-back.svg'); + width: 24px; + height: 24px; +} + +.shipping-icon { + background-image: url('../images/shipping.svg'); + width: 32px; + height: 32px; +} + +.payment-icon { + background-image: url('../images/payment.svg'); + width: 32px; + height: 32px; +} + +.cart-icon { + background-image: url("../images/icon-cart.svg"); + width: 24px; + height: 24px; +} + +.wishlist-icon { + background-image: url('../images/wishlist.svg'); + width: 32px; + height: 32px; +} + +.icon-arrow-up { + background-image: url('../images/arrow-up.svg'); + width: 16px; + height: 16px; +} + +.icon-arrow-down { + background-image: url('../images/arrow-down.svg'); + width: 16px; + height: 16px; +} + +.expand-icon { + background-image: url("../images/Expand-Light.svg"); + width: 18px; + height: 18px; +} + +.expand-on-icon { + background-image: url("../images/Expand-Light-On.svg"); + width: 18px; + height: 18px; +} + +.icon-menu-close-adj { + background-image: url("../images/cross-icon-adj.svg"); + width: 32px; + height: 32px; +} + +.icon-facebook { + background-image: url("../images/facebook.svg"); +} + +.icon-twitter { + background-image: url("../images/twitter.svg"); +} + +.icon-google-plus { + background-image: url("../images/google-plus.svg"); +} + +.icon-instagram { + background-image: url("../images/instagram.svg"); +} + +.icon-linkedin { + background-image: url("../images/linkedin.svg"); +} + +.icon-dropdown { + background-image: url("../images/icon-dropdown.svg"); +} + diff --git a/packages/Webkul/Shop/src/Resources/lang/ar/app.php b/packages/Webkul/Shop/src/Resources/lang/ar/app.php new file mode 100644 index 000000000..1c7aa443d --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/lang/ar/app.php @@ -0,0 +1,539 @@ + [ + 'my-account' => 'حسابي', + 'profile' => 'الملف الشخصي', + 'address' => 'العنوان', + 'reviews' => 'المراجعات', + 'wishlist' => 'قائمة الأمنيات', + 'orders' => 'الطبات', + ], + + 'common' => [ + 'error' => 'حدث خطأ. الرجاء المحاولة لاحقاً.', + 'no-result-found' => 'لا توجد نتائج.' + ], + + 'home' => [ + 'page-title' => 'عنوان الصفحة', + 'featured-products' => 'المنتجات المميزة', + 'new-products' => 'المنتجات الجديدة', + 'verify-email' => 'تحقق من حساب بريدك الإلكتروني', + 'resend-verify-email' => 'إعادة التحقق من البريد الإلكتروني' + ], + + 'header' => [ + 'title' => 'الحساب', + 'dropdown-text' => 'إدارة عربة التسوق ، الطلبات قائمة الأمنيات', + 'sign-in' => 'تسجيل الدخول', + 'sign-up' => 'حساب جديد', + 'account' => 'الحساب', + 'cart' => 'عربة التسوق', + 'profile' => 'الملف الشخصي', + 'wishlist' => 'قائمة الأمنيات', + 'logout' => 'تسجيل الخروج', + 'search-text' => 'ابحث عن منتج' + ], + + 'minicart' => [ + 'view-cart' => 'عرض عربة التسوق', + 'checkout' => 'الدفع', + 'cart' => 'عربة التسوق', + 'zero' => '0' + ], + + 'footer' => [ + 'subscribe-newsletter' => 'اشترك في الرسائل الدورية.', + 'subscribe' => 'اشترك', + 'locale' => 'اللغة', + 'currency' => 'العملة', + ], + + 'subscription' => [ + 'unsubscribe' => 'الإلغاء', + 'subscribe' => 'اشترك', + 'subscribed' => 'تم الاشتراك بنجاح', + 'not-subscribed' => 'لا يمكنك الاشتراك ، حاول مرة أخرى لاحقاً', + 'already' => 'أنت مشترك بالفعل في قائمة اشتراكاتنا', + 'unsubscribed' => 'تم إلغاء الاشتراك.', + 'already-unsub' => 'أنت بالفعل غير مشترك', + ], + + 'search' => [ + 'no-results' => 'لا توجد نتائج', + 'page-title' => 'بحث', + 'found-results' => 'تم العثور على نتائج البحث', + 'found-result' => 'تم العثور على نتيجة البحث' + ], + + 'reviews' => [ + 'title' => 'المراجعات', + 'add-review-page-title' => 'إضافة مراجعة/تقييم', + 'write-review' => 'اكتب مراجعة/تقييم', + 'review-title' => 'عنوان المراجعة', + 'product-review-page-title' => 'استعراض المنتجات', + 'rating-reviews' => 'التقييم والمراجعات', + 'submit' => 'إرسال', + 'delete-all' => 'حذف كل المراجعات', + 'ratingreviews' => ':rating تقيمات & :review باء-الاستعراضات', + 'star' => 'نجم', + 'percentage' => ':percentage %', + 'id-star' => 'نجم' + ], + + 'customer' => [ + 'signup-text' => [ + 'account_exists' => 'لديك حساب؟', + 'title' => 'تسجيل الدخول' + ], + + 'signup-form' => [ + 'page-title' => 'حساب جديد', + 'title' => 'حساب جديد', + 'firstname' => 'الاسم الأول', + 'lastname' => 'الاسم الأخير', + 'email' => 'البريد الإلكتروني', + 'password' => 'كلمة الدخول', + 'confirm_pass' => 'تأكيد كلمة الدخول', + 'button_title' => 'تسجيل حساب جديد', + 'agree' => 'موافق', + 'terms' => 'الشروط', + 'conditions' => 'الشروط', + 'using' => 'باستخدام هذا الموقع', + 'agreement' => 'اتفاق', + 'success' => 'الحساب أنشئ بنجاح, تم إرسال بريد إلكتروني إلى حسابك للتحقق', + 'success-verify-email-not-sent' => 'الحساب أنشئ بنجاح, لكن البريد الإلكتروني لم يتم إرساله', + 'failed' => 'خطأ! لا يمكن إنشاء حسابك ، حاول مرة أخرى لاحقا', + 'already-verified' => 'حسابك تم التحقق منه بالفعل أو الرجاء محاولة إرسال بريد إلكتروني جديد للتحقق مرة أخرى', + 'verification-not-sent' => 'خطأ! مشكلة في إرسال البريد الإلكتروني للتحقق ، حاول مرة أخرى في وقت لاحق', + 'verification-sent' => 'تم ارسال معلومات التحقق إلى برديك الالكتروني.', + 'verified' => 'تم التحقق من حسابك قم بتسجيل الدخول الآن', + 'verify-failed' => 'لا يمكننا التحقق من بريدك الإلكتروني', + 'dont-have-account' => 'ليس لديك حساب', + ], + + 'login-text' => [ + 'no_account' => 'ليس لديك حساب', + 'title' => 'إنشاء حساب جديد', + ], + + 'login-form' => [ + 'page-title' => 'تسجيل الدخول', + 'title' => 'تسجيل الدخول', + 'email' => 'البريد الإلكتروني', + 'password' => 'كلمة الدخول', + 'forgot_pass' => 'نسيت كلمة الدخول؟', + 'button_title' => 'تسجيل الدخول', + 'remember' => 'تذكريني', + 'footer' => '© 2019 جميع الحقوق محفوظة', + 'invalid-creds' => 'الرجاء التحقق من معلومات الدخول', + 'verify-first' => 'الرجاء قم بتفعيل حسابك.', + 'resend-verification' => 'إعادة إرسال البريد الإلكتروني للتحقق مرة أخرى' + ], + + 'forgot-password' => [ + 'title' => 'استرجع كلمة الدخول', + 'email' => 'البريد الإلكتروني', + 'submit' => 'إسترجاع', + 'page_title' => 'استرجع كلمة الدخول' + ], + + 'reset-password' => [ + 'title' => 'تعيين كلمة الدخول', + 'email' => 'البريد الإلكتروني ', + 'password' => 'كلمة الدخول', + 'confirm-password' => 'تأكيد كلمة الدخول', + 'back-link-title' => 'تسجيل الدخول', + 'submit-btn-title' => 'تعيين كلمة الدخول' + ], + + 'account' => [ + 'dashboard' => 'الملف الشخصي', + 'menu' => 'القائمة', + + 'profile' => [ + 'index' => [ + 'page-title' => 'الملف الشخصي', + 'title' => 'الملف الشخصي', + 'edit' => 'تعديل', + ], + + 'edit-success' => 'جاري تحديث الملف بنجاح', + 'edit-fail' => 'خطأ! الملف الشخصي لا يمكن تحديثه ، رجاء حاول مرة أخرى لاحقا', + 'unmatch' => 'كلمة الدخول القديمة لا تتطابق', + + 'fname' => 'الاسم الأول', + 'lname' => 'الاسم الأخير', + 'gender' => 'نوع الجنس', + 'dob' => 'تاريخ الميلاد', + 'phone' => 'الهاتف', + 'email' => 'البريد الإلكتروني', + 'opassword' => 'كلمة الدخول القديمة', + 'password' => 'كلمة الدخول', + 'cpassword' => 'تأكيد كلمة الدخول', + 'submit' => 'تحديث الملف الشخصي', + + 'edit-profile' => [ + 'title' => 'تعديل الملف الشخصي', + 'page-title' => 'تعديل الملف الشخصي' + ] + ], + + 'address' => [ + 'index' => [ + 'page-title' => 'عنوان العميل', + 'title' => 'العنوان', + 'add' => 'أضف العنوان', + 'edit' => 'تعديل', + 'empty' => 'ليس لديك أي عناوين محفوظة هنا ، من فضلك حاول أن تنشئها بالضغط على الرابط بالأسفل', + 'create' => 'عنوان جديد', + 'delete' => 'احذف', + 'make-default' => 'افتراضي', + 'default' => 'افتراضي', + 'contact' => 'معلومات الإتصال', + 'confirm-delete' => 'هل تريد حقا حذف هذا العنوان؟', + 'default-delete' => 'لا يمكن تغيير العنوان الافتراضي', + 'enter-password' => 'Enter Your Password.', + ], + + 'create' => [ + 'page-title' => 'إضاف عنوان', + 'title' => 'أضف العنوان', + 'address1' => 'العنوان سطر 1', + 'country' => 'البلد', + 'city' => 'المدينة', + 'state' => 'المنطقة/الولاية', + 'select-state' => 'اختر منطقة أو ولاية أو مقاطعة', + 'postcode' => 'الرمز البريدي', + 'phone' => 'الهاتف', + 'submit' => 'احفظ العنوان', + 'success' => 'تم إضافة العنوان بنجاح.', + 'error' => 'لا يمكن إضافة العنوان.' + ], + + 'edit' => [ + 'page-title' => 'تعديل العنوان', + 'title' => 'تعديل العنوان', + 'submit' => 'احفظ العنوان', + 'success' => 'العنوان تم تحديثه بنجاح.' + ], + 'delete' => [ + 'success' => 'تم حذف العنوان بنجاح.', + 'failure' => 'لا يمكن حذف العنوان', + 'wrong-password' => 'Wrong Password !' + ] + ], + + 'order' => [ + 'index' => [ + 'page-title' => 'طلبات العملاء', + 'title' => 'الطلبات', + 'order_id' => 'ترتيب', + 'date' => 'التاريخ', + 'status' => 'الحالة', + 'total' => 'المجموع' + ], + + 'view' => [ + 'page-tile' => 'ترتيب #:order_id', + 'info' => 'معلومات', + 'placed-on' => 'وضع على', + 'products-ordered' => 'المنتجات المطلوبة', + 'invoices' => 'الفواتير', + 'shipments' => 'الشحنات', + 'SKU' => 'SKU', + 'product-name' => 'الاسم', + 'qty' => 'الكمية', + 'item-status' => 'حالة البند', + 'item-ordered' => 'أمر(:qty_ordered)', + 'item-invoice' => '3-الفواتير(:qty_invoiced)', + 'item-shipped' => 'شحنت(:qty_shipped)', + 'item-canceled' => 'ملغاة(:qty_canceled)', + 'item-refunded' => 'Refunded (:qty_refunded)', + 'price' => 'السعر', + 'total' => 'المجموع', + 'subtotal' => 'المجموع الفرعي', + 'shipping-handling' => 'الشحن والتوصيل', + 'tax' => 'الضرائب', + 'discount' => 'تخفيض', + 'tax-percent' => 'نسبة الضرائب', + 'tax-amount' => 'المبلغ الضريبي', + 'discount-amount' => 'مبلغ الخصم', + 'grand-total' => 'المجموع الكلي', + 'total-paid' => 'المجموع المدفوع', + 'total-refunded' => 'مجموع المبالغ المستردة', + 'total-due' => 'المجموع المستحق', + 'shipping-address' => 'عنوان الشحن', + 'billing-address' => 'عنوان الفواتير', + 'shipping-method' => 'طريقة الشحن', + 'payment-method' => 'طريقة الدفع', + 'individual-invoice' => 'فاتورة #:invoice_id', + 'individual-shipment' => 'الشحن #:shipment_id', + 'print' => 'اطبع', + 'invoice-id' => 'رقم الفاتورة', + 'order-id' => 'ترتيب ', + 'order-date' => 'تاريخ الطلب', + 'bill-to' => 'الفاتورة إلى', + 'ship-to' => 'يشحن إلى', + 'contact' => 'معلومات الإتصال', + 'refunds' => 'المسترجع', + 'individual-refund' => 'مسترجع #:refund_id', + 'adjustment-refund' => 'تعديلات عملية الإسترجاع', + 'adjustment-fee' => 'تكلفة تعديلات عملية الإسترجاع' + ] + ], + + 'wishlist' => [ + 'page-title' => 'Customer - Wishlist', + 'title' => 'قائمة الأمنيات', + 'deleteall' => 'احذف الكل', + 'moveall' => 'نقل الكل إلى عربة التوسق', + 'move-to-cart' => 'نقل إلى عربة التسوق', + 'error' => 'لا يمكن إضافة المنتج إلى قائمة الأمنيات ، الرجاء المحاولة لاحقا', + 'add' => 'تم إضافة العنصر بنجاح إلى قائمة الأمنيات', + 'remove' => 'تم حذف العنصر بنجاح من قائمة الأمنيات', + 'moved' => 'تم نقل البند بنجاح إلى قائمة الأمنيات', + 'move-error' => 'لا يمكن نقل العنصر إلى قائمة الأمنيات ، رجاء حاول مرة أخرى لاحقا', + 'success' => 'البند مضاف بنجاح إلى قائمة الأمنيات', + 'failure' => 'لا يمكن إضافة العنصر إلى قائمة الأمنيات ، رجاء حاول مرة أخرى لاحقا', + 'already' => 'العنصر موجود بالفعل في قائمة أمنياتك', + 'removed' => 'البند حذف بنجاح من قائمة الأمنيات', + 'remove-fail' => 'لا يمكن حذف العنصر من قائمة الأماني ، الرجاء المحاولة لاحقا', + 'empty' => 'You do not have any items in your Wishlist', + 'remove-all-success' => 'كل الأشياء من قائمة أمانيك قد أزيلت', + ], + + 'downloadable_products' => [ + 'title' => 'Downloadable Products', + 'order-id' => 'Order Id', + 'date' => 'Date', + 'name' => 'Title', + 'status' => 'Status', + 'pending' => 'Pending', + 'available' => 'Available', + 'expired' => 'Expired', + 'remaining-downloads' => 'Remaining Downloads', + 'unlimited' => 'Unlimited', + 'download-error' => 'Download link has been expired.' + ], + + 'review' => [ + 'index' => [ + 'title' => 'المراجعات', + 'page-title' => 'مراجعات العملاء' + ], + + 'view' => [ + 'page-tile' => 'مراجعة #:id', + ] + ] + ] + ], + + 'products' => [ + 'layered-nav-title' => 'المنتجات', + 'price-label' => 'أقل من', + 'remove-filter-link-title' => 'امسح الكل', + 'sort-by' => 'افرز حسب', + 'from-a-z' => 'من a-z', + 'from-z-a' => 'من ز-أ', + 'newest-first' => 'الأحدث أولا', + 'oldest-first' => 'الأكبر أولا', + 'cheapest-first' => 'الأرخص أولا', + 'expensive-first' => 'الأغلى أولا', + 'show' => 'اعرض', + 'pager-info' => 'عرض :showing of :total Items', + 'description' => 'الوصف', + 'specification' => 'مواصفات', + 'total-reviews' => ':total المراجعات', + 'total-rating' => ':total_rating تقييمات & :total_reviews مراجعات', + 'by' => 'من قبل :name', + 'up-sell-title' => 'وجدنا منتجات أخرى قد ترغب!', + 'reviews-title' => 'المراجعات', + 'write-review-btn' => 'اكتب مراجعة', + 'choose-option' => 'اختر ', + 'sale' => 'بيع', + 'new' => 'جديد', + 'empty' => 'لا توجد منتجات متاحة في هذه الفئة', + 'add-to-cart' => 'أضف إلى العربة', + 'buy-now' => 'اشتر الآن', + 'whoops' => 'خطأ!', + 'quantity' => 'الكمية', + 'in-stock' => 'متوفر', + 'out-of-stock' => 'غير متوفر', + 'view-all' => 'عرض الكل', + 'less-quantity' => 'Quantity can not be less than one.', + 'starting-at' => 'Starting at', + 'customize-options' => 'Customize Options', + 'choose-selection' => 'Choose a selection', + 'your-customization' => 'Your Customization', + 'total-amount' => 'Total Amount', + 'none' => 'None', + 'less-quantity' => 'الكمية لايمكن ان تكون أقل من واحد.' + ], + + // 'reviews' => [ + // 'empty' => 'أنت لم تراجع أي منتج لحد الآن' + // ] + + 'buynow' => [ + 'no-options' => 'رجاء تحديد خيارات قبل شراء هذا المنتج' + ], + + + 'checkout' => [ + 'cart' => [ + 'integrity' => [ + 'missing_fields' =>'إنتهاك سلامة نظام العربة ، بعض الحقول المطلوبة مفقودة', + 'missing_options' =>'إنتهاك سلامة نظام العربة ، الخيارات مفقودة لمنتج قابل للتهيئة', + 'missing_links' => 'Downloadable links are missing for this product.', + 'qty_missing' => 'Atleast one product should have more than 1 quantity.' + ], + 'create-error' => 'صادفت بعض القضايا أثناء صناعة السيارات', + 'title' => 'عربة التسوق', + 'empty' => 'عربة تسوقك فارغة', + 'update-cart' => 'تحديث عربة', + 'continue-shopping' => 'واصل التسوق', + 'proceed-to-checkout' => 'انتقل إلى الخروج', + 'remove' => 'احذف', + 'remove-link' => 'احذف', + 'move-to-wishlist' => 'انقل إلى قائمة الأمنيات', + 'move-to-wishlist-success' => 'نقل العنصر إلى قائمة الأمنيات', + 'move-to-wishlist-error' => 'لا يستطيع انقل عنصر إلى رجاء حاول ثانية لاحقا', + 'add-config-warning' => 'الرجاء اختيار الخيار قبل إضافة إلى العربة', + 'quantity' => [ + 'quantity' => 'الكمية', + 'success' => 'العنصر(ق) من العربة تم تحديثه بنجاح', + 'illegal' => 'الكمية لا يمكن أن تكون أقل من واحد', + 'inventory_warning' => 'الكمية المطلوبة غير متوفرة ، الرجاء المحاولة لاحقا', + 'error' => 'لا يستطيع تحديث عنصر s في الوقت الحالي رجاء حاول ثانية لاحقا' + ], + 'item' => [ + 'error_remove' => 'لا عناصر لإزالتها من العربة', + 'success' => 'تم بنجاح إضافة العنصر إلى العربة', + 'success-remove' => 'تم إزالة العنصر بنجاح من العربة', + 'error-add' => 'لا يمكن إضافة العنصر إلى العربة ، رجاء حاول مرة أخرى ', + ], + 'quantity-error' => 'الكمية المطلوبة غير متوفرة', + 'cart-subtotal' => 'المجموع الفرعي للمشتريات', + 'cart-remove-action' => 'هل تريد حقا أن تسمح هذا ؟', + 'partial-cart-update' => 'تم تحديث بعض المنتجات.' + ], + + 'onepage' => [ + 'title' => 'الدفع', + 'information' => 'معلومات', + 'shipping' => 'الشحن', + 'payment' => 'الدفع', + 'complete' => 'اكتمل', + 'billing-address' => 'عنوان الفواتير', + 'sign-in' => 'تسجيل الدخول', + 'first-name' => 'الاسم الأول', + 'last-name' => 'الاسم الأخير', + 'email' => 'البريد الإلكتروني', + 'address1' => 'العنوان', + 'city' => 'المدينة', + 'state' => 'المنطقة/الولاية', + 'select-state' => 'اختر منطقة أو ولاية أو مقاطعة', + 'postcode' => 'الرمز البريدي ', + 'phone' => 'الهاتف', + 'country' => 'البلد', + 'order-summary' => 'معلومات الطلب', + 'shipping-address' => 'عنوان الشحن', + 'use_for_shipping' => 'إشحن إلى هذا العنوان', + 'continue' => 'إستمرار', + 'shipping-method' => 'طريقة الشحن', + 'payment-information' => 'معلومات الدفع', + 'payment-method' => 'طريقة الدفع', + 'summary' => 'المعلومات', + 'price' => 'السعر', + 'quantity' => 'الكمية', + 'contact' => 'معلومات الإتصال', + 'place-order' => 'إكمال الطلب' + ], + + 'total' => [ + 'order-summary' => 'معلومات الطلب', + 'sub-total' => 'العناصر', + 'grand-total' => 'المجموع الكلي', + 'delivery-charges' => 'رسوم التسليم', + 'tax' => 'الضرائب', + 'discount' => 'التخفيض', + 'price' => 'السعر ' + ], + + 'success' => [ + 'title' => 'تم الدفع بنجاح', + 'thanks' => 'شكرا على طلبك!', + 'order-id-info' => 'رقم الطلب هو #:order_id', + 'info' => 'سنرسل لك بريدا الكترونيا ، تفاصيل طلباتك و معلومات التعقب' + ] + ], + + 'mail' => [ + 'order' => [ + 'subject' => 'تأكيد الطلب الجديد', + 'heading' => 'تأكيد الطلب!', + 'dear' => 'عزيزي :customer_name', + 'greeting' => 'شكرا على طلبك :order_id placed on :created_at', + 'summary' => 'معلومات الطلب', + 'shipping-address' => 'عنوان الشحن', + 'billing-address' => 'عنوان الفواتير', + 'contact' => 'معلومات الإتصال', + 'shipping' => 'الشحن', + 'payment' => 'الدفع', + 'price' => 'السعر', + 'quantity' => 'الكمية', + 'subtotal' => 'المجموع الفرعي', + 'shipping-handling' => 'الشحن والتوصيل', + 'tax' => 'الضرائب', + 'discount' => 'التخفيض', + 'grand-total' => 'المجموع الكلي', + 'final-summary' => 'شكرا لإظهارك إهتمامك بمتجرنا سنرسل لك رقم التتبع بمجرد شحنه', + 'help' => 'إذا كنت بحاجة إلى أي نوع من المساعدة يرجى الاتصال بنا على: support_email', + 'thanks' => 'شكرا!' + ], + + 'invoice' => [ + 'heading' => 'فاتورتك #:invoice_id لطلبك #:order_id', + 'subject' => 'فاتورة لطلبك #:order_id', + 'summary' => 'موجز الفاتورة', + ], + + 'shipment' => [ + 'heading' => 'شحنتك #:shipment_id لطلبك #:order_id', + 'subject' => 'شحنة لطلبك #:order_id', + 'summary' => 'موجز الشحن', + 'carrier' => 'الناقل', + 'tracking-number' => 'رقم التتبع' + ], + + 'refund' => [ + 'heading' => 'المسترجع #:refund_id لطبلك #:order_id', + 'subject' => 'المسترجع لطلبك #:order_id', + 'summary' => 'تفاصيل المسترجع', + 'adjustment-refund' => 'تعديلات عملية الإسترجاع', + 'adjustment-fee' => 'تكلفة تعديلات عملية الإسترجاع' + ], + + 'forget-password' => [ + 'dear' => 'عزيزي :name', + 'info' => 'أنت تستلم هذا البريد الإلكتروني لأننا تلقينا طلب إعادة ضبط كلمة الدخول لحسابك', + 'reset-password' => 'أعد ضبط كلمة الدخول', + 'final-summary' => 'إذا لم تطلب إعادة تعيين كلمة الدخول ، لا إجراء آخر مطلوب', + 'thanks' => 'شكرا!' + ] + ], + + 'webkul' => [ + 'copy-right' => 'حقوق الملكية محفوظة 2019' + ], + + 'response' => [ + 'create-success' => ':name إنشء بنجاح.', + 'update-success' => ':name تم تعديله بنحاح.', + 'delete-success' => ':name تم مسحه بنجاح.', + 'submit-success' => ':name تم الإرسال بنجاح.' + ], +]; \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/lang/en/app.php b/packages/Webkul/Shop/src/Resources/lang/en/app.php new file mode 100755 index 000000000..f4800949c --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/lang/en/app.php @@ -0,0 +1,661 @@ + 'Suspicious activity found!!!', + 'nothing-to-delete' => 'Nothing to delete', + + 'layouts' => [ + 'my-account' => 'My Account', + 'profile' => 'Profile', + 'address' => 'Address', + 'reviews' => 'Reviews', + 'wishlist' => 'Wishlist', + 'orders' => 'Orders', + 'downloadable-products' => 'Downloadable Products', + ], + + 'common' => [ + 'error' => 'Something went wrong, please try again later.', + 'no-result-found' => 'We could not find any records.' + ], + + 'home' => [ + 'page-title' => config('app.name') . ' - Home', + 'featured-products' => 'Featured Products', + 'new-products' => 'New Products', + 'verify-email' => 'Verify your email account', + 'resend-verify-email' => 'Resend Verification Email' + ], + + 'header' => [ + 'title' => 'Account', + 'dropdown-text' => 'Manage Cart, Orders & Wishlist', + 'sign-in' => 'Sign In', + 'sign-up' => 'Sign Up', + 'account' => 'Account', + 'cart' => 'Cart', + 'profile' => 'Profile', + 'wishlist' => 'Wishlist', + 'cart' => 'Cart', + 'logout' => 'Logout', + 'search-text' => 'Search products here' + ], + + 'minicart' => [ + 'view-cart' => 'View Shopping Cart', + 'checkout' => 'Checkout', + 'cart' => 'Cart', + 'zero' => '0' + ], + + 'footer' => [ + 'subscribe-newsletter' => 'Subscribe Newsletter', + 'subscribe' => 'Subscribe', + 'locale' => 'Locale', + 'currency' => 'Currency', + ], + + 'subscription' => [ + 'unsubscribe' => 'Unsubcribe', + 'subscribe' => 'Subscribe', + 'subscribed' => 'You are now subscribed to subscription emails.', + 'not-subscribed' => 'You can not be subscribed to subscription emails, please try again later.', + 'already' => 'You are already subscribed to our subscription list.', + 'unsubscribed' => 'You are unsubscribed from subscription mails.', + 'already-unsub' => 'You are already unsubscribed.', + 'not-subscribed' => 'Error! Mail can not be sent currently, please try again later.' + ], + + 'search' => [ + 'no-results' => 'No Results Found', + 'page-title' => config('app.name') . ' - Search', + 'found-results' => 'Search Results Found', + 'found-result' => 'Search Result Found' + ], + + 'reviews' => [ + 'title' => 'Title', + 'add-review-page-title' => 'Add Review', + 'write-review' => 'Write a review', + 'review-title' => 'Give your review a title', + 'product-review-page-title' => 'Product Review', + 'rating-reviews' => 'Rating & Reviews', + 'submit' => 'SUBMIT', + 'delete-all' => 'All Reviews has deleted Succesfully', + 'ratingreviews' => ':rating Ratings & :review Reviews', + 'star' => 'Star', + 'percentage' => ':percentage %', + 'id-star' => 'star', + 'name' => 'Name' + ], + + 'customer' => [ + 'signup-text' => [ + 'account_exists' => 'Already have an account', + 'title' => 'Sign In' + ], + + 'signup-form' => [ + 'page-title' => 'Create New Customer Account', + 'title' => 'Sign Up', + 'firstname' => 'First Name', + 'lastname' => 'Last Name', + 'email' => 'Email', + 'password' => 'Password', + 'confirm_pass' => 'Confirm Password', + 'button_title' => 'Register', + 'agree' => 'Agree', + 'terms' => 'Terms', + 'conditions' => 'Conditions', + 'using' => 'by using this website', + 'agreement' => 'Agreement', + 'success' => 'Account created successfully.', + 'success-verify' => 'Account created successfully, an e-mail has been sent for verification.', + 'success-verify-email-unsent' => 'Account created successfully, but verification e-mail unsent.', + 'failed' => 'Error! Can not create your account, pleae try again later.', + 'already-verified' => 'Your account is already verified Or please try sending a new verification email again.', + 'verification-not-sent' => 'Error! Problem in sending verification email, please try again later.', + 'verification-sent' => 'Verification email sent', + 'verified' => 'Your account has been verified, try to login now.', + 'verify-failed' => 'We cannot verify your mail account.', + 'dont-have-account' => 'You do not have account with us.', + 'success' => 'Account Created Successfully', + 'success-verify' => 'Account Created Successfully, an e-mail has been sent for verification.', + 'success-verify-email-unsent' => 'Account created successfully, but verification e-mail unsent', + 'failed' => 'Error! Cannot Create Your Account, Try Again Later', + 'already-verified' => 'Your Account is already verified Or Please Try Sending A New Verification Email Again', + 'verification-not-sent' => 'Error! Problem In Sending Verification Email, Try Again Later', + 'verification-sent' => 'Verification Email Sent', + 'verified' => 'Your Account Has Been Verified, Try To Login Now', + 'verify-failed' => 'We Cannot Verify Your Mail Account', + 'dont-have-account' => 'You Do Not Have Account With Us', + 'customer-registration' => 'Customer Registered Successfully' + ], + + 'login-text' => [ + 'no_account' => 'Do not have account', + 'title' => 'Sign Up', + ], + + 'login-form' => [ + 'page-title' => 'Customer Login', + 'title' => 'Sign In', + 'email' => 'Email', + 'password' => 'Password', + 'forgot_pass' => 'Forgot Password?', + 'button_title' => 'Sign In', + 'remember' => 'Remember Me', + 'footer' => '© Copyright :year Webkul Software, All rights reserved', + 'invalid-creds' => 'Please check your credentials and try again.', + 'verify-first' => 'Verify your email account first.', + 'not-activated' => 'Your activation seeks admin approval', + 'resend-verification' => 'Resend verification mail again' + ], + + 'forgot-password' => [ + 'title' => 'Recover Password', + 'email' => 'Email', + 'submit' => 'Send Password Reset Email', + 'page_title' => 'Forgot your password ?' + ], + + 'reset-password' => [ + 'title' => 'Reset Password', + 'email' => 'Registered Email', + 'password' => 'Password', + 'confirm-password' => 'Confirm Password', + 'back-link-title' => 'Back to Sign In', + 'submit-btn-title' => 'Reset Password' + ], + + 'account' => [ + 'dashboard' => 'Edit Profile', + 'menu' => 'Menu', + + 'profile' => [ + 'index' => [ + 'page-title' => 'Profile', + 'title' => 'Profile', + 'edit' => 'Edit', + ], + + 'edit-success' => 'Profile updated successfully.', + 'edit-fail' => 'Error! Profile cannot be updated, please try again later.', + 'unmatch' => 'The old password does not match.', + + 'fname' => 'First Name', + 'lname' => 'Last Name', + 'gender' => 'Gender', + 'dob' => 'Date Of Birth', + 'phone' => 'Phone', + 'email' => 'Email', + 'opassword' => 'Old Password', + 'password' => 'Password', + 'cpassword' => 'Confirm Password', + 'submit' => 'Update Profile', + + 'edit-profile' => [ + 'title' => 'Edit Profile', + 'page-title' => 'Edit Profile Form' + ] + ], + + 'address' => [ + 'index' => [ + 'page-title' => 'Address', + 'title' => 'Address', + 'add' => 'Add Address', + 'edit' => 'Edit', + 'empty' => 'You do not have any saved addresses here, please try to create it by clicking the link below', + 'create' => 'Create Address', + 'delete' => 'Delete', + 'make-default' => 'Make Default', + 'default' => 'Default', + 'contact' => 'Contact', + 'confirm-delete' => 'Do you really want to delete this address?', + 'default-delete' => 'Default address cannot be changed.', + 'enter-password' => 'Enter Your Password.', + ], + + 'create' => [ + 'page-title' => 'Add Address Form', + 'title' => 'Add Address', + 'street-address' => 'Street Address', + 'country' => 'Country', + 'state' => 'State', + 'select-state' => 'Select a region, state or province', + 'city' => 'City', + 'postcode' => 'Postal Code', + 'phone' => 'Phone', + 'submit' => 'Save Address', + 'success' => 'Address have been successfully added.', + 'error' => 'Address cannot be added.' + ], + + 'edit' => [ + 'page-title' => 'Edit Address', + 'title' => 'Edit Address', + 'street-address' => 'Street Address', + 'submit' => 'Save Address', + 'success' => 'Address updated successfully.', + ], + 'delete' => [ + 'success' => 'Address successfully deleted', + 'failure' => 'Address cannot be deleted', + 'wrong-password' => 'Wrong Password !' + ] + ], + + 'order' => [ + 'index' => [ + 'page-title' => 'Orders', + 'title' => 'Orders', + 'order_id' => 'Order ID', + 'date' => 'Date', + 'status' => 'Status', + 'total' => 'Total', + 'order_number' => 'Order Number' + ], + + 'view' => [ + 'page-tile' => 'Order #:order_id', + 'info' => 'Information', + 'placed-on' => 'Placed On', + 'products-ordered' => 'Products Ordered', + 'invoices' => 'Invoices', + 'shipments' => 'Shipments', + 'SKU' => 'SKU', + 'product-name' => 'Name', + 'qty' => 'Qty', + 'item-status' => 'Item Status', + 'item-ordered' => 'Ordered (:qty_ordered)', + 'item-invoice' => 'Invoiced (:qty_invoiced)', + 'item-shipped' => 'shipped (:qty_shipped)', + 'item-canceled' => 'Canceled (:qty_canceled)', + 'item-refunded' => 'Refunded (:qty_refunded)', + 'price' => 'Price', + 'total' => 'Total', + 'subtotal' => 'Subtotal', + 'shipping-handling' => 'Shipping & Handling', + 'tax' => 'Tax', + 'discount' => 'Discount', + 'tax-percent' => 'Tax Percent', + 'tax-amount' => 'Tax Amount', + 'discount-amount' => 'Discount Amount', + 'grand-total' => 'Grand Total', + 'total-paid' => 'Total Paid', + 'total-refunded' => 'Total Refunded', + 'total-due' => 'Total Due', + 'shipping-address' => 'Shipping Address', + 'billing-address' => 'Billing Address', + 'shipping-method' => 'Shipping Method', + 'payment-method' => 'Payment Method', + 'individual-invoice' => 'Invoice #:invoice_id', + 'individual-shipment' => 'Shipment #:shipment_id', + 'print' => 'Print', + 'invoice-id' => 'Invoice Id', + 'order-id' => 'Order Id', + 'order-date' => 'Order Date', + 'bill-to' => 'Bill to', + 'ship-to' => 'Ship to', + 'contact' => 'Contact', + 'refunds' => 'Refunds', + 'individual-refund' => 'Refund #:refund_id', + 'adjustment-refund' => 'Adjustment Refund', + 'adjustment-fee' => 'Adjustment Fee', + ] + ], + + 'wishlist' => [ + 'page-title' => 'Wishlist', + 'title' => 'Wishlist', + 'deleteall' => 'Delete All', + 'moveall' => 'Move All Products To Cart', + 'move-to-cart' => 'Move To Cart', + 'error' => 'Cannot add product to wishlist due to unknown problems, please checkback later', + 'add' => 'Item successfully added to wishlist', + 'remove' => 'Item successfully removed from wishlist', + 'moved' => 'Item successfully moved To cart', + 'option-missing' => 'Product options are missing, so item can not be moved to the wishlist.', + 'move-error' => 'Item cannot be moved to wishlist, Please try again later', + 'success' => 'Item successfully added to wishlist', + 'failure' => 'Item cannot be added to wishlist, Please try again later', + 'already' => 'Item already present in your wishlist', + 'removed' => 'Item successfully removed from wishlist', + 'remove-fail' => 'Item cannot Be removed from wishlist, Please try again later', + 'empty' => 'You do not have any items in your wishlist', + 'remove-all-success' => 'All the items from your wishlist have been removed', + ], + + 'downloadable_products' => [ + 'title' => 'Downloadable Products', + 'order-id' => 'Order Id', + 'date' => 'Date', + 'name' => 'Title', + 'status' => 'Status', + 'pending' => 'Pending', + 'available' => 'Available', + 'expired' => 'Expired', + 'remaining-downloads' => 'Remaining Downloads', + 'unlimited' => 'Unlimited', + 'download-error' => 'Download link has been expired.' + ], + + 'review' => [ + 'index' => [ + 'title' => 'Reviews', + 'page-title' => 'Reviews' + ], + + 'view' => [ + 'page-tile' => 'Review #:id', + ] + ] + ] + ], + + 'products' => [ + 'layered-nav-title' => 'Shop By', + 'price-label' => 'As low as', + 'remove-filter-link-title' => 'Clear All', + 'sort-by' => 'Sort By', + 'from-a-z' => 'From A-Z', + 'from-z-a' => 'From Z-A', + 'newest-first' => 'Newest First', + 'oldest-first' => 'Oldest First', + 'cheapest-first' => 'Cheapest First', + 'expensive-first' => 'Expensive First', + 'show' => 'Show', + 'pager-info' => 'Showing :showing of :total Items', + 'description' => 'Description', + 'specification' => 'Specification', + 'total-reviews' => ':total Reviews', + 'total-rating' => ':total_rating Ratings & :total_reviews Reviews', + 'by' => 'By :name', + 'up-sell-title' => 'We found other products you might like!', + 'related-product-title' => 'Related Products', + 'cross-sell-title' => 'More choices', + 'reviews-title' => 'Ratings & Reviews', + 'write-review-btn' => 'Write Review', + 'choose-option' => 'Choose an option', + 'sale' => 'Sale', + 'new' => 'New', + 'empty' => 'No products available in this category', + 'add-to-cart' => 'Add To Cart', + 'buy-now' => 'Buy Now', + 'whoops' => 'Whoops!', + 'quantity' => 'Quantity', + 'in-stock' => 'In Stock', + 'out-of-stock' => 'Out Of Stock', + 'view-all' => 'View All', + 'select-above-options' => 'Please select above options first.', + 'less-quantity' => 'Quantity can not be less than one.', + 'samples' => 'Samples', + 'links' => 'Links', + 'sample' => 'Sample', + 'name' => 'Name', + 'qty' => 'Qty', + 'starting-at' => 'Starting at', + 'customize-options' => 'Customize Options', + 'choose-selection' => 'Choose a selection', + 'your-customization' => 'Your Customization', + 'total-amount' => 'Total Amount', + 'none' => 'None' + ], + + // 'reviews' => [ + // 'empty' => 'You Have Not Reviewed Any Of Product Yet' + // ] + + 'buynow' => [ + 'no-options' => 'Please select options before buying this product.' + ], + + 'checkout' => [ + 'cart' => [ + 'integrity' => [ + 'missing_fields' => 'Some required fields missing for this product.', + 'missing_options' => 'Options are missing for this product.', + 'missing_links' => 'Downloadable links are missing for this product.', + 'qty_missing' => 'Atleast one product should have more than 1 quantity.' + ], + 'create-error' => 'Encountered some issue while making cart instance.', + 'title' => 'Shopping Cart', + 'empty' => 'Your shopping cart is empty', + 'update-cart' => 'Update Cart', + 'continue-shopping' => 'Continue Shopping', + 'proceed-to-checkout' => 'Proceed To Checkout', + 'remove' => 'Remove', + 'remove-link' => 'Remove', + 'move-to-wishlist' => 'Move to Wishlist', + 'move-to-wishlist-success' => 'Item moved to wishlist successfully.', + 'move-to-wishlist-error' => 'Cannot move item to wishlist, please try again later.', + 'add-config-warning' => 'Please select option before adding to cart.', + 'quantity' => [ + 'quantity' => 'Quantity', + 'success' => 'Cart Item(s) successfully updated.', + 'illegal' => 'Quantity cannot be lesser than one.', + 'inventory_warning' => 'The requested quantity is not available, please try again later.', + 'error' => 'Cannot update the item(s) at the moment, please try again later.' + ], + + 'item' => [ + 'error_remove' => 'No items to remove from the cart.', + 'success' => 'Item was successfully added to cart.', + 'success-remove' => 'Item was removed successfully from the cart.', + 'error-add' => 'Item cannot be added to cart, please try again later.', + ], + 'quantity-error' => 'Requested quantity is not available.', + 'cart-subtotal' => 'Cart Subtotal', + 'cart-remove-action' => 'Do you really want to do this ?', + 'partial-cart-update' => 'Only some of the product(s) were updated', + 'link-missing' => '' + ], + + 'onepage' => [ + 'title' => 'Checkout', + 'information' => 'Information', + 'shipping' => 'Shipping', + 'payment' => 'Payment', + 'complete' => 'Complete', + 'billing-address' => 'Billing Address', + 'sign-in' => 'Sign In', + 'first-name' => 'First Name', + 'last-name' => 'Last Name', + 'email' => 'Email', + 'address1' => 'Street Address', + 'city' => 'City', + 'state' => 'State', + 'select-state' => 'Select a region, state or province', + 'postcode' => 'Zip/Postcode', + 'phone' => 'Telephone', + 'country' => 'Country', + 'order-summary' => 'Order Summary', + 'shipping-address' => 'Shipping Address', + 'use_for_shipping' => 'Ship to this address', + 'continue' => 'Continue', + 'shipping-method' => 'Select Shipping Method', + 'payment-methods' => 'Select Payment Method', + 'payment-method' => 'Payment Method', + 'summary' => 'Order Summary', + 'price' => 'Price', + 'quantity' => 'Quantity', + 'billing-address' => 'Billing Address', + 'shipping-address' => 'Shipping Address', + 'contact' => 'Contact', + 'place-order' => 'Place Order', + 'new-address' => 'Add New Address', + 'save_as_address' => 'Save as Address', + 'apply-coupon' => 'Apply Coupon', + 'amt-payable' => 'Amount Payable', + 'got' => 'Got', + 'free' => 'Free', + 'coupon-used' => 'Coupon Used', + 'applied' => 'Applied', + 'back' => 'Back', + 'cash-desc' => 'Cash On Delivery', + 'money-desc' => 'Money Transfer', + 'paypal-desc' => 'Paypal Standard', + 'free-desc' => 'This is a free shipping', + 'flat-desc' => 'This is a flat rate', + 'password' => 'Password', + 'login-exist-message' => 'You already have an account with us, Sign in or continue as guest.', + 'enter-coupon-code' => 'Enter Coupon Code' + ], + + 'total' => [ + 'order-summary' => 'Order Summary', + 'sub-total' => 'Items', + 'grand-total' => 'Grand Total', + 'delivery-charges' => 'Delivery Charges', + 'tax' => 'Tax', + 'discount' => 'Discount', + 'price' => 'price', + 'disc-amount' => 'Amount discounted', + 'new-grand-total' => 'New Grand Total', + 'coupon' => 'Coupon', + 'coupon-applied' => 'Applied Coupon', + 'remove-coupon' => 'Remove Coupon', + 'cannot-apply-coupon' => 'Cannot Apply Coupon', + 'invalid-coupon' => 'Coupon code is invalid.', + 'success-coupon' => 'Coupon code applied successfully.', + 'coupon-apply-issue' => 'Coupon code can\'t be applied.' + ], + + 'success' => [ + 'title' => 'Order successfully placed', + 'thanks' => 'Thank you for your order!', + 'order-id-info' => 'Your order id is #:order_id', + 'info' => 'We will email you, your order details and tracking information' + ] + ], + + 'mail' => [ + 'order' => [ + 'subject' => 'New Order Confirmation', + 'heading' => 'Order Confirmation!', + 'dear' => 'Dear :customer_name', + 'dear-admin' => 'Dear :admin_name', + 'greeting' => 'Thanks for your Order :order_id placed on :created_at', + 'greeting-admin' => 'Order Id :order_id placed on :created_at', + 'summary' => 'Summary of Order', + 'shipping-address' => 'Shipping Address', + 'billing-address' => 'Billing Address', + 'contact' => 'Contact', + 'shipping' => 'Shipping Method', + 'payment' => 'Payment Method', + 'price' => 'Price', + 'quantity' => 'Quantity', + 'subtotal' => 'Subtotal', + 'shipping-handling' => 'Shipping & Handling', + 'tax' => 'Tax', + 'discount' => 'Discount', + 'grand-total' => 'Grand Total', + 'final-summary' => 'Thanks for showing your interest in our store we will send you tracking number once it shipped', + 'help' => 'If you need any kind of help please contact us at :support_email', + 'thanks' => 'Thanks!', + 'cancel' => [ + 'subject' => 'Order Cancel Confirmation', + 'heading' => 'Order Cancelled', + 'dear' => 'Dear :customer_name', + 'greeting' => 'You Order with order id #:order_id placed on :created_at has been cancelled', + 'summary' => 'Summary of Order', + 'shipping-address' => 'Shipping Address', + 'billing-address' => 'Billing Address', + 'contact' => 'Contact', + 'shipping' => 'Shipping Method', + 'payment' => 'Payment Method', + 'subtotal' => 'Subtotal', + 'shipping-handling' => 'Shipping & Handling', + 'tax' => 'Tax', + 'discount' => 'Discount', + 'grand-total' => 'Grand Total', + 'final-summary' => 'Thanks for showing your interest in our store', + 'help' => 'If you need any kind of help please contact us at :support_email', + 'thanks' => 'Thanks!', + ] + ], + + 'invoice' => [ + 'heading' => 'Your invoice #:invoice_id for Order #:order_id', + 'subject' => 'Invoice for your order #:order_id', + 'summary' => 'Summary of Invoice', + ], + + 'shipment' => [ + 'heading' => 'Shipment #:shipment_id has been generated for Order #:order_id', + 'inventory-heading' => 'New shipment #:shipment_id had been generated for Order #:order_id', + 'subject' => 'Shipment for your order #:order_id', + 'inventory-subject' => 'New shipment had been generated for Order #:order_id', + 'summary' => 'Summary of Shipment', + 'carrier' => 'Carrier', + 'tracking-number' => 'Tracking Number', + 'greeting' => 'An order :order_id has been placed on :created_at', + ], + + 'refund' => [ + 'heading' => 'Your Refund #:refund_id for Order #:order_id', + 'subject' => 'Refund for your order #:order_id', + 'summary' => 'Summary of Refund', + 'adjustment-refund' => 'Adjustment Refund', + 'adjustment-fee' => 'Adjustment Fee' + ], + + 'forget-password' => [ + 'subject' => 'Customer Reset Password', + 'dear' => 'Dear :name', + 'info' => 'You are receiving this email because we received a password reset request for your account', + 'reset-password' => 'Reset Password', + 'final-summary' => 'If you did not request a password reset, no further action is required', + 'thanks' => 'Thanks!' + ], + + 'customer' => [ + 'new' => [ + 'dear' => 'Dear :customer_name', + 'username-email' => 'UserName/Email', + 'subject' => 'New Customer Registration', + 'password' => 'Password', + 'summary' => 'Your account has been created. + Your account details are below: ', + 'thanks' => 'Thanks!', + ], + + 'registration' => [ + 'subject' => 'New Customer Registration', + 'customer-registration' => 'Customer Registered Successfully', + 'dear' => 'Dear :customer_name', + 'greeting' => 'Welcome and thank you for registering with us!', + 'summary' => 'Your account has now been created successfully and you can login using your email address and password credentials. Upon logging in, you will be able to access other services including reviewing past orders, wishlists and editing your account information.', + 'thanks' => 'Thanks!', + ], + + 'verification' => [ + 'heading' => config('app.name') . ' - Email Verification', + 'subject' => 'Verification Mail', + 'verify' => 'Verify Your Account', + 'summary' => 'This is the mail to verify that the email address you entered is yours. + Kindly click the Verify Your Account button below to verify your account.' + ], + + 'subscription' => [ + 'subject' => 'Subscription Email', + 'greeting' => ' Welcome to ' . config('app.name') . ' - Email Subscription', + 'unsubscribe' => 'Unsubscribe', + 'summary' => 'Thanks for putting me into your inbox. It’s been a while since you’ve read ' . config('app.name') . ' email, and we don’t want to overwhelm your inbox. If you still do not want to receive + the latest email marketing news then for sure click the button below.' + ] + ] + ], + + 'webkul' => [ + 'copy-right' => '© Copyright :year Webkul Software, All rights reserved', + ], + + 'response' => [ + 'create-success' => ':name created successfully.', + 'update-success' => ':name updated successfully.', + 'delete-success' => ':name deleted successfully.', + 'submit-success' => ':name submitted successfully.' + ], +]; diff --git a/packages/Webkul/Shop/src/Resources/lang/es/app.php b/packages/Webkul/Shop/src/Resources/lang/es/app.php new file mode 100644 index 000000000..e25650e5e --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/lang/es/app.php @@ -0,0 +1,610 @@ + 'Actividad sospechosa detectada!!!', + 'nothing-to-delete' => 'Nada que eliminar', + + 'layouts' => [ + 'my-account' => 'Mi Cuenta', + 'profile' => 'Perfil', + 'address' => 'Dirección', + 'reviews' => 'Opiniones', + 'wishlist' => 'Lista de deseos', + 'orders' => 'Pedidos', + ], + + 'common' => [ + 'error' => 'Algo ha ido mal, por favor prueba más tarde.' + ], + + 'home' => [ + 'page-title' => config('app.name') . ' - Inicio', + 'featured-products' => 'Productos Destacados', + 'new-products' => 'Nuevos Productos', + 'verify-email' => 'Verifica tu cuenta de correo', + 'resend-verify-email' => 'Reenviar correo de verificación' + ], + + 'header' => [ + 'title' => 'Cuenta', + 'dropdown-text' => 'Gestionar carrito, pedidos y lista de deseos', + 'sign-in' => 'Entrar', + 'sign-up' => 'Regístrate', + 'account' => 'Cuenta', + 'cart' => 'Cesta', + 'profile' => 'Perfil', + 'wishlist' => 'Lista de deseos', + 'logout' => 'Salir', + 'search-text' => 'Buscar productos' + ], + + 'minicart' => [ + 'view-cart' => 'Ver Cesta', + 'checkout' => 'Hacer pedido', + 'cart' => 'Cesta', + 'zero' => '0' + ], + + 'footer' => [ + 'subscribe-newsletter' => 'Suscríbete a la Newsletter', + 'subscribe' => 'Suscríbete', + 'locale' => 'Idioma', + 'currency' => 'Moneda', + ], + + 'subscription' => [ + 'unsubscribe' => 'Darse de baja', + 'subscribe' => 'Suscríbete', + 'subscribed' => 'Te has suscrito a la newsletter', + 'not-subscribed' => 'No se pudo suscribir a la newsletter, inténtalo de nuevo más tarde', + 'already' => 'Ya estás suscrito', + 'unsubscribed' => 'Te has desuscrito', + 'already-unsub' => 'Ya estás desuscrito', + 'not-subscribed' => '¡Error! El correo no se puede enviar actualmente, inténtalo de nuevo más tarde' + ], + + 'search' => [ + 'no-results' => 'No hay resultados', + 'page-title' => 'Búsqueda', + 'found-results' => 'No hay resultados de búsqueda', + 'found-result' => 'Resultados de la búsqueda' + ], + + 'reviews' => [ + 'title' => 'Título', + 'add-review-page-title' => 'Añadir opinión', + 'write-review' => 'Escribir una opinión', + 'review-title' => 'Título de la opinión', + 'product-review-page-title' => 'Opinión del producto', + 'rating-reviews' => 'Calificación y opiniones', + 'submit' => 'ENVIAR', + 'delete-all' => 'Todas las opiniones se han eliminado con éxito', + 'ratingreviews' => ':rating calificaciones & :review opiniones', + 'star' => 'Star', + 'percentage' => ':percentage %', + 'id-star' => 'star', + 'name' => 'Nombre' + ], + + 'customer' => [ + 'signup-text' => [ + 'account_exists' => 'Ya tienes una cuenta', + 'title' => 'Entrar' + ], + + 'signup-form' => [ + 'page-title' => 'Cliente - Formulario de registro', + 'title' => 'Regístrate', + 'firstname' => 'Nombre', + 'lastname' => 'Apellido', + 'email' => 'Email', + 'password' => 'Contraseña', + 'confirm_pass' => 'Confirma la contraseña', + 'button_title' => 'Registro', + 'agree' => 'De acuerdo', + 'terms' => 'Términos', + 'conditions' => 'Condiciones', + 'using' => 'Mediante el uso de este sitio web', + 'agreement' => 'Acuerdo', + 'success' => 'Cuenta creada exitosamente', + 'success-verify' => 'Cuenta creada con éxito, se ha enviado un correo electrónico para su verificación.', + 'success-verify-email-unsent' => 'Cuenta creada correctamente, pero no se envió el correo electrónico de verificación', + 'failed' => '¡Error! No se puede crear su cuenta, intente nuevamente más tarde', + 'already-verified' => 'Su cuenta ya está verificada o intente enviar un nuevo correo electrónico de verificación nuevamente', + 'verification-not-sent' => '¡Error! Problema al enviar el correo electrónico de verificación, intente nuevamente más tarde', + 'verification-sent' => 'El correo de verificación ha sido enviado', + 'verified' => 'Su cuenta ha sido verificada, intente iniciar sesión ahora', + 'verify-failed' => 'No podemos verificar su cuenta de correo', + 'dont-have-account' => 'No tienes cuenta con nosotros', + 'customer-registration' => 'Registrado con éxito' + ], + + 'login-text' => [ + 'no_account' => 'No tienes una cuenta', + 'title' => 'Regístrate', + ], + + 'login-form' => [ + 'page-title' => 'Cliente-Formulario de registro', + 'title' => 'Entrar', + 'email' => 'Correo electrónico', + 'password' => 'Contraseña', + 'forgot_pass' => '¿Has olvidado la contraseña?', + 'button_title' => 'Entrar', + 'remember' => 'Recuérdame', + 'footer' => '© Copyright :year Webkul Software, All rights reserved', + 'invalid-creds' => 'Por favor, verifica tus credenciales e intenta de nuevo', + 'verify-first' => 'Verifica tu correo electrónico primero', + 'not-activated' => 'La activación de la cuenta será aprovada por el administrador', + 'resend-verification' => 'Se ha reenviado un correo de verificación' + ], + + 'forgot-password' => [ + 'title' => 'Recuperar contraseña', + 'email' => 'Correo electrónico', + 'submit' => 'ENVIAR', + 'page_title' => 'Cliente - Formulario de contraseña olvidada' + ], + + 'reset-password' => [ + 'title' => 'Restablecer contraseña', + 'email' => 'Correo registrado', + 'password' => 'Contraseña', + 'confirm-password' => 'Confirma la contraseña', + 'back-link-title' => 'Reinicia sesión', + 'submit-btn-title' => 'Restablecer contraseña' + ], + + 'account' => [ + 'dashboard' => 'Cliente - Editar perfil', + 'menu' => 'Menu', + + 'profile' => [ + 'index' => [ + 'page-title' => 'Cliente - Perfil', + 'title' => 'Perfil', + 'edit' => 'Editar', + ], + + 'edit-success' => 'Perfil actualizado exitosamente', + 'edit-fail' => '¡Error! El perfil no puede ser actualizado, por favor, inténtalo más tarde', + 'unmatch' => 'La anterior contraseña no coincide', + + 'fname' => 'Nombre', + 'lname' => 'Apellido', + 'gender' => 'Género', + 'dob' => 'Fecha de nacimiento', + 'phone' => 'Móvil', + 'email' => 'Correo electrónico', + 'opassword' => 'Contraseña anterior', + 'password' => 'Contraseña', + 'cpassword' => 'Confirma la contraseña', + 'submit' => 'Perfil actualizado', + + 'edit-profile' => [ + 'title' => 'Editar Perfil', + 'page-title' => 'Cliente - Formulario de edición de perfil' + ] + ], + + 'address' => [ + 'index' => [ + 'page-title' => 'Cliente - Dirección', + 'title' => 'Dirección', + 'add' => 'Añadir Dirección', + 'edit' => 'Editar', + 'empty' => 'No tienes ninguna dirección guardada, por favor, crea una clicando en el enlace de abajo', + 'create' => 'Crear Dirección', + 'delete' => 'Eliminar', + 'make-default' => 'Elegir por defecto', + 'default' => 'Por defecto', + 'contact' => 'Contacto', + 'confirm-delete' => '¿Quieres eleminar esta dirección?', + 'default-delete' => 'La dirección por defecto no puede ser cambiada', + 'enter-password' => 'Enter Your Password.', + ], + + 'create' => [ + 'page-title' => 'Cliente - Formulario de dirección', + 'title' => 'Añadir dirección', + 'street-address' => 'Calle', + 'country' => 'País', + 'state' => 'Estado', + 'select-state' => 'Selecciona una región, estado o provincia', + 'city' => 'Ciudad', + 'postcode' => 'Código postal', + 'phone' => 'Teléfono', + 'submit' => 'Guardar dirección', + 'success' => 'La dirección se ha añadido correctamente.', + 'error' => 'La dirección no se puede añadir.' + ], + + 'edit' => [ + 'page-title' => 'Cliente - Editar Dirección', + 'title' => 'Editar Dirección', + 'street-address' => 'Calle', + 'submit' => 'Guardar dirección', + 'success' => 'Dirección actualizada exitosamente.', + ], + 'delete' => [ + 'success' => 'Dirección eliminada correctamente', + 'failure' => 'La dirección no puede ser eliminada', + 'wrong-password' => 'Wrong Password !' + ] + ], + + 'order' => [ + 'index' => [ + 'page-title' => 'Cliente - Pedidos', + 'title' => 'Pedidos', + 'order_id' => 'ID Pedido', + 'date' => 'Fecha', + 'status' => 'Estado', + 'total' => 'Total', + 'order_number' => 'Número de pedido' + ], + + 'view' => [ + 'page-tile' => 'Pedido #:order_id', + 'info' => 'Información', + 'placed-on' => 'Ubicación', + 'products-ordered' => 'Productos pedidos', + 'invoices' => 'Facturas', + 'shipments' => 'Envíos', + 'SKU' => 'SKU', + 'product-name' => 'Nombre', + 'qty' => 'Qty', + 'item-status' => 'Estado Item', + 'item-ordered' => 'Ordenado (:qty_ordered)', + 'item-invoice' => 'Facturado (:qty_invoiced)', + 'item-shipped' => 'Enviado (:qty_shipped)', + 'item-canceled' => 'Cancelado (:qty_canceled)', + 'price' => 'Precio', + 'total' => 'Total', + 'subtotal' => 'Subtotal', + 'shipping-handling' => 'Envío y Manipulación', + 'tax' => 'Impuesto', + 'discount' => 'Descuento', + 'tax-percent' => 'Porcentaje IVA', + 'tax-amount' => 'Cantidad impuesto', + 'discount-amount' => 'Cantidad descontada', + 'grand-total' => 'Total', + 'total-paid' => 'Total Pago', + 'total-refunded' => 'Total Reembolsado', + 'total-due' => 'Total', + 'shipping-address' => 'Dirección de envío', + 'billing-address' => 'Dirección de facturación', + 'shipping-method' => 'Método de envío', + 'payment-method' => 'Forma de pago', + 'individual-invoice' => 'Factura #:invoice_id', + 'individual-shipment' => 'Envío #:shipment_id', + 'print' => 'Imprimir', + 'invoice-id' => 'Factura Id', + 'order-id' => 'Pedido Id', + 'order-date' => 'Fecha pedido', + 'bill-to' => 'Facturar a', + 'ship-to' => 'Envío a', + 'contact' => 'Contacto' + ] + ], + + 'wishlist' => [ + 'page-title' => 'Customer - Wishlist', + 'title' => 'Lista de deseos', + 'deleteall' => 'Eliminar todo', + 'moveall' => 'Mover todos los productos a la cesta', + 'move-to-cart' => 'Mover a la cesta', + 'error' => 'No se puede agregar el producto a la lista de deseos por problemas desconocidos, inténtelo más tarde.', + 'add' => 'Artículo añadido a la lista de deseos', + 'remove' => 'Artículo eliminado de la lista de deseos', + 'moved' => 'Artículo movido a la cesta exitosamente', + 'move-error' => 'El artículo no se puede añadir a la lista de deseos, por favor inténtalo más tarde', + 'success' => 'Artículo añadido a la lista de deseos', + 'failure' => 'El artículo no se puede añadir a la lista de deseos, por favor inténtalo más tarde', + 'already' => 'Este artículo ya está en tu lista de deseos.', + 'removed' => 'Artículo eliminado de la lista de deseos', + 'remove-fail' => 'El artículo no se puede eliminar de la lista de deseos, por favor inténtalo más tarde', + 'empty' => 'No tiene ningún producto en su lista de deseos', + 'remove-all-success' => 'Todos los artículos de su lista de deseos han sido eliminados', + ], + + 'downloadable_products' => [ + 'title' => 'Downloadable Products', + 'order-id' => 'Order Id', + 'date' => 'Date', + 'name' => 'Title', + 'status' => 'Status', + 'pending' => 'Pending', + 'available' => 'Available', + 'expired' => 'Expired', + 'remaining-downloads' => 'Remaining Downloads', + 'unlimited' => 'Unlimited', + 'download-error' => 'Download link has been expired.' + ], + + 'review' => [ + 'index' => [ + 'title' => 'Opiniones', + 'page-title' => 'Cliente - Opiniones' + ], + + 'view' => [ + 'page-tile' => 'Opinión #:id', + ] + ] + ] + ], + + 'products' => [ + 'layered-nav-title' => 'Comprado por', + 'price-label' => 'Tan bajo como', + 'remove-filter-link-title' => 'Limpiar todo', + 'sort-by' => 'Ordenar por', + 'from-a-z' => 'De A-Z', + 'from-z-a' => 'De Z-A', + 'newest-first' => 'Lo más nuevo primero', + 'oldest-first' => 'Lo más antiguo primero', + 'cheapest-first' => 'Lo más barato primero', + 'expensive-first' => 'Lo más caro primero', + 'show' => 'Show', + 'pager-info' => 'Mostrar :showing of :total Items', + 'description' => 'Descripción', + 'specification' => 'Especificaciones', + 'total-reviews' => ':total Reviews', + 'total-rating' => ':total_rating Ratings & :total_reviews Reviews', + 'by' => 'Por :name', + 'up-sell-title' => '¡Hemos encontrado otros productos que te pueden gustar!', + 'related-product-title' => 'Productos relacionados', + 'cross-sell-title' => 'Más opciones', + 'reviews-title' => 'Calificación y Opiniones', + 'write-review-btn' => 'Escribe una valoración', + 'choose-option' => 'Elige una opción', + 'sale' => 'En venta', + 'new' => 'Nuevo', + 'empty' => 'No hay prodcutos disponibles en esta categoría', + 'add-to-cart' => 'Añadir a la cesta', + 'buy-now' => 'Comprar ahora', + 'whoops' => 'Ups!', + 'quantity' => 'Cantidad', + 'in-stock' => 'En estoc', + 'out-of-stock' => 'Sin estoc', + 'view-all' => 'Ver todo', + 'select-above-options' => 'Primero selecciona las opciones de arriba.', + 'less-quantity' => 'La cantidad no debe ser inferior a uno.' + ], + + // 'reviews' => [ + // 'empty' => 'Aún no has valorado ningún producto' + // ] + + 'buynow' => [ + 'no-options' => 'Por favor selecciona las opciones antes de comprar este producto' + ], + + + 'checkout' => [ + 'cart' => [ + 'integrity' => [ + 'missing_fields' =>'Faltan algunos campos requeridos', + 'missing_options' =>'Faltan opciones configurables del producto', + ], + 'create-error' => 'Se encontraron problemas con la cesta de compra', + 'title' => 'Cesta de la compra', + 'empty' => 'Tu cesta está vacía', + 'update-cart' => 'Actualizar cesta', + 'continue-shopping' => 'Seguir comprando', + 'proceed-to-checkout' => 'Continuar con el pago', + 'remove' => 'Eliminar', + 'remove-link' => 'Eliminar', + 'move-to-wishlist' => 'Mover a la lista de deseos', + 'move-to-wishlist-success' => 'Artículo movido a la lista de deseos', + 'move-to-wishlist-error' => 'El artículo no se puede añadir a la lista de deseos, por favor inténtalo más tarde', + 'add-config-warning' => 'Por favor selecciona las opciones antes de añadir a la cesta', + 'quantity' => [ + 'quantity' => 'Cantidad', + 'success' => 'Cesta actualizada exitosamente', + 'illegal' => 'La cantidad no puede ser menor que uno', + 'inventory_warning' => 'La cantidad solicitada no está disponible, inténtelo más tarde', + 'error' => 'No se pueden actualizar los artículos, inténtelo más tarde' + ], + 'item' => [ + 'error_remove' => 'No hay artículos que eliminar en la cesta', + 'success' => 'El artículp se añadió a la cesta', + 'success-remove' => 'El artículo se eliminó de la cesta', + 'error-add' => 'El artículo no se puede añadir a la cesta, inténtelo más tarde', + ], + 'quantity-error' => 'La cantidad solicitada no está disponible', + 'cart-subtotal' => 'Subtotal', + 'cart-remove-action' => '¿Realmente quieres hacer esto?', + 'partial-cart-update' => 'Solo algunos de los productos se han actualizado', + ], + + 'onepage' => [ + 'title' => 'Revisar', + 'information' => 'Información', + 'shipping' => 'Envío', + 'payment' => 'Pago', + 'complete' => 'Completado', + 'billing-address' => 'Dirección de facturación', + 'sign-in' => 'Entrar', + 'first-name' => 'Nombre', + 'last-name' => 'Apellido', + 'email' => 'Correo electrónico', + 'address1' => 'Calle', + 'city' => 'Ciudad', + 'state' => 'Estado', + 'select-state' => 'Selecciona una región, estado o provincia', + 'postcode' => 'Código postal', + 'phone' => 'Teléfono', + 'country' => 'País', + 'order-summary' => 'Resumen del pedido', + 'shipping-address' => 'Dirección de envío', + 'use_for_shipping' => 'Enviar a esta dirección', + 'continue' => 'Continuar', + 'shipping-method' => 'Seleccionar método de envío', + 'payment-methods' => 'Seleccionar forma de pago', + 'payment-method' => 'Forma de pago', + 'summary' => 'Resumen del pedido', + 'price' => 'Precio', + 'quantity' => 'Cantidad', + 'billing-address' => 'Dirección de facturación', + 'shipping-address' => 'Dirección de envío', + 'contact' => 'Contacto', + 'place-order' => 'Realizar pedido', + 'new-address' => 'Añadir nueva dirección', + 'save_as_address' => 'Guardar dirección', + 'apply-coupon' => 'Aplicar cupón', + 'amt-payable' => 'Cantidad a pagar', + 'got' => 'Tienes', + 'free' => 'Gratis', + 'coupon-used' => 'Cupón usado', + 'applied' => 'Aplicado', + 'back' => 'Volver', + 'cash-desc' => 'Pago en efectivo', + 'money-desc' => 'Transferencia bancaria', + 'paypal-desc' => 'Paypal', + 'free-desc' => 'Envío gratuito', + 'flat-desc' => 'Esta es una tarifa plana' + ], + + 'total' => [ + 'order-summary' => 'Resumen del pedido', + 'sub-total' => 'Artículos', + 'grand-total' => 'Total', + 'delivery-charges' => 'Gastos de envío', + 'tax' => 'Impuesto', + 'discount' => 'Descuento', + 'price' => 'Precio', + 'disc-amount' => 'Cantidad descontada', + 'new-grand-total' => 'Total', + 'coupon' => 'Cupón', + 'coupon-applied' => 'Cupón aplicado', + 'remove-coupon' => 'Eliminar cupón', + 'cannot-apply-coupon' => 'No se puede aplicar cupón' + ], + + 'success' => [ + 'title' => 'Pedido realizado correctamente', + 'thanks' => '¡Gracias por tu pedido!', + 'order-id-info' => 'Tu número de pedido es #:order_id', + 'info' => 'Te enviaremos un correo electrónico con los detalles de tu pedido y la información de seguimiento' + ] + ], + + 'mail' => [ + 'order' => [ + 'subject' => 'Nuevo pedido confirmado', + 'heading' => '¡Pedido Confirmado!', + 'dear' => 'Estimado/a :customer_name', + 'dear-admin' => 'Estimado/a :admin_name', + 'greeting' => 'Gracias por tu pedido :order_id placed on :created_at', + 'greeting-admin' => 'Pedido número :order_id placed on :created_at', + 'summary' => 'Resumen del pedido', + 'shipping-address' => 'Dirección de envío', + 'billing-address' => 'Dirección de facturación', + 'contact' => 'Contacto', + 'shipping' => 'Método de envío', + 'payment' => 'Forma de pago', + 'price' => 'Precio', + 'quantity' => 'Cantidad', + 'subtotal' => 'Subtotal', + 'shipping-handling' => 'Envío y manipulación', + 'tax' => 'Impuesto', + 'discount' => 'Descuento', + 'grand-total' => 'Total', + 'final-summary' => 'Gracias por tu pedido, te enviaremos el número de seguimiento una vez enviado', + 'help' => 'Si necesitas ayuda contacta con nosotros a través de :support_email', + 'thanks' => '¡Gracias!', + 'cancel' => [ + 'subject' => 'Confirmación de pedido cancelado', + 'heading' => 'Pedido cancelado', + 'dear' => 'Estimado/a :customer_name', + 'greeting' => 'Tu pedido con el número #:order_id placed on :created_at ha sido cancelado', + 'summary' => 'Resumen del pedido', + 'shipping-address' => 'Dirección de envío', + 'billing-address' => 'Dirección de facturación', + 'contact' => 'Contacto', + 'shipping' => 'Método de envío', + 'payment' => 'Forma de pago', + 'subtotal' => 'Subtotal', + 'shipping-handling' => 'Envío y Manipulación', + 'tax' => 'Impuesto', + 'discount' => 'Descuento', + 'grand-total' => 'Total', + 'final-summary' => 'Gracias por tu interés en nuestra tienda', + 'help' => 'Si necesitas ayuda contacta con nosotros a través de :support_email', + 'thanks' => '¡Gracias!', + ] + ], + 'invoice' => [ + 'heading' => 'Tu factura #:invoice_id for Order #:order_id', + 'subject' => 'Factura de tu pedido #:order_id', + 'summary' => 'Resumen de pedido', + ], + 'shipment' => [ + 'heading' => 'El Envío #:shipment_id ha sido generado por el pedido #:order_id', + 'inventory-heading' => 'Nuevo envío #:shipment_id ha sido generado por el pedido #:order_id', + 'subject' => 'Envío de tu pedido #:order_id', + 'inventory-subject' => 'Nuevo envío ha sido generado por el pedido #:order_id', + 'summary' => 'Resumen de envío', + 'carrier' => 'Transportista', + 'tracking-number' => 'Número de seguimiento', + 'greeting' => 'El pedido :order_id ha sido enviado a :created_at', + ], + 'forget-password' => [ + 'subject' => 'Restablecer contraseña cliente', + 'dear' => 'Estimado/a :name', + 'info' => 'Te hemos enviado este correo porque hemos recibido una solicitud para restablecer la contraseña de tu cuenta', + 'reset-password' => 'Restablecer contraseña', + 'final-summary' => 'Si no has solicitado cambiar de contraseña, ninguna acción es requerida por tu parte.', + 'thanks' => '¡Gracias!' + ], + 'customer' => [ + 'new' => [ + 'dear' => 'Estimado/a :customer_name', + 'username-email' => 'Nombre de usuario/Email', + 'subject' => 'Nuevo registro de cliente', + 'password' => 'Contraseña', + 'summary' => 'Tu cuenta ha sido creada en Bassar. + Los detalles de tu cuenta puedes verlos abajo: ', + 'thanks' => '¡Gracias!', + ], + + 'registration' => [ + 'subject' => 'Nuevo registro de cliente', + 'customer-registration' => 'Cliente registrado exitosamente', + 'dear' => 'Estimado/a :customer_name', + 'greeting' => '¡Bienvenido y gracias por registrarte en Bassar!', + 'summary' => 'Your account has now been created successfully and you can login using your email address and password credentials. Upon logging in, you will be able to access other services including reviewing past orders, wishlists and editing your account information.', + 'thanks' => '¡Gracias!', + ], + + 'verification' => [ + 'heading' => 'Bassar - Verificación por correo', + 'subject' => 'Verificación por correo', + 'verify' => 'Verifica tu cuenta', + 'summary' => 'Este mensaje es para verificar que esta dirección de mail es tuya. + Por favor, clica el botón de abajo para verificar tu cuenta.' + ], + + 'subscription' => [ + 'subject' => 'Subscripción mail', + 'greeting' => ' Bienvenido a Bassar - Subscripción por mail', + 'unsubscribe' => 'Darse de baja', + 'summary' => 'Gracias por ponernos en tu bandeja de entrada. Ha pasado un tiempo desde que leyó el último correo electrónico de Bassar, y no queremos abrumar su bandeja de entrada. Si ya no quiere recibir + las últimas noticias de marketing, haga clic en el botón de abajo.' + ] + ] + ], + + 'webkul' => [ + 'copy-right' => '© Copyright :year Webkul Software, All rights reserved', + ], + + 'response' => [ + 'create-success' => ':name creado correctamente.', + 'update-success' => ':name actualizado correctamente.', + 'delete-success' => ':name eliminado correctamente.', + 'submit-success' => ':name enviado correctamente.' + ], +]; diff --git a/packages/Webkul/Shop/src/Resources/lang/fa/app.php b/packages/Webkul/Shop/src/Resources/lang/fa/app.php new file mode 100644 index 000000000..98525b49b --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/lang/fa/app.php @@ -0,0 +1,575 @@ + 'فعالیت مشکوکی یافت شد !!!', + 'nothing-to-delete' => 'هیچ چیز برای حذف نیست', + + 'layouts' => [ + 'my-account' => 'حساب من', + 'profile' => 'مشخصات', + 'address' => 'نشانی', + 'reviews' => 'بررسی ها', + 'wishlist' => 'لیست دلخواه', + 'orders' => 'سفارشات', + ], + + 'common' => [ + 'error' => 'مشکلی رخ داده است. لطفا بعدا دوباره امتحان کنید.', + 'no-result-found' => 'We could not find any records.' + ], + + 'home' => [ + 'page-title' => 'فروشگاه - خانه', + 'featured-products' => 'محصولات برجسته', + 'new-products' => 'محصولات جدید', + 'verify-email' => 'حساب ایمیل خود را تأیید کنید', + 'resend-verify-email' => 'ایمیل تایید را دوباره بفرست' + ], + + 'header' => [ + 'title' => 'حساب', + 'dropdown-text' => 'مدیریت سبد خرید ، سفارشات و لیست دلخواه', + 'sign-in' => 'ورود', + 'sign-up' => 'ثبت نام', + 'account' => 'حساب', + 'cart' => 'سبد خرید', + 'profile' => 'مشخصات', + 'wishlist' => 'لیست دلخواه', + 'cart' => 'سبد خرید', + 'logout' => 'خروج', + 'search-text' => 'محصولات را در اینجا جستجو کنید' + ], + + 'minicart' => [ + 'view-cart' => 'مشاهده سبد خرید', + 'checkout' => 'وارسی', + 'cart' => 'سبد خرید', + 'zero' => '0' + ], + + 'footer' => [ + 'subscribe-newsletter' => 'عضویت در خبرنامه', + 'subscribe' => 'اشتراک در', + 'locale' => 'محل', + 'currency' => 'واحد پول', + ], + + 'subscription' => [ + 'unsubscribe' => 'لغو اشتراک', + 'subscribe' => 'اشتراک در', + 'subscribed' => 'شما هم اکنون در ایمیل های اشتراک مشترک شده اید', + 'not-subscribed' => 'شما نمی توانید به عضویت در ایمیل مشترک شوید ، پس از مدتی دوباره امتحان کنید', + 'already' => 'شما قبلاً در لیست اشتراک های ما مشترک شده اید', + 'unsubscribed' => 'شما از نامه های اشتراک مشترکاً مشترک نیستید', + 'already-unsub' => 'شما قبلاً لغو اشتراک شده اید', + 'not-subscribed' => 'خطا! نامه ارسال نمی شود در حال حاضر ، لطفا بعدا دوباره امتحان کنید' + ], + + 'search' => [ + 'no-results' => 'نتیجه ای پیدا نشد', + 'page-title' => 'فروشگاه - جستجو', + 'found-results' => 'نتایج جستجو یافت شد', + 'found-result' => 'نتیجه جستجو یافت شد' + ], + + 'reviews' => [ + 'title' => 'عنوان', + 'add-review-page-title' => 'Add بررسی', + 'write-review' => 'یک بررسی بنویسید', + 'review-title' => 'عنوان خود را به نقد خود بدهید', + 'product-review-page-title' => 'بررسی محصول', + 'rating-reviews' => 'رتبه بندی و بررسی', + 'submit' => 'ارسال', + 'delete-all' => 'همه بررسی ها با موفقیت حذف شده است', + 'ratingreviews' => ':rating رتبه بندی ها و :review بررسی ها', + 'star' => 'ستاره', + 'percentage' => ':percentage %', + 'id-star' => 'ستاره', + 'name' => 'نام' + ], + + 'customer' => [ + 'signup-text' => [ + 'account_exists' => 'قبلاً حساب داشته باشید', + 'title' => 'ورود' + ], + + 'signup-form' => [ + 'page-title' => 'مشتری - فرم ثبت نام', + 'title' => 'ثبت نام', + 'firstname' => 'نام کوچک', + 'lastname' => 'نام خانوادگی', + 'email' => 'پست الکترونیک', + 'password' => 'کلمه عبور', + 'confirm_pass' => 'رمز عبور را تأیید کنید', + 'button_title' => 'ثبت نام', + 'agree' => 'موافق', + 'terms' => 'مقررات', + 'conditions' => 'شرایط', + 'using' => 'با استفاده از این وب سایتe', + 'agreement' => 'توافق', + 'success' => 'حساب با موفقیت ایجاد شد', + 'success-verify' => 'ایجاد حساب با موفقیت ، نامه الکترونیکی برای تأیید ارسال شده است.', + 'success-verify-email-unsent' => 'حساب با موفقیت ایجاد شد ، اما نامه الکترونیکی تأیید نشده است', + 'failed' => 'خطا! نمی توانید حساب خود را ایجاد کنید ، بعدا دوباره امتحان کنید', + 'already-verified' => 'حساب شما قبلاً تأیید شده است یا لطفاً یک ایمیل تأیید جدید دوباره ارسال کنید', + 'verification-not-sent' => 'خطا! مشکلی در ارسال ایمیل تأیید صحت ، بعداً دوباره امتحان کنید', + 'verification-sent' => 'ایمیل تأیید ارسال شده است', + 'verified' => 'حساب شما تأیید شده است ، سعی کنید هم اکنون وارد سیستم شوید', + 'verify-failed' => 'ما نمی توانیم حساب نامه شما را تأیید کنیم', + 'dont-have-account' => 'شما با ما حساب ندارید', + ], + + 'login-text' => [ + 'no_account' => 'حساب ندارید', + 'title' => 'ثبت نام', + ], + + 'login-form' => [ + 'page-title' => 'ورود مشتری', + 'title' => 'ورود', + 'email' => 'پست الکترونیک', + 'password' => 'کلمه عبور', + 'forgot_pass' => 'رمز عبور را فراموش کرده اید؟', + 'button_title' => 'ورود', + 'remember' => 'مرا به خاطر بسپار', + 'footer' => '© کپی رایت: نرم افزار Webkul سال ، کلیه حقوق محفوظ است', + 'invalid-creds' => 'لطفا مدارک خود را بررسی کنید و دوباره امتحان کنید', + 'verify-first' => 'ابتدا حساب ایمیل خود را تأیید کنید', + 'not-activated' => 'فعال سازی شما به دنبال تأیید سرپرست است', + 'resend-verification' => 'مجدداً نامه تأیید را دوباره ارسال کنید' + ], + + 'forgot-password' => [ + 'title' => 'بازیابی رمز عبور', + 'email' => 'پست الکترونیک', + 'submit' => 'ارسال', + 'page_title' => 'مشتری - فرم رمز عبور را فراموش کرده اید' + ], + + 'reset-password' => [ + 'title' => 'بازنشانی گذرواژه', + 'email' => 'ایمیل ثبت شده', + 'password' => 'کلمه عبور', + 'confirm-password' => 'رمز عبور را تأیید کنید', + 'back-link-title' => 'بازگشت به سیستم ورود به سیستم', + 'submit-btn-title' => 'بازنشانی گذرواژه' + ], + + 'account' => [ + 'dashboard' => 'مشتری - ویرایش نمایه', + 'menu' => 'فهرست', + + 'profile' => [ + 'index' => [ + 'page-title' => 'مشتری - پروفایل', + 'title' => 'مشخصات', + 'edit' => 'ویرایش کنید', + ], + + 'edit-success' => 'نمایه با موفقیت به روز شد', + 'edit-fail' => 'خطا! نمایه به روز نمی شود ، لطفا بعداً دوباره امتحان کنید', + 'unmatch' => 'رمز عبور قدیمی مطابقت ندارد', + + 'fname' => 'نام کوچک', + 'lname' => 'نام خانوادگی', + 'gender' => 'جنسیت', + 'dob' => 'تاریخ تولد', + 'phone' => 'تلفن', + 'email' => 'پست الکترونیک', + 'opassword' => 'گذرواژه قدیمی', + 'password' => 'کلمه عبور', + 'cpassword' => 'رمز عبور را تأیید کنید', + 'submit' => 'بروزرسانی پروفایل', + + 'edit-profile' => [ + 'title' => 'ویرایش نمایه', + 'page-title' => 'مشتری - ویرایش فرم پروفایل' + ] + ], + + 'address' => [ + 'index' => [ + 'page-title' => 'مشتری - آدرس', + 'title' => 'نشانی', + 'add' => 'اضافه کردن آدرس', + 'edit' => 'ویرایش کنید', + 'empty' => 'شما هیچ آدرس ذخیره ای در اینجا ندارید ، لطفاً با کلیک روی پیوند زیر سعی کنید آن را ایجاد کنید', + 'create' => 'ایجاد آدرس', + 'delete' => 'حذف', + 'make-default' => 'پیش فرض کنید', + 'default' => 'پیش فرض', + 'contact' => 'تماس', + 'confirm-delete' => 'آیا واقعاً می خواهید این آدرس را حذف کنید؟', + 'default-delete' => 'آدرس پیش فرض تغییر نمی کند', + 'enter-password' => 'Enter Your Password.', + ], + + 'create' => [ + 'page-title' => 'مشتری - فرم آدرس را اضافه کنید', + 'title' => 'اضافه کردن آدرس', + 'street-address' => 'آدرس خیابان', + 'country' => 'کشور', + 'state' => 'دولت', + 'select-state' => 'یک منطقه ، ایالت یا استان را انتخاب کنید', + 'city' => 'شهر', + 'postcode' => 'کد پستی', + 'phone' => 'تلفن', + 'submit' => 'ذخیره آدرس', + 'success' => 'آدرس با موفقیت اضافه شد', + 'error' => 'آدرس اضافه نمی شود.' + ], + + 'edit' => [ + 'page-title' => 'مشتری - ویرایش آدرس', + 'title' => 'ویرایش آدرس', + 'street-address' => 'آدرس خیابان', + 'submit' => 'ذخیره آدرس', + 'success' => 'آدرس با موفقیت به روز شد.', + ], + 'delete' => [ + 'success' => 'آدرس با موفقیت حذف شد', + 'failure' => 'آدرس حذف نمی شود', + 'wrong-password' => 'Wrong Password !' + ] + ], + + 'order' => [ + 'index' => [ + 'page-title' => 'مشتری - سفارشات', + 'title' => 'سفارشات', + 'order_id' => 'شماره سفارش', + 'date' => 'تاریخ', + 'status' => 'وضعیت', + 'total' => 'جمع' + ], + + 'view' => [ + 'page-tile' => 'سفارش #:order_id', + 'info' => 'اطلاعات', + 'placed-on' => 'قرار داده شده در', + 'products-ordered' => 'محصولات سفارش داده شده', + 'invoices' => 'صورت حساب', + 'shipments' => 'حمل و نقل', + 'SKU' => 'واحد نگهداری سهام', + 'product-name' => 'نام', + 'qty' => 'کمیت', + 'item-status' => 'وضعیت مورد', + 'item-ordered' => 'سفارش داد (:qty_ordered)', + 'item-invoice' => 'صورتحساب (:qty_invoiced)', + 'item-shipped' => 'حمل شده (:qty_shipped)', + 'item-canceled' => 'لغو شد (:qty_canceled)', + 'item-refunded' => 'Refunded (:qty_refunded)', + 'price' => 'قیمت', + 'total' => 'جمع', + 'subtotal' => 'فرعی', + 'shipping-handling' => 'حمل و نقل و جابجایی', + 'tax' => 'مالیات', + 'discount' => 'تخفیف', + 'tax-percent' => 'درصد مالیات', + 'tax-amount' => 'مبلغ مالیات', + 'discount-amount' => 'مقدار تخفیف', + 'grand-total' => 'بزرگ توتال', + 'total-paid' => 'جمع پرداختی', + 'total-refunded' => 'بازپرداخت کل', + 'total-due' => 'بدهی کل', + 'shipping-address' => 'آدرس حمل و نقل', + 'billing-address' => 'آدرس قبض', + 'shipping-method' => 'روش حمل و نقل', + 'payment-method' => 'روش پرداخت', + 'individual-invoice' => 'صورتحساب #:invoice_id', + 'individual-shipment' => 'حمل و نقل #:shipment_id', + 'print' => 'چاپ', + 'invoice-id' => 'شناسه فاکتور', + 'order-id' => 'شماره سفارش', + 'order-date' => 'تاریخ سفارش', + 'bill-to' => 'بیل به', + 'ship-to' => 'حمل به', + 'contact' => 'تماس', + 'refunds' => 'Refunds', + 'individual-refund' => 'Refund #:refund_id', + 'adjustment-refund' => 'Adjustment Refund', + 'adjustment-fee' => 'Adjustment Fee', + ] + ], + + 'wishlist' => [ + 'page-title' => 'Customer - Wishlist', + 'title' => 'لیست دلخواه', + 'deleteall' => 'حذف همه', + 'moveall' => 'انتقال همه محصولات به سبد خرید', + 'move-to-cart' => 'انتقال به سبد خرید', + 'error' => 'به دلیل مشکلات ناشناخته نمی توان محصول را به لیست دلخواه اضافه کرد ، لطفا بعداً بررسی کنید', + 'add' => 'مورد با موفقیت به لیست دلخواه اضافه شد', + 'remove' => 'مورد با موفقیت از لیست دلخواه حذف شد', + 'moved' => 'مورد با موفقیت به سبد خرید منتقل شد', + 'move-error' => 'مورد را نمی توان به لیست دلخواه منتقل کرد ، لطفا بعداً دوباره امتحان کنید', + 'success' => 'مورد با موفقیت به لیست دلخواه اضافه شد', + 'failure' => 'مورد را نمی توان به لیست دلخواه اضافه کرد ، لطفا بعداً دوباره امتحان کنید', + 'already' => 'مورد موجود در لیست دلخواه شما موجود است', + 'removed' => 'مورد با موفقیت از لیست دلخواه حذف شد', + 'remove-fail' => 'لطفاً مورد از لیست لیست حذف نشود ، لطفا بعداً دوباره امتحان کنید', + 'empty' => 'شما هیچ موردی در لیست دلخواه خود ندارید', + 'remove-all-success' => 'همه موارد از لیست دلخواه شما حذف شده است', + ], + + 'downloadable_products' => [ + 'title' => 'Downloadable Products', + 'order-id' => 'Order Id', + 'date' => 'Date', + 'name' => 'Title', + 'status' => 'Status', + 'pending' => 'Pending', + 'available' => 'Available', + 'expired' => 'Expired', + 'remaining-downloads' => 'Remaining Downloads', + 'unlimited' => 'Unlimited', + 'download-error' => 'Download link has been expired.' + ], + + 'review' => [ + 'index' => [ + 'title' => 'بررسی ها', + 'page-title' => 'مشتری - بررسی' + ], + + 'view' => [ + 'page-tile' => 'بررسی #:id', + ] + ] + ] + ], + + 'products' => [ + 'layered-nav-title' => 'خرید بوسیله ی', + 'price-label' => 'به اندازه کم', + 'remove-filter-link-title' => 'همه را پاک کن', + 'sort-by' => 'مرتب سازی بر اساس', + 'from-a-z' => 'از A-Z', + 'from-z-a' => 'از Z-A', + 'newest-first' => 'جدیدترین اول', + 'oldest-first' => 'قدیمی ترها در اولویت', + 'cheapest-first' => 'ارزان ترین اول', + 'expensive-first' => 'گران قیمت اول', + 'show' => 'نشان دادن', + 'pager-info' => 'نمایش :showing از :total آیتم', + 'description' => 'شرح', + 'specification' => 'مشخصات', + 'total-reviews' => ':total بررسی ها', + 'total-rating' => ':total_rating رتبه بندی ها و :total_reviews بررسی ها', + 'by' => 'با :name', + 'up-sell-title' => 'ما محصولات دیگری را پیدا کردید که ممکن است دوست داشته باشید!', + 'related-product-title' => 'محصولات مرتبط', + 'cross-sell-title' => 'گزینه های بیشتر', + 'reviews-title' => 'رتبه بندی ها و بررسی ها', + 'write-review-btn' => 'نوشتن نظر', + 'choose-option' => 'گزینه ای را انتخاب کنید', + 'sale' => 'فروش', + 'new' => 'جدید', + 'empty' => 'هیچ کالایی در این گروه موجود نیست', + 'add-to-cart' => 'افزودن به سبد خرید', + 'buy-now' => 'هم اکنون خریداری کنید', + 'whoops' => 'وای!', + 'quantity' => 'مقدار', + 'in-stock' => 'در انبار', + 'out-of-stock' => 'تمام شده', + 'view-all' => 'مشاهده همه', + 'select-above-options' => 'لطفا ابتدا گزینه های بالا را انتخاب کنید', + 'less-quantity' => 'کمیت نمی تواند کمتر از یک باشد.', + 'starting-at' => 'Starting at', + 'customize-options' => 'Customize Options', + 'choose-selection' => 'Choose a selection', + 'your-customization' => 'Your Customization', + 'total-amount' => 'Total Amount', + 'none' => 'None' + ], + + // 'reviews' => [ + // 'empty' => 'You Have Not Reviewed Any Of Product Yet' + // ] + + 'buynow' => [ + 'no-options' => 'لطفا قبل از خرید این محصول گزینه هایی را انتخاب کنید' + ], + + + 'checkout' => [ + 'cart' => [ + 'integrity' => [ + 'missing_fields' =>'نقض یکپارچگی سیستم سبد خرید ، برخی از زمینه های لازم وجود ندارد', + 'missing_options' =>'نقض یکپارچگی سیستم سبد خرید ، گزینه هایی برای محصول قابل تنظیم وجود ندارد', + 'missing_links' => 'Downloadable links are missing for this product.', + 'qty_missing' => 'Atleast one product should have more than 1 quantity.' + ], + + 'create-error' => 'هنگام تهیه نمونه سبد خرید ، با برخی از شماره ها روبرو شد', + 'title' => 'سبد خرید', + 'empty' => 'سبد خرید شما خالی است', + 'update-cart' => 'به روز رسانی سبد خرید', + 'continue-shopping' => 'ادامه خرید', + 'proceed-to-checkout' => 'ادامه به پرداخت', + 'remove' => 'برداشتن', + 'remove-link' => 'برداشتن', + 'move-to-wishlist' => 'انتقال به لیست دلخواه', + 'move-to-wishlist-success' => 'مورد به لیست دلخواه منتقل شد', + 'move-to-wishlist-error' => 'نمی توان مورد را به لیست علاقه مندی ها انتقال داد ، لطفا بعداً دوباره امتحان کنید', + 'add-config-warning' => 'لطفا قبل از افزودن به سبد خرید گزینه را انتخاب کنید', + 'quantity' => [ + 'quantity' => 'مقدار', + 'success' => 'مورد (سبد) سبد خرید با موفقیت به روز شد', + 'illegal' => 'مقدار نمی تواند از یک مقدار کمتر باشد', + 'inventory_warning' => 'مقدار درخواستی در دسترس نیست ، لطفا بعداً دوباره امتحان کنید', + 'error' => 'در حال حاضر نمی توانید موارد (های) را به روز کنید ، لطفا بعداً دوباره امتحان کنید' + ], + + 'item' => [ + 'error_remove' => 'هیچ موردی برای حذف از سبد خرید وجود ندارد', + 'success' => 'مورد با موفقیت به سبد خرید اضافه شد', + 'success-remove' => 'مورد با موفقیت از سبد خرید حذف شد', + 'error-add' => 'لطفاً موردی را به سبد خرید اضافه نکرد ، لطفا بعداً دوباره امتحان کنید', + ], + + 'quantity-error' => 'مقدار درخواستی در دسترس نیست', + 'cart-subtotal' => 'سبد فرعی', + 'cart-remove-action' => 'آیا واقعاً می خواهید این کار را انجام دهید؟', + 'partial-cart-update' => 'فقط برخی از محصولات (های) به روز شده اند', + ], + + 'onepage' => [ + 'title' => 'وارسی', + 'information' => 'اطلاعات', + 'shipping' => 'حمل دریایی', + 'payment' => 'پرداخت', + 'complete' => 'تکمیل', + 'billing-address' => 'آدرس قبض', + 'sign-in' => 'ورود', + 'first-name' => 'نام کوچک', + 'last-name' => 'نام خانوادگی', + 'email' => 'پست الکترونیک', + 'address1' => 'آدرس خیابان', + 'city' => 'شهر', + 'state' => 'دولت', + 'select-state' => 'یک منطقه ، ایالت یا استان را انتخاب کنید', + 'postcode' => 'پستی / کدپستی', + 'phone' => 'تلفن', + 'country' => 'کشور', + 'order-summary' => 'خلاصه سفارش', + 'shipping-address' => 'آدرس حمل و نقل', + 'use_for_shipping' => 'حمل به این آدرس', + 'continue' => 'ادامه هید', + 'shipping-method' => 'نحوه ارسال را انتخاب کنید', + 'payment-methods' => 'روش پرداخت را انتخاب کنید', + 'payment-method' => 'روش پرداخت', + 'summary' => 'خلاصه سفارش', + 'price' => 'قیمت', + 'quantity' => 'مقدار', + 'billing-address' => 'آدرس قبض', + 'shipping-address' => 'آدرس حمل و نقل', + 'contact' => 'تماس', + 'place-order' => 'ترتیب سفارش', + 'new-address' => 'آدرس جدید را اضافه کنید', + 'save_as_address' => 'ذخیره به عنوان آدرس', + 'apply-coupon' => 'کوپن را اعمال کنید', + 'amt-payable' => 'مبلغ قابل پرداخت', + 'got' => 'بدست آورد', + 'free' => 'رایگان', + 'coupon-used' => 'کوپن مورد استفاده', + 'applied' => 'کاربردی', + 'back' => 'بازگشت' + ], + + 'total' => [ + 'order-summary' => 'خلاصه سفارش', + 'sub-total' => 'موارد', + 'grand-total' => 'بزرگ توتال', + 'delivery-charges' => 'هزینه های تحویل', + 'tax' => 'مالیات', + 'discount' => 'تخفیف', + 'price' => 'قیمت', + 'disc-amount' => 'مقدار تخفیف', + 'new-grand-total' => 'New Grand Total', + 'coupon' => 'کوپن', + 'coupon-applied' => 'کوپن کاربردی', + 'remove-coupon' => 'کوپن را بردارید', + 'cannot-apply-coupon' => 'کوپن قابل اعمال نیست' + ], + + 'success' => [ + 'title' => 'سفارش با موفقیت درج شد', + 'thanks' => 'از سفارش شما متشکریم!', + 'order-id-info' => 'شناسه سفارش شماست #:order_id', + 'info' => 'ما به شما ، اطلاعات سفارش و اطلاعات ردیابی به شما ایمیل خواهیم داد' + ] + ], + + 'mail' => [ + 'order' => [ + 'subject' => 'تأیید سفارش جدید', + 'heading' => 'تایید سفارش!', + 'dear' => 'عزیز :customer_name', + 'dear-admin' => 'عزیز :admin_name', + 'greeting' => 'با تشکر از سفارش شما :order_id قرار داده شده در :created_at', + 'greeting-admin' => 'شماره سفارش :order_id قرار داده شده در :created_at', + 'summary' => 'خلاصه سفارش', + 'shipping-address' => 'آدرس حمل و نقل', + 'billing-address' => 'آدرس قبض', + 'contact' => 'تماس', + 'shipping' => 'روش حمل و نقل', + 'payment' => 'روش پرداخت', + 'price' => 'قیمت', + 'quantity' => 'مقدار', + 'subtotal' => 'فرعی', + 'shipping-handling' => 'حمل و نقل و جابجایی', + 'tax' => 'مالیات', + 'discount' => 'تخفیف', + 'grand-total' => 'بزرگ توتال', + 'final-summary' => 'با تشکر از علاقه شما به فروشگاه ما ، شماره حمل و نقل را برای شما ارسال می کنیم', + 'help' => 'در صورت نیاز به هر نوع کمک ، لطفا با ما تماس بگیرید :support_email', + 'thanks' => 'با تشکر!' + ], + + 'invoice' => [ + 'heading' => 'صورت حساب شما #:invoice_id برای سفارش #:order_id', + 'subject' => 'فاکتور سفارش شما #:order_id', + 'summary' => 'خلاصه فاکتور', + ], + + 'shipment' => [ + 'heading' => 'حمل و نقل #:shipment_id برای سفارش تولید شده است #:order_id', + 'inventory-heading' => 'حمل و نقل جدید #:shipment_id برای سفارش تولید شده است #:order_id', + 'subject' => 'حمل و نقل برای سفارش شما #:order_id', + 'inventory-subject' => 'محموله جدید برای سفارش تولید شده است #:order_id', + 'summary' => 'خلاصه حمل و نقل', + 'carrier' => 'حامل', + 'tracking-number' => 'شماره پیگیری', + 'greeting' => 'یک سفارش :order_id قرار داده شده است :created_at', + ], + + 'refund' => [ + 'heading' => 'Your Refund #:refund_id for Order #:order_id', + 'subject' => 'Refund for your order #:order_id', + 'summary' => 'Summary of Refund', + 'adjustment-refund' => 'Adjustment Refund', + 'adjustment-fee' => 'Adjustment Fee' + ], + + 'forget-password' => [ + 'dear' => 'عزیز :name', + 'info' => 'شما این ایمیل را دریافت می کنید زیرا ما درخواست بازنشانی رمزعبور را برای حساب شما دریافت کردیم', + 'reset-password' => 'بازنشانی گذرواژه', + 'final-summary' => 'اگر درخواست بازنشانی گذرواژه را نکردید ، دیگر نیازی به اقدامات لازم نیست', + 'thanks' => 'با تشکر!' + ] + ], + + 'webkul' => [ + 'copy-right' => '© کپی رایت: نرم افزار Webkul سال ، کلیه حقوق محفوظ است', + ], + + 'response' => [ + 'create-success' => ':name با موفقیت ایجاد شد', + 'update-success' => ':name با موفقیت به روز شد.', + 'delete-success' => ':name با موفقیت حذف شد', + 'submit-success' => ':name با موفقیت ثبت شد.' + ], +]; diff --git a/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php new file mode 100755 index 000000000..c38ea7811 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php @@ -0,0 +1,553 @@ + [ + 'my-account' => 'Minha Conta', + 'profile' => 'Perfil', + 'address' => 'Endereço', + 'reviews' => 'Avaliação', + 'wishlist' => 'Lista de Desejos', + 'orders' => 'Pedidos', + ], + + 'common' => [ + 'error' => 'Algo deu errado, por favor, tente novamente mais tarde.', + 'no-result-found' => 'We could not find any records.' + ], + + 'home' => [ + 'page-title' => config('app.name') . ' - Home', + 'featured-products' => 'Produtos em Destaque', + 'new-products' => 'Novos Produtos', + 'verify-email' => 'Verifique sua Conta de E-mail', + 'resend-verify-email' => 'Reenviar Email de Verificação' + ], + + 'header' => [ + 'title' => 'Conta', + 'dropdown-text' => 'Gerenciar Carrinho, Pedidos & Lista de Desejos', + 'sign-in' => 'Entrar', + 'sign-up' => 'Criar Conta', + 'account' => 'Conta', + 'cart' => 'Carrinho', + 'profile' => 'Perfil', + 'wishlist' => 'Lista de Desejos', + 'cart' => 'Carrinho', + 'logout' => 'Sair', + 'search-text' => 'Pesquisar produtos aqui' + ], + + 'minicart' => [ + 'view-cart' => 'Visualizar Carrinho', + 'checkout' => 'Finalizar Compra', + 'cart' => 'Carrinho', + 'zero' => '0' + ], + + 'footer' => [ + 'subscribe-newsletter' => 'Assinar Newsletter', + 'subscribe' => 'Assinar', + 'locale' => 'Idioma', + 'currency' => 'Moeda', + ], + + 'subscription' => [ + 'unsubscribe' => 'Cancelar Inscrição', + 'subscribe' => 'Inscrever', + 'subscribed' => 'Você está agora inscrito nos e-mails de newsletter', + 'not-subscribed' => 'Você não pode se inscrever, tente novamente após algum tempo', + 'already' => 'Você já está inscrito em nossa lista de assinaturas', + 'unsubscribed' => 'Você não está inscrito em nossa lista de assinaturas', + 'already-unsub' => 'Você não está mais inscrito em nossa lista de assinaturas', + 'not-subscribed' => 'Erro! Email não pode ser enviado, por favor, tente novamente mais tarde' + ], + + 'search' => [ + 'no-results' => 'Nenhum resultado encontrado', + 'page-title' => 'Buscar', + 'found-results' => 'Resultados da pesquisa encontrados', + 'found-result' => 'Resultado da pesquisa encontrado' + ], + + 'reviews' => [ + 'title' => 'Título', + 'add-review-page-title' => 'Adicionar Avaliação', + 'write-review' => 'Escreva uma avaliação', + 'review-title' => 'Dê um título a sua avaliação', + 'product-review-page-title' => 'Avaliação do Produto', + 'rating-reviews' => 'Notas & Avaliação', + 'submit' => 'ENVIAR', + 'delete-all' => 'Todas Avaliações foram excluídas com sucesso', + 'ratingreviews' => ':rating Nota & :review Avaliação', + 'star' => 'Estrela', + 'percentage' => ':percentage %', + 'id-star' => 'estrela', + 'name' => 'Nome' + ], + + 'customer' => [ + 'signup-text' => [ + 'account_exists' => 'Já tem uma conta', + 'title' => 'Entrar' + ], + + 'signup-form' => [ + 'page-title' => 'Cliente - Formulário de Cadastro', + 'title' => 'Cadastrar', + 'firstname' => 'Nome', + 'lastname' => 'Sobrenome', + 'email' => 'Email', + 'password' => 'Senha', + 'confirm_pass' => 'Confirmar Senha', + 'button_title' => 'Cadastrar', + 'agree' => 'Concordo', + 'terms' => 'Termos', + 'conditions' => 'Condições', + 'using' => 'usando este site', + 'agreement' => 'Acordo', + 'success' => 'Conta criado com sucesso, um e-mail foi enviado para sua verificação de conta', + 'success-verify-email-not-sent' => 'Conta criada com sucesso, mas o email de verificação não foi enviado', + 'failed' => 'Erro! Não é possível criar sua conta, tente novamente mais tarde', + 'already-verified' => 'Sua conta já foi confirmada ou tente enviar novamente novo de e-mail de confirmação', + 'verification-not-sent' => 'Erro! Problema ao enviar e-mail de verificação, tente novamente mais tarde', + 'verification-sent' => 'E-mail de verificação enviado', + 'verified' => 'Sua Conta Foi Verificada, Tente Entrar Agora', + 'verify-failed' => 'Não podemos verificar sua conta de e-mail', + 'dont-have-account' => 'Você não tem conta conosco', + ], + + 'login-text' => [ + 'no_account' => 'Não tem conta', + 'title' => 'Cadastrar', + ], + + 'login-form' => [ + 'page-title' => 'Cliente - Login', + 'title' => 'Entrar', + 'email' => 'Email', + 'password' => 'Senha', + 'forgot_pass' => 'Esqueceu sua Senha?', + 'button_title' => 'Entrar', + 'remember' => 'Lembrar de mim', + 'footer' => '© Copyright :year Webkul Software, Todos os direitos reservados', + 'invalid-creds' => 'Por favor, verifique suas credenciais e tente novamente', + 'verify-first' => 'Verifique seu e-mail primeiro', + 'resend-verification' => 'Reenviar email de verificação novamente' + ], + + 'forgot-password' => [ + 'title' => 'Recuperar Senha', + 'email' => 'Email', + 'submit' => 'Enviar', + 'page_title' => 'Esqueci minha Senha' + ], + + 'reset-password' => [ + 'title' => 'Redefinir Senha', + 'email' => 'Email registrado', + 'password' => 'Senha', + 'confirm-password' => 'Confirmar Senha', + 'back-link-title' => 'Voltar para Login', + 'submit-btn-title' => 'Redefinir Senha' + ], + + 'account' => [ + 'dashboard' => 'Cliente - Perfil', + 'menu' => 'Menu', + + 'profile' => [ + 'index' => [ + 'page-title' => 'Cliente - Perfil', + 'title' => 'Perfil', + 'edit' => 'Editar', + ], + + 'edit-success' => 'Perfil Atualizado com Sucesso', + 'edit-fail' => 'Erro! O perfil não pode ser atualizado, por favor, tente novamente mais tarde', + 'unmatch' => 'A senha antiga não corresponde', + + 'fname' => 'Nome', + 'lname' => 'Sobrenome', + 'gender' => 'Gênero', + 'dob' => 'Data de Nascimento', + 'phone' => 'Telefone', + 'email' => 'Email', + 'opassword' => 'Senha antiga', + 'password' => 'Senha', + 'cpassword' => 'Confirmar Senha', + 'submit' => 'Atualizar Perfil', + + 'edit-profile' => [ + 'title' => 'Editar Perfil', + 'page-title' => 'Cliente - Editar Perfil' + ] + ], + + 'address' => [ + 'index' => [ + 'page-title' => 'Cliente - Endereço', + 'title' => 'Endereço', + 'add' => 'Adicionar Endereço', + 'edit' => 'Editar', + 'empty' => 'Você não tem nenhum endereço salvo aqui, por favor tente criá-lo clicando no link abaixo', + 'create' => 'Criar Endereço', + 'delete' => 'Deletar', + 'make-default' => 'Definir como Padrão', + 'default' => 'Padrão', + 'contact' => 'Contato', + 'confirm-delete' => 'Você realmente deseja excluir este endereço?', + 'default-delete' => 'O endereço padrão não pode ser alterado', + 'enter-password' => 'Enter Your Password.', + ], + + 'create' => [ + 'page-title' => 'Cliente - Adicionar Endereço', + 'title' => 'Novo Endereço', + 'address1' => 'Endereço Linha 1', + 'street-address' => 'Endereço', + 'country' => 'País', + 'state' => 'Estado', + 'select-state' => 'Select a region, state or province', + 'city' => 'Cidade', + 'postcode' => 'CEP', + 'phone' => 'Telefone', + 'submit' => 'Salvar Endereço', + 'success' => 'Endereço foi adicionado com sucesso.', + 'error' => 'Endereço não pode ser adicionado.' + ], + + 'edit' => [ + 'page-title' => 'Cliente - Editar Endereço', + 'title' => 'Editar Endereço', + 'submit' => 'Salvar Endereço', + 'success' => 'Endereço Atualizado com sucesso.' + ], + 'delete' => [ + 'success' => 'Endereço Excluído com sucesso', + 'failure' => 'Endereço não pode ser adicionado', + 'wrong-password' => 'Wrong Password !' + ] + ], + + 'order' => [ + 'index' => [ + 'page-title' => 'Cliente - Pedidos', + 'title' => 'Pedidos', + 'order_id' => 'Pedido ID', + 'date' => 'Data', + 'status' => 'Status', + 'total' => 'Total' + ], + + 'view' => [ + 'page-tile' => 'Pedido #:order_id', + 'info' => 'Informação', + 'placed-on' => 'Criado em', + 'products-ordered' => 'Produtos Pedidos', + 'invoices' => 'Faturas', + 'shipments' => 'Entregas', + 'SKU' => 'SKU', + 'product-name' => 'Nome', + 'qty' => 'Qtd', + 'item-status' => 'Item Status', + 'item-ordered' => 'Pedidos (:qty_ordered)', + 'item-invoice' => 'Faturados (:qty_invoiced)', + 'item-shipped' => 'enviados (:qty_shipped)', + 'item-canceled' => 'Cancelados (:qty_canceled)', + 'item-refunded' => 'Refunded (:qty_refunded)', + 'price' => 'Preço', + 'total' => 'Total', + 'subtotal' => 'Subtotal', + 'shipping-handling' => 'Entrega & Manuseio', + 'tax' => 'Imposto', + 'discount' => 'Discount', + 'tax-percent' => 'Percentagem de imposto', + 'tax-amount' => 'Valor de Imposto', + 'discount-amount' => 'Valor de Desconto', + 'grand-total' => 'Total', + 'total-paid' => 'Total Pago', + 'total-refunded' => 'Total Estornado', + 'total-due' => 'Total Devido', + 'shipping-address' => 'Endereço de Entrega', + 'billing-address' => 'Endereço de Cobrança', + 'shipping-method' => 'Método de Entrega', + 'payment-method' => 'Método de Pagamento', + 'individual-invoice' => 'Fatura #:invoice_id', + 'individual-shipment' => 'Entrega #:shipment_id', + 'print' => 'Imprimir', + 'invoice-id' => 'Fatura Id', + 'order-id' => 'Pedido Id', + 'order-date' => 'Pedido Date', + 'bill-to' => 'Cobrança de', + 'ship-to' => 'Enviar para', + 'contact' => 'Contato', + 'refunds' => 'Refunds', + 'individual-refund' => 'Refund #:refund_id', + 'adjustment-refund' => 'Adjustment Refund', + 'adjustment-fee' => 'Adjustment Fee', + ] + ], + + 'wishlist' => [ + 'page-title' => 'Customer - Wishlist', + 'title' => 'Lista de Desejos', + 'deleteall' => 'Excluir Tudo', + 'moveall' => 'Adicionar todos ao Carrinho', + 'move-to-cart' => 'Adicionar ao Carrinho', + 'error' => 'Não é possível adicionar o produto a lista de Desejos devido a problemas desconhecidos, por favor tente mais tarde', + 'add' => 'Item adicionado com sucesso a Lista de Desejos', + 'remove' => 'Item removido com sucesso da Lista de Desejos', + 'moved' => 'Item movido com sucesso para Lista de Desejos', + 'move-error' => 'Item não pode ser movido para Lista de Desejos, por favor, tente novamente mais tarde', + 'success' => 'Item adicionado com sucesso a Lista de Desejos', + 'failure' => 'Item não pode ser adicionado à Lista de Desejos, por favor, tente novamente mais tarde', + 'already' => 'Item já presente em sua lista de desejos', + 'removed' => 'Item removido com sucesso da Lista de Desejos', + 'remove-fail' => 'Item não pode ser removido da lista de desejos, por favor, tente novamente mais tarde', + 'empty' => 'Você não tem nenhum item em sua Lista de Desejos', + 'remove-all-success' => 'Todos os itens da sua lista de desejos foram removidos', + ], + + 'downloadable_products' => [ + 'title' => 'Downloadable Products', + 'order-id' => 'Order Id', + 'date' => 'Date', + 'name' => 'Title', + 'status' => 'Status', + 'pending' => 'Pending', + 'available' => 'Available', + 'expired' => 'Expired', + 'remaining-downloads' => 'Remaining Downloads', + 'unlimited' => 'Unlimited', + 'download-error' => 'Download link has been expired.' + ], + + 'review' => [ + 'index' => [ + 'title' => 'Avaliação', + 'page-title' => 'Cliente - Avaliação' + ], + + 'view' => [ + 'page-tile' => 'Avaliação #:id', + ] + ] + ] + ], + + 'products' => [ + 'layered-nav-title' => 'Compre por', + 'price-label' => 'Tão baixo quanto', + 'remove-filter-link-title' => 'Limpar Todos', + 'sort-by' => 'Ordernar por', + 'from-a-z' => 'De A-Z', + 'from-z-a' => 'De Z-A', + 'newest-first' => 'Novos Primeiros', + 'oldest-first' => 'Antigos Primeiros', + 'cheapest-first' => 'Mais baratos primeiros', + 'expensive-first' => 'Mas caros primeiros', + 'show' => 'Visualiar', + 'pager-info' => 'Mostrando :showing de um :total de Itens', + 'description' => 'Descrição', + 'specification' => 'Especificação', + 'total-reviews' => ':total Avaliação', + 'total-rating' => ':total_rating Notas & :total_reviews Avaliações', + 'by' => 'Por :name', + 'up-sell-title' => 'Encontramos outros produtos que você pode gostar!', + 'related-product-title' => 'Produtos Relacionados', + 'cross-sell-title' => 'Mais escolhas', + 'reviews-title' => 'Classificações & Avaliação', + 'write-review-btn' => 'Escreva uma Avaliação', + 'choose-option' => 'Escolha uma opção', + 'sale' => 'Promoção', + 'new' => 'Novo', + 'empty' => 'Nenhum produto disponível nesta categoria', + 'add-to-cart' => 'Adicionar ao Carrinho', + 'buy-now' => 'Comprar Agora', + 'whoops' => 'Oppss!', + 'quantity' => 'Quantidade', + 'in-stock' => 'Em Estoque', + 'out-of-stock' => 'Fora de Estoque', + 'view-all' => 'Ver Tudo', + 'select-above-options' => 'Por favor, selecione as opções acima primeiro.', + 'less-quantity' => 'Quantity can not be less than one.', + 'starting-at' => 'Starting at', + 'customize-options' => 'Customize Options', + 'choose-selection' => 'Choose a selection', + 'your-customization' => 'Your Customization', + 'total-amount' => 'Total Amount', + 'none' => 'None' + ], + + // 'reviews' => [ + // 'empty' => 'Você ainda não avaliou qualquer produto' + // ] + + 'buynow' => [ + 'no-options' => 'Por favor, selecione as opções antes de comprar este produto' + ], + + + 'checkout' => [ + 'cart' => [ + 'integrity' => [ + 'missing_fields' =>'Violação de integridade do sistema de carrinho, alguns campos obrigatórios ausentes', + 'missing_options' =>'Violação de Integridade do Sistema de Carrinho, Faltam Opções para o Produto Configurável', + 'missing_links' => 'Downloadable links are missing for this product.', + 'qty_missing' => 'Atleast one product should have more than 1 quantity.' + ], + + 'create-error' => 'Encontrou algum problema ao fazer a instância do carrinho', + 'title' => 'Carrinho de Compras', + 'empty' => 'Seu carrinho de compras está vazio', + 'update-cart' => 'Atualizar Carrinho', + 'continue-shopping' => 'Continuar Comprando', + 'proceed-to-checkout' => 'Finalizar Compra', + 'remove' => 'Remover', + 'remove-link' => 'Remover', + 'move-to-wishlist' => 'Mover para Lista de Desejos', + 'move-to-wishlist-success' => 'Item Movido para Lista de Desejos', + 'move-to-wishlist-error' => 'Não foi possivel Mover Item para Lista de Desejos, Por favor, tente novamente mais tarde', + 'add-config-warning' => 'Por favor, selecione a opção antes de adicionar ao carrinho', + 'quantity' => [ + 'quantity' => 'Quantidade', + 'success' => 'Carrinho Item(s) Atualizados com Sucesso!', + 'illegal' => 'Quantidade não pode ser menor que um', + 'inventory_warning' => 'A quantidade solicitada não está disponível, por favor, tente novamente mais tarde', + 'error' => 'Não é possível atualizar o item(s) no momento, por favor, tente novamente mais tarde' + ], + + 'item' => [ + 'error_remove' => 'Nenhum item para remover do carrinho', + 'success' => 'Item foi adicionado com sucesso ao carrinho', + 'success-remove' => 'Item foi removido com sucesso do carrinho', + 'error-add' => 'Item não pode ser adicionado ao carrinho, por favor, tente novamente mais tarde', + ], + + 'quantity-error' => 'Quantidade solicitada não está disponível', + 'cart-subtotal' => 'Subtotal do carrinho', + 'cart-remove-action' => 'Você realmente quer fazer isso ?', + 'partial-cart-update' => 'Only some of the product(s) were updated' + ], + + 'onepage' => [ + 'title' => 'Finalização Compra', + 'information' => 'Informação', + 'shipping' => 'Entrega', + 'payment' => 'Pagamento', + 'complete' => 'Completo', + 'billing-address' => 'Endereço de Cobrança', + 'sign-in' => 'Entrar', + 'first-name' => 'Nome', + 'last-name' => 'Sobrenome', + 'email' => 'E-mail', + 'address1' => 'Endereço', + 'address2' => 'Endereço 2', + 'city' => 'Cidade', + 'state' => 'Estado', + 'select-state' => 'Selecione uma região, estado e província', + 'postcode' => 'CEP', + 'phone' => 'Telefone', + 'country' => 'País', + 'order-summary' => 'Resumo do Pedido', + 'shipping-address' => 'Endereço de Entrega', + 'use_for_shipping' => 'Enviar para esse endereçõ', + 'continue' => 'Continuar', + 'shipping-method' => 'Selecione o Método de Entrega', + 'payment-methods' => 'Selecione o Método de Pagamento', + 'payment-method' => 'Método de Pagamento', + 'summary' => 'Resumo do Pedido', + 'price' => 'Preço', + 'quantity' => 'Quantidade', + 'billing-address' => 'Endereço de Cobrança', + 'shipping-address' => 'Endereço de Entrega', + 'contact' => 'Contato', + 'place-order' => 'Enviar Pedido', + 'new-address' => 'Add Novo Endereço', + 'save_as_address' => 'Salvar Endereço' + ], + + 'total' => [ + 'order-summary' => 'Resumo do Pedido', + 'sub-total' => 'Itens', + 'grand-total' => 'Total', + 'delivery-charges' => 'Taxas de Entrega', + 'tax' => 'Imposto', + 'discount' => 'Discount', + 'price' => 'preço' + ], + + 'success' => [ + 'title' => 'Pedido enviado com sucesso!', + 'thanks' => 'Obrigado pelo seu pedido!', + 'order-id-info' => 'Seu ID do Pedido é #:order_id', + 'info' => 'Nós lhe enviaremos por e-mail, detalhes do seu pedido e informações de rastreamento' + ] + ], + + 'mail' => [ + 'order' => [ + 'subject' => 'Confirmação de Novo Pedido', + 'heading' => 'Confirmação de Pedido!', + 'dear' => 'Caro :customer_name', + 'greeting' => 'Obrigado pelo seu Pedido :order_id realizado em :created_at', + 'summary' => 'Resumo do Pedido', + 'shipping-address' => 'Endereço de Entrega', + 'billing-address' => 'Endereço de Cobrança', + 'contact' => 'Contato', + 'shipping' => 'Entrega', + 'payment' => 'Pagamento', + 'price' => 'Preço', + 'quantity' => 'Quantidade', + 'subtotal' => 'Subtotal', + 'shipping-handling' => 'Envio & Manuseio', + 'tax' => 'Imposto', + 'discount' => 'Discount', + 'grand-total' => 'Total', + 'final-summary' => 'Obrigado por mostrar o seu interesse em nossa loja nós lhe enviaremos o número de rastreamento assim que for despachado', + 'help' => 'Se você precisar de algum tipo de ajuda, por favor entre em contato conosco :support_email', + 'thanks' => 'Muito Obrigado!' + ], + + 'invoice' => [ + 'heading' => 'Sua Fatura #:invoice_id do Pedido #:order_id', + 'subject' => 'Fatura do seu pedido #:order_id', + 'summary' => 'Resumo da Fatura', + ], + + 'refund' => [ + 'heading' => 'Your Refund #:refund_id for Order #:order_id', + 'subject' => 'Refund for your order #:order_id', + 'summary' => 'Summary of Refund', + 'adjustment-refund' => 'Adjustment Refund', + 'adjustment-fee' => 'Adjustment Fee' + ], + + 'shipment' => [ + 'heading' => 'Sua Entrega #:shipment_id do Pedido #:order_id', + 'subject' => 'Entrega do seu pedido #:order_id', + 'summary' => 'Resumo da Entrega', + 'carrier' => 'Transportadora', + 'tracking-number' => 'Código de Rastreio' + ], + + 'forget-password' => [ + 'dear' => 'Caro :name', + 'info' => 'Você está recebendo este e-mail porque recebemos uma solicitação de redefinição de senha para sua conta', + 'reset-password' => 'Redefinir Senha', + 'final-summary' => 'Se você não solicitou uma redefinição de senha, nenhuma ação adicional é necessária', + 'thanks' => 'Muito Obrigado!' + ] + ], + + 'webkul' => [ + 'copy-right' => '© Copyright :year Webkul Software, Todos os Direitos Reservados', + ], + + 'response' => [ + 'create-success' => ':name criado com sucesso.', + 'update-success' => ':name atualizado com sucesso.', + 'delete-success' => ':name excluído com sucesso.', + 'submit-success' => ':name enviado com sucesso.' + ], +]; \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/coupon.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/coupon.blade.php new file mode 100644 index 000000000..090740935 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/coupon.blade.php @@ -0,0 +1,119 @@ +@if ($cart) + + + +@endif \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php new file mode 100755 index 000000000..294c0c5b6 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php @@ -0,0 +1,247 @@ +@extends('shop::layouts.master') + +@section('page_title') + {{ __('shop::app.checkout.cart.title') }} +@stop + +@section('content-wrapper') + @inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') +

    iYmoH+^+rb#!eF}vP^DZXN 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%0ABB*^BogyNJaF() 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�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¬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 fABAzurF=Z@f$Re zJ>{WQsm#bZx>8?X4m@z#6dv`_uJ{87?O=Vezz=WRX`9C423=G~m`mNlt1sKAjij%( za5o9aZ)42jIoGvY51|bnB#ytL2W^rqdT&zbTK=YAXk)NBrzdsjtk0;+@z@h6qdWeu zzJpAvhhOwX&iF7P&wuoRS@ibpExGH|{c|V^Y}e4GKYrnCqKDtq>8Dx$i9!d@=*2Of z@n!lP!~iz0ntRvX-9wrnaO8ZY!+cLMl| zNv!sxzrokrzdQcg2;4hf{Ns-<)cKex-)_6tp=EDNQQbmg{6$JIe)jrXPBh>N|(}b^*fp8`9Py82-qmiby}S zD{RH&m_Eb;{F>+-(i{G4X@Iw}COC{8jdy`D&r+mKK*PPty2A{5^As&dZr&^ z*w5a4D|dQMZeRWCt0j?a)+9w+{QEDOsl7xpwU;h7F|OcnXVyFU|LOnwr`tDQ%2vy~ zZRt^x%x{15tJ^Q%OR{<8jqU1d-wEEQ@^0SS+k4lqXUp1y?b=H(ZBHFs*?yOgy_`RF zZ2RUnzOw!5H#fK6|L()>8-M2yg2yYwl8lNWkt<#%fh22og89(k|HulBihpnBE404$ zN8WTqXGiu0uRfFp1-tdub<0SZwpVgB>Ct!+(tW~} z3-zhckpIKWp z%H?cR@crXK5GvDRlB!fS`Mh=W^h zA|%BIra5x^>>6tOQIeUA+ZnS; zA~;Bf20wZNzZ5gRk?$nI30e_I6RPqwGdFdT2eN1q5d55jfmMF_M=-Cz(4aC%mZQP7 zVC1m+FFknAO68)94B=45Km|I^L4G5Hu3knqg2tWOHxm>-E)C>%_mi7h<^QM&5LwM@ zhX$YhS=Co~&;R9-(~~6`C~&gPHJGYHpE}MV6ytMfda^QxK6PEWjZVOqge@KfACrOB zF{=D;Fu^N+w6APS^CTFnKN$W@$lzu-Zk498{GdxP+eO}>v0!O0h|Kj#I)bWjz(+Gs z+R!IHtH-pVFaMDb`uOC?6oeVrv`3EujzW?Gn*JkCHZt}PR^^y;_V&d@f;@SjGj%NmF_0?@;!!HY?dYpu1B^E>U*e@2W@W*n;K0*f@2Fq)+ z*eM&L;WaQ2PWPPVmpsc8KnRN8vP*ULzmivFo!`aJ&^ZYe9|NN@svJsP|IwEo17_rt zW5QO4#@a<_qa(3Sd&hps6JGLEM(^y(WF+>NYL~RD>_db03Y{20E6c#bKYn^W*P2A8 z5qaRHiDCM!1d*O{wYZiZ5w6~Onb1DCO>)@9!d0FlKlWT7O`Fn_u#6UE09UZ^6gIz#kuUEKZ5N({y~KvcxYQ(l^bRL1lt=@~VxHXJi8x zIf~1+=H+5(uU$AI zCP9<9Ff(`+lNP)#8yb5bTMoM7F<~ga$QW$LwUf{UCi>XRvfqjM9&*b5>D=-k8H}A) z#-T-<@)()BlUUmdY}dZlAceoxS?yJgXzO@P1^8_T&>j z|9v5!?LKkt^7hW(yt^Gdez<-2Td!|__UC_|huvP^UVY{HJUnkJAiJdc@It7BO~w(R zL$*G5Ux;q%KFF6FeMJsWc#rz(gBB_2hR&YNXU)UH*im?%J0%bVcI0DxAp2-M?FMc; zz!E}STfcO}Pn=I2(LTU)&UcL;>RT81^w2~$O(xmheNKP;>WhxZx4z;%g(>RUy*#D% zpJvmPeNIjR>0tsLob;)UoNCJ0A6~{zz=MD61y;?K!u4NWIa3^B9;2QyWg_fe3;UK~7$Hdi(P0f3Q9K!b{uD4{mJN-~HFy z%U}Bsw>Q4|?QCDjCo>}`1NcfFIs*(Ia2S%nufPjFMmQ&-tspB9DNSl~EI6#dK!^*b zzSBpb8YO{)mk#d12^L<;K+f@82T9+VRT4g<(>}2Gcvu-Upo-HCLPM*ors?Thv&*q)E z`5ftqe4>=$pUM7ipDP8Ep2;fM`-@giif3iXnVmFs zFo3CJm&$VB28Py5pE=~{)6RKqByt0Hjw93f%1SQ4w~~Q(C5I{fr+Dx)fo1lq_6;Ys zb$F&7d4X>-w`>cP%Cg|5ox{CLlU;o#SdU(uSLSUuI@V{l91XnML-?Vy+Hg8mm-$u4 z7V2M-0eiu-f=~afl_cjT>0~v&{Dq`Gwx@`B>`hYdSbQW8?cvr}vc^t_@9`Oa%6?s| z{xMxTSCT6+XM1bg!>ml$OKA0~_MOoS+!dz`Vsq;;JY^sl72%KUBDW+pWViTprw5&r z#H>U?Qj!FEk5AgO-^QTSvB6ZeoH{jo=J?g&1UXme2(R#t9U5dOX<3sIv^2VXOp_X(mr5X*cLtOA8@s!;U(i?CTwg|QJ2dD&vE`1&91|#4&2He+~6!9 z8l*S5b>L6CMXxLRq-yl8Wlo$UhA!s%)H$yG$ zwqv_VFemOp5_sw3931k-sVhUr*j6i2hv(W|2ow*%wLeu1H6}^AE$Yax=xmMQE0#2A z4h)1#lJQCYXe;c}8oMa|v|<-&3mSBc5%bej z86E4m^SQ&N<4>|h?ya|ezWu#F`to-4!QJh|Q}?z%$UfZP+{-r$p80ZK;mPJ7^*!N| zYj5%K^)+vT@@)ePc~2dj-v08(Kit0drK=e~x9y$ZWq!U@TjxeA7uE#|j%FH!>R?yBjpaTwVWIlEfiDWWF@9M}KZ~UG; z4E~XK&k+##Xj!Y>Xy@wc`|tdeC%C3A@?jT!yTpv&{JA`)KY0GEKKn(>k#*7P>Lf1% zS%94Vm;s$CK@r1@8Iu^3XsHuyFXW3O>UxVg?Z?R>1i?c)z_ZlA}HUw-{t z+sSiJZ(sf9HzJrM&@q$Dg62M5`~o5O5JnfJtU7BYq>)jc*Cw^1qtK)4u|{nK9Yqs|lK+UG)Pg0I0cvh=Rw zHL1FE@nU!xSsu;jLC;^fvYpRMy0hb>d`PULj@p*@3etnJbm+LNA^GjC;9iT4Lo+_$ zWS8u8=!`=|Mzz)GmaWkfS+{{kDT8M}jtuB<0`DGF!&mtUY{`{<;9a3gUyi->z_ymH zlBGeE!`E*@8+jv?qr2{uZppl}@W89?LnHl_pZ1@v8RZkb>4WCMI{{^aL~Js!^dk>- z`8PH(Pr#z5ebXP_75v%A@{84{{*VX_o_2y9dmkw+x@T1snx!LfG1i1|=a;U?o_+g6 zANsXfTVf{Rn51TS8yiJ?VF%WeJ-_(!S33{TF`Wl$el$an@0eaU~xr#6tr#wmo_q<#*pD zQv;8-@w?Dw@@X}Rh}pDK8_6*rBX@sn-XYoO2ag0qU2Q!F=n#(xZrPK!IDm&%7Xqez z@j@QOw=XiFP2!^OD&z)7{%^n5hyRIJCb1=_x}dYhw%yjrzHd9wDaXTm;um;2rYt%; z0SldNlWTFi(!!pUA50(pTf+Dk4qHX{Xnixm$jJJN^A~@L;UbHjbnF!OV+uj`kBz1hoLj>!VkCcfevgVFy?K?&ul;c`J3BwS5D_ur61*K^&upC9pUG#tDUDDT=`?fl?5M>v^tq z^(g=d+k#X!q{^fgJoKv-O< zGx@NGoKxTzEo?CdMFua1M!JEKz{$wj3L9mA?1GHxOLK#nKV_V(hlNvJgipWzBmnUC z7F{~eOf-pP==VUU!Oh^X^zIcnbO5e?{zh&nL^FM7|9JE!iD|p&W+e~ULa#)reo#Im z%kY9%Jh-mkK-+2054(bkY)8*C=s&63ZG6WODr*xUkQe={W2=sflddBw@C0?mG2Oy1 zfk%&D@E=n_Bpn_xOJfTNR(TyKK4>!JMcqtt`j*BXWv z_4FdJ(uX*;aH3mVAE<$&aU(L7taz=P_AB|phZR#RO?YIF{1Tr%PaW&&1Sh|IiJtik z{BU1U^2I_3l!?d!{C)3j|})AsOuze8YHZYlW0hWs}PyT0k1`o^cUtFNXGk7B;kM5IUa z4@#P_gucdvAQ1P#s?0++oq6toj}{ld3g6(;tyg;1b_0uVz)KHco5VE{E8lZx6>M^& zU%F)1wJoyHDW!cP4`T>C_`KiO?akXW^rNSKH8nKC*{wiHcf@7i4QNaYUzKgt6gSUt zz5;nVAB#yoqM*}VE_nFFOE0{%ojG@5`}o$~V9aY&^P!0#nHU&)4)Ug{TnKOCm^%mK zXVh}?^ttWhJgA@N_qTHg8O!q#lNeQTO8&|9SUw8DH{kEM6n@1qGGV%62K{|zaVf`L z)fI2j&YoVf8X0GCD-VL3aPU9E#wR_~)2y7c%h9E+BV>+Of7*`!rQ>0VU&TihKC`Z~ zkI|VJ;5gh9ehU5b6K$Dz>7idVsmPzCl|Jdw0vcHL>skmsj@`C@aJjZ*Gp~^2uQR@q zy-%%suw6Sbm~F@%=5?oy-3)eS#bdljqZFV1Oc|P*&^Eh|)EUY>Um6oIQvh;%pTQBP zLNGP>2(F1u;9x$deIKtEzJHR9*S~xJw}F#EIXv|x-W-t-(mqn?yp#YafP(!;p`1@$ zS7tIWaBV_e3SEOVT2?S|tS=!bWbS<3UIQOquPvbvN_FdT6;4MUe!&E#GX}H)mSVNo z;M0LJcxtSdhZ@M}+IOU6w&)`ZUmhyl{KIzd*fd>?#>dY9<;(EV2ph%=eJYd0&fuvZA0gi*%N!JL<)8Xa_<~ftB9~k) zeYM%(Xi^inaG`JUg-$YR2Z&Sjtsmx?pF7vbuYb_Ur_nPuV^94AbNs;4e)*jNefpP% zzu zPwg7s_V^VZ-n;%mbuXUL4?MkFls5PmOX*#bP@5>mU`V?TLZy3bfUTCtT&oI>moA3Tt6Z6WaSfj)(7Ixt2qjot9%8Xr^m3;zbMb{iXlgKoqN12I3V?$VxZEPa#r zS|}g`@~J=2QSgm@i+gDEX9Bp7S!A(*7Vgj>hO5>eOfZI(#GB|Cy==n-+I99yzi=q@ zt$pRQ(>gH&(240_DB|M8v-Ap5@Vda0e&CUlNga81Z@W&$;mAw8Ty5C0x4;BLvLY`ymT!~sdPg!^^#flU zKGeO+!Gl-lXmibk5{&v~uA!%W!gCJOK79j^O)s3Ma~Jc@y*s&slTTgeLs)n2+{|6y zZM&V1Ze9QVjoJ{n?p$I+j0NZRt$dRpaLH9@^q}^IY~8zd_53`*9!6~=feW4b@+m%{ z1VrJic+U>TmnT_$m~pEUv)XmyB3$)vcS_jLB)EK{bm1*}1XsJ6IFGI+uINz6Lte%& z~>x(@JaOZaX$WWGk+i7x|s<|9`w_C9AX9;h5&Uy ziob(V2Dp+h$Rw%u7Mo4))@j=3{-QMs%U4xf^AY6}gjj@%O5YM>pWj6BkbJw;v zzVi>tl+QU<2mwb)7^YalopS^H7;pF-yxI!tY1e>RAqs?9HV=#m025Rh_$VcbS7;#A zkjDm!s}c(zR*MBdf^KnC5t#CKi{1*HzRnLvbt-fuEAd8m(55 z!I-^t(_VjuFQL;^{Rt6zzOMdtd6ID<4qs&Q6oK;x8A&H(Kbbatu6r?;s9;{?x;jv-Wjv@LMt? zYgBnf4f}8%4z4)3cD^Ysr847F0!#d=aKbzP{G87A|Im#^c7{Ghpk*6qQM7@NPp)JK zUOI6OzBn@-5*d99cWl3<8M|~l6^v7S}orG!<$dC})LTm(~uXBHJ zd5EoY2>ev#`q&Y_TLpX%yLj~;81;$Zn$`5dk4~@`?d=noY?;rtq_5Ycp^vGcfv(8S zR~PkhOs@60@CV`YF>tJu!asUU@{<8ZF_35%l+{^v9ggU6@tf}gM}|*UN^86IiHW}^ zSq8PEN9H*Qw!pv8fs9iKFNr*VqcR$z|{$9aFP3pKX_BfkZe~Ge~riO7uyx5khlCxTh~XtJ~XezqQ@?;G^xzl?%0b-wE)!^Pj)< zb`}Od?Ok9P&gb>0=kn&HBiYY;@tJ2C>qt55RFC;ZKb_Gned6VC(v!P2OO{NS@NIHeJwry3{>=~5S|&B)e#XhbRrDtp#TaBOE4(X4 z!aJYyZHu-;dwP~HeZ?4X=&+OD@MjzbLw~YIkG2!tHEO z3IwiP@60!C4Q|fSp!91o#H?IHGOx>hG8 zAljo1558WeH5x11^zr4iCa^h9JS;PjUFtS`@V@M}ooNp1@Xp>5GniRy}eU`KV_LGw=^S*KM7sZSaA} z0RXg-?ZfEAu|g(Z6z4&|m&iMHm6whl01GbiRq99eQ8wg{F7r>z z_|_bT|8yrucygG69x}^BH%8LFu_?AIxg!sC{>Tmuj$NPQ@hOnN?4T9>b-+zSZ4y3f zBl^KNaKfhwwi^Q25L}Wuazk6?6k5rp*MfiDP8TD}2YE;SI?M!j-pNZg;uV@oORg{3 zkfpY{G;s4uLE9~SD90pS%p#PDcajXr&m^FwCC64g;a@hHs_4N$xetE3zVJm~{I>~e zcnIg=m(OCKJodOxRwe&<-D7ClngqPYfxG8IZTybFVkB;f0emYGDZsc9P;O zUjl_V!;aulR>e(O0=r$SY;*)h&7d&Z;n@Eq zf{DAiE_N#FIxeQu!c9K-K@Zsa!-Wp*8~Y{o!BxuClY4#vFaF4)@*`7x<;ohjJI=7t z{8xY5>4k%=8V^&aU96#Xg|OF+t;IfrbL!DGKvqJlO?4i;$a38|p5U2yG&Goq{`AeC zZI_?UgYvJw*axzgJ%FRVf*m z`jUJ7C)({qr+O`#k?DTE?3Mkn!!_PK8EeQKjv7Y+=%WsvCw?YBA>*+#vIoyrEyNqw zw6BiyyZi`1^|-B3c9z^F zj%BY`UYjAfSYha{5Z8ffYzNAOXyMh7P_o8$b`GpHbR6WDybNqsQy42lRme)QqCSS1fj6H=WP=BRXCJo2 zR)Q+Ipwse(-&}`d3LXQO+;-Ro8-2;Ix5EHU>3|rX==)e!bSlTxuLN2Ui`8`xx7#U) z0{~dTN4^R=@}%Uzj#LF-@{9?l%;3v`Yw&@`2I!VN$)HJhT2}9Yx#%KOd&vzn_*tvG zT}9+Dbei@vIHG3;P%uCH%=KA8M+Kd)$)D|kd}KXV=0 z*`r?ST%TZK;;3FSX20gFs?DTGz14ZdqHkvTsVq%nuM?n09`Mc}fd8Rk?9Z_k7`Kk_ zsNe|`CbhW`x=USJLN~tP)|Nmu17^u^HLC(_E%c?Iwq!K7h4;x%&iMzrT|*z=BA@;j zS;TZ)uKm+v17$$MhlUPBIj)>?USg9BM3TKl>C@F3O7yCXv>2ht?^U;)qpApLY_)9lQaD0H3RFPQ*! zu-|o1S%k(}p@03kax_j9Z{;lrhK{+Sp< zl=UjWuG%~f-A8h z33}!0D`U}zq+lk1qiZs>wU5lK2A9sr9?kHNZOwuKLK{m$TXhxQwecT0pyyGL72nPm zvCsxS8XKbn{?supZCnSdat}Cfkx|5c^n<1F6>TPg8K1As=DK*{8l5#31&&vD(z#er z`p7DH>NB;iU2layzDsA|lLy?5-Kl$+hb4`VCj-mFjbPBh@)>eRXD2>ksD6-NTOo|` zCSiEwODksDdVps3nPxdABXMvNI_=>Hd-%lYB=-;Uh6H+N@AOVr)pc+wUBn1}V?|Q@ z^dDaF28X`%fu6K(JX5bOUFuiIldIhRQ2yf?n#BIRb>ZOj>Fw?R_pi3Me|u~DFaPuZ zq;USvAN}uH#m(2vl4#25zWayY-ClU<>h{aGf4TkmM}M*1zww*xD__cUDhFq`Q)jXo z92(Kv1&z?7R5rygHbxkMgGRAPZYE~t@$cGE>!R0MRcP&^Vf8#?BG`@hX;B?UKIJWP zBoF*e--!e8&>b0#3`P#%tZVe@ny$9_fU#sq2PHY5ZB~c)WzVj$^ZIpSx1@LE4xjV6 zHhwD}SlOPOj^ELHNK3Jzs}J}SH_*e6$m?PDi?ai`+--4uH1+Z%@wCrlQT~~OGg0IO4Sn#|QUZD@M<2(MExdIg zODp`~k)qWT?kc0S8NAHGG_r!Fm}%+b){b96X`E)@ETQ8A{Ll4`QWQ#MS)%u1|O#CzZ@b2lvg~W`DK5_-HV|U)q!LI4fg~%mmc*BgM7S3V)N3^ohVa znQ-o@RkvLQIGc+$>*P@Fl* zx@r4?P51sD?fUm{oX)cSi2-d@TtFnFMUMKVf`XjsXl z`s#2W^jDz4BYsw}aJ(i+j?qcSiUfu2fFr38gdSy}96ge4v?*>zmTP+s8RKtwn&5_7 zFpeILT&%n$;qaf^)ZM2Zfd<5s{Gt&rgL@_?XsXZT0@*8Q)y6e(gUk(-%FwQ_WBYis zN&#-Jp&Je(2N+i4BxU$oTNB99p82&EhTWkFoqh#OIsjLq$d^op=0h?wP~us6yvq~) z=q0Naa7Xt0pb_~`V(HG7m6_51+#(#Az+XF!eY-Ac0K;7o`}M%L>PfC%R-dR93ZjSf zE4%=J8*SC!Zl9XXeoPaN-R?^L$lX>F^iK?!0fs*W?4dj#WmSrt%3s>E3+H|3b=r=7 zMJ5IzPL$qHbZNqAUu+&GPCtWEbr{;|2<~|R(Ei`V>5j#LA34x{V@g2kOF#N7_}m07 zPo+=!P6IM%@)-l}c#uS^w{1g%BZ4Ig0It|3rYmvNa7Z{ILaoFD9ifZQxu9 zSJ1@{#PP(^(Ct&z?v$0UwBw89kN>fh8N0N1z9v9R{@~&B;9%khWF71BTl(_b2gT?M zx&0?JM%MJwZCHC<$ZeuZ=VJr$;cSBwi-n@46mV+VZ1pE{+hbGfXf{ z4F+3aj!`Ozx^-U?R@6< zKmE`C!S-MLqkojIe15uJzH%jci_a%#_~(E6qwW9s@n3BB?tH#|>y@+HGr4vuNii9a zlgSa@R^0I$;)o9)&N0CtP;glAtANyN&!DyO>w5leSpmTe1mQ0G9073qXrkHIW8^-p`pq3P9q+M_Tg~_p*rX8bet3rFyJM3N|j`y zg)-GQK@SGJ;Y<6jE~Rf38v4j^=p5$&L%Rmn>bjOvS*~{TwIA{go*3Su1>H5S^jF|4 z?i{m#4q!P(8-CE&g09f4|2WY&>m;htXKYNXCG>`C&3UI}EA13FK;;>1H_h7N5E0waGhAaYK{qj5f;dR*q`Du4A zlU$$e_Vp%mERXCRW2J3$jLCsDcd}*=;NvcOG)YX~bz8IXVW%ID6H{kFp!$xC)oa&P z(b$y95Bktmo8D!WW^GHT`l5*~IcAIEsYD)sYYf4o!k5X&TRLh%sUMqlMxPlga!(sR z`~lu80sgmr*7+b`{Yz)yqhHLat)z)P>FmWheM#Uj07Z3>19mCVX$&NTX;K>Sv+l6q z&*YEIO^NQ)7QT4{0GYUJH4_CCf>|Ny5S;LU2e-nuY^msYlMdv_A6&;1J{^ypJh3sa z#lnPS9sT7$JZjs-IJ0BSiPVym3HlR4JUULjKKG1~@roi6W2YY?< zCqLa@c=5&U#cTG=4o{u<#|{(;)RHYBkRO_=;=q&4L+g2$`}gnW874lJ74EYaw`X5` zZhJnT68?)H{c!uMfAeO(LvSg0)Aq>c+b1_~Z$JFOpKbrw5C8f0@^epb-}}mi^v?&d zGLbrU`GxJm8lu_*>eg{zj7Q5R&mG@=tqmAXDn;;{^Fh2z@X3$90FMZEI~$$N*q!U4!Gs8Yi8OzyZRFTuUgJtGE}xoT zcuH#O*$UVokR$kO{8GOX=BZ1g!=fKPz#4tQGqzyDD9+cuBERvcks$yho2iHQ=$F6# z?e9Z|v3__UhF(Pkc!5NVkT5a>p`hfKF;^WyY>$MMT^oZhU%Jo-YUUMMv4BvCS<0M& zVi*IP^s3}gkAWuL@Ufg!l*t$zAu$YewUAlb*T{DR0b8jMgR?XEw$WCSG|s1=U;{52 z)?f$M3|eK4(N8Yk4~TvZ$c{W? zI@KM9(Vzdz+tB6~TUO-U_KV>+sriB&@CIJ{?fxy_7s*HgYY@=VdPkO&{_bqU$n7>uJEOw zWT|uotW`Yv7DwSHnJ-TA=w8B9*}9rG>;&vJxkX1RMm9NQZ|ndpaz(Q?>{GqJCNjA$ zw$|=q&*V39nfkHG!H>Vv8CseU2L^gaW)s7QE@nwa;z7x(opsw!C>lG;h5S$7;KE5B zP7;~)R4?bCck^gsH;SGK?R#`zdx;`*aJ>vZn?cJ=56PW7U7ZnmSJro3V85|} zkb}E&-(_RGSa!B-YS{{$aPcQTNViLLa46Mpe)WNetZQ4Lla40tjXzEMi8*vD*09B8 zyRNrBb$lEgc)PVNbXP>dfsTO%Kip#U_=?{?tR7vntD~CRE7^_d&9Z%w6W)b>AeEtdcHN!^`LJ&=HaM{C!kufliHw+@$ zmtaC`1SAm~W9Pi%1m&+xg|+l!>|>z%P#PtI(_cbtuo$Q63RW5p?zu)Vt4MV5=(I1nk|!CjID* zd?yfjk4Wv;uiA+n$e~Rgl#JooWR!N2vy%K>9_Y}?ZDc!&R#)h5_asfy%z1BN!Y}=G zovg$3X+D(>i?`o;k`Cjqy@bYRmV7O;mdMaU*g&M+8GxOmBT-1KZI*NTcLyxj?}IOk zG&``tr?<4zj(xVn<%0t-PJ1+?U{}f)*6hn)(b9td;kzA&;|IIWw<+9}w?6EY7aeM! z$Um8eGddnGaD9)(gkJqA`sUh^pKK6-C7YiF1*0aB)`=~$-nZeSxs>*kN&orh;wdfD zC$BUjCoc8t^eMK{0Y5Y!<+oG{D*$+N59mevlpLV`!2?`PJ?LM z7hKRHb44t*(W7s_uUsxG54Hz^&@0A6bVleZ|HmSoqqpb4_a>OyuWXl%=K<*u>G|XN#9qmoUD@ zh{t)HicF2cD<E=!9k^!wGPw9^OejqS5P{1xx}Ix~3@_V?dL@QrVNv%jA9A`{nN{qk40KmE}UtLrOy zRO9D={O;|C-_D2Ap1*SYZ@>BI_9x$a^Y-8W)%R{c{^9HWe%xQC{j2$Y-yi+e|B!EJ z`1b9K%%N{JJ?l@gn~*LH!`O^OO5=V&f;CauEH@_1KCG`mtxMSDtdnVrKbPzm@TR z_~SqO%U=it&PzFj>_j~YcoGJ65Huk7!%w-^q#Q;D3XUuB{M&z%ACU;1-UiL?O()Ck z4G06_nTb=@fTn&R@oP!~2_SVq07N0bg5q4_s&=JzACQdD_UaisvYKd|i31}SkOH*e z21t=hml=I+H}{aVCTQC&ca8Xgy$EQrVp}fSEmZ^eVf1rw6OjBcTazT|NRcaAi>jkku9=b;aW`(PT*3$)-Fnv%Bb zu(l^p{`IxwumNK$^!qqsPeogCyFSqcJ}G!D?%4aAETKcb#9CKk5TGcl>N38J;?b#a-Htd84MnvK>sp}Wc$NF{F)WfB| z7@frmytGw+=%mHfK6VT}ySQnR_KCyvL)QXd9ek^AWNHOH#I1T{!ebatW*8RB=C9Z& z{)tX;OhfU+?}n+#mYuxt9=YVl5~%6 z=fyVSu6MQ!s6a7jeoYtSAwDKUdUxX`{K@JAZt&n|CICQ%0efqVewy_<%uHC(>a)b% zwWP-!`q;GgX`lHeQfJ^!b&EcHYZG~SV*Yhv9RJ15e1*=lKhbQs@Pk@U@?o=Y+}?Wcz1u(j-QV8+_y6sGz5VHre|md2pZtIJd45{>t(UiNzw_1Y zr$2h<_VXV;$!6eJ`R?9lw-5gC``gPm|LFFU|NKAR-v9phZ_n~MC-(i!GsfW|pVe04 zIp_2dk1r*K$VuOB=xCcwN6+;B_O~B2e)!QAK

+ + + + \ No newline at end of file diff --git a/public/installer/EmailConfig.php b/public/installer/EmailConfig.php new file mode 100644 index 000000000..3b81bd876 --- /dev/null +++ b/public/installer/EmailConfig.php @@ -0,0 +1,92 @@ + $value) { + $changedData[] = $key . '=' . $value; + } + + // inserting new form-data to env + $changedData = implode(PHP_EOL, $changedData); + file_put_contents($envFile, $changedData); + + $data['success'] = true; + $data['message'] = 'Success!'; + } + + // return all our data to an AJAX call + echo json_encode($data); \ No newline at end of file diff --git a/public/installer/EnvConfig.php b/public/installer/EnvConfig.php new file mode 100755 index 000000000..f68ca88ab --- /dev/null +++ b/public/installer/EnvConfig.php @@ -0,0 +1,140 @@ + $value) { + $changedData[] = $key . '=' . $value; + } + + // inserting new form-data to env + $changedData = implode(PHP_EOL, $changedData); + file_put_contents($envFile, $changedData); + + // checking database connection(mysql only) + if ($_POST["database_connection"] == 'mysql') { + // Create connection + @$conn = new mysqli($_POST["host_name"], $_POST["user_name"], $_POST["user_password"], $_POST["database_name"], $_POST['port_name']); + + // check connection + if ($conn->connect_error) { + $errors['database_error'] = $conn->connect_error; + $data['errors'] = $errors; + $data['success'] = false; + } else { + $data['success'] = true; + $data['message'] = 'Success!'; + } + } else { + $data['success'] = true; + $data['message'] = 'Success!'; + } + + // show a message of success and provide a true success variable + } + + // return all our data to an AJAX call + echo json_encode($data); \ No newline at end of file diff --git a/public/installer/Environment.php b/public/installer/Environment.php new file mode 100755 index 000000000..e5914e6d3 --- /dev/null +++ b/public/installer/Environment.php @@ -0,0 +1,202 @@ + + + + +
+
+

Environment Configuration

+ +
+
+
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
+ +
+ back +
+
+
+ +
+
+ + + + + + + + + diff --git a/public/installer/Finish.php b/public/installer/Finish.php new file mode 100755 index 000000000..cadbd16f1 --- /dev/null +++ b/public/installer/Finish.php @@ -0,0 +1,27 @@ + + +
+
+

Installation completed

+
+
+ + Bagisto is successfully installed on your system.
+ Click the below button to launch Admin Panel. +
+
+
+ + +
+
+ + + + diff --git a/public/installer/Images/favicon.ico b/public/installer/Images/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..e9c217bb395c0bd8eb3ea6755633f62b0781ff2c GIT binary patch literal 5430 zcmeHLJx?1!6dYm`qwwj&1+tKE1*sww=zrc()9%jBd$XQfpS=f6;0+cQz_y3|Ca?;i*BgwFiT@z> zo*27i3~)BVtKEQD!Y^jYRj!{eI}l6M`NIxayi@LQHZZRItvSf2+5Elq@iP5vANlL? z@p0#8^{DfpTAfKOWmwX}QmX%uVP!3OXDRnMVGRwAPg3lxEHA^`O{|l9pYq-B|Hze#QLvzu)5?*ZN@x#_hLXFRX6=z47bE#Sdpod2}%>-pmt->UEbzwq_^ag1NIyJdAPIBV;f)pqt{ zjzuHHZMQMUHC$C*gL0V@s%f3;bTE_K3k9AiN4eJeRr!4Xu}L2exd;AI>+U7kS4`)s i*2#D`!2D~5%-_gMwE807e~WyZ5IJv%^jjj2EAkA9Xf6r> literal 0 HcmV?d00001 diff --git a/public/installer/Images/green-check.svg b/public/installer/Images/green-check.svg new file mode 100755 index 000000000..25fbb6ab7 --- /dev/null +++ b/public/installer/Images/green-check.svg @@ -0,0 +1,19 @@ + + + + Check-Accent + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/installer/Images/left-side.svg b/public/installer/Images/left-side.svg new file mode 100755 index 000000000..891572fc3 --- /dev/null +++ b/public/installer/Images/left-side.svg @@ -0,0 +1,23 @@ + + + + feature-bg-2 copy + Created with Sketch. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/installer/Images/logo.svg b/public/installer/Images/logo.svg new file mode 100755 index 000000000..412899b60 --- /dev/null +++ b/public/installer/Images/logo.svg @@ -0,0 +1,19 @@ + + + + Logo+Text + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/public/installer/Images/red-check.svg b/public/installer/Images/red-check.svg new file mode 100755 index 000000000..6911d37d2 --- /dev/null +++ b/public/installer/Images/red-check.svg @@ -0,0 +1,20 @@ + + + + Check-Accent Copy + Created with Sketch. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/installer/Images/right-side.svg b/public/installer/Images/right-side.svg new file mode 100755 index 000000000..a45fd2f75 --- /dev/null +++ b/public/installer/Images/right-side.svg @@ -0,0 +1,20 @@ + + + + feature-bg-2 + Created with Sketch. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/installer/JS/script b/public/installer/JS/script new file mode 100755 index 000000000..b2662e77d --- /dev/null +++ b/public/installer/JS/script @@ -0,0 +1,83 @@ + \ No newline at end of file diff --git a/public/installer/Migration.php b/public/installer/Migration.php new file mode 100755 index 000000000..cbf4b0140 --- /dev/null +++ b/public/installer/Migration.php @@ -0,0 +1,227 @@ + + + + + + +
+
+

Migration & Seed

+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+
+ Click the below button to run following : +
+
+ Database Migration +
+
+ Database Seeder +
+
+ Publishing Vendor +
+
+ Generating Application Key +
+
+ + Checking Composer Dependency + Migrating Database + Seeding Data +
+ +
+
+ + +
+
+ back +
+
+ +
+
+ + + + + + diff --git a/public/installer/MigrationRun.php b/public/installer/MigrationRun.php new file mode 100755 index 000000000..fcb9bb1c1 --- /dev/null +++ b/public/installer/MigrationRun.php @@ -0,0 +1,14 @@ +&1'; +$seeder = 'cd ../.. && php artisan db:seed 2>&1'; +$publish = 'cd ../.. && php artisan vendor:publish --all --force 2>&1'; + +$key_output = exec($key, $data['key'], $data['key_results']); +$seeder_output = exec($seeder, $data['seeder'], $data['seeder_results']); +$publish = exec($publish, $data['publish'], $data['publish_results']); + +// return a response +//return all our data to an AJAX call + +echo json_encode($data); \ No newline at end of file diff --git a/public/installer/Views/requirements.blade.php b/public/installer/Views/requirements.blade.php new file mode 100755 index 000000000..f0fd332b1 --- /dev/null +++ b/public/installer/Views/requirements.blade.php @@ -0,0 +1,70 @@ + + + + + + +
+
+

Requirements

+ +
+
+ Please wait while we are checking the requirements +
+ +
+ + + + PHP + ( or Higher) +
+ + $require): ?> + + $enabled) : ?> +
+ + + + + ( Required) +
+ + + + + + + + Composer + + + +
+ + + +
+ +
+ + +
+ +
+ + + +
+
+ + + + diff --git a/public/installer/Views/welcome.blade.php b/public/installer/Views/welcome.blade.php new file mode 100755 index 000000000..4230adedd --- /dev/null +++ b/public/installer/Views/welcome.blade.php @@ -0,0 +1,44 @@ + + + + +
+
+

Welcome to Bagisto

+ +
+
+ + Have you ever heard of an old saying, “No man is an island”? We probably heard that a million times. That saying is actually true because when we became successful, we usually achieve that because someone has helped us. And our thank-you speech skills could be the best thing we can do in return. You may also see + + +
+ INTRODUCTION +
+ + + Have you ever heard of an old saying, “No man is an island”? We probably heard that a million times. That saying is actually true because when we became successful, we usually achieve that because someone has helped us. And our thank-you speech skills could be the best thing we can do in return. You may also see + +
+
+ +
+ +
+
+
+ + + + + + + + + + + + + + + diff --git a/public/installer/index.php b/public/installer/index.php new file mode 100755 index 000000000..c49424f86 --- /dev/null +++ b/public/installer/index.php @@ -0,0 +1,146 @@ + + + + + + + Bagisto Installer + + + + + + + + +
+
+ +
+ + +
+ + connect_error) { + // retrieving admin entry + $prefix = $databaseData['DB_PREFIX'].'admins'; + $sql = "SELECT id, name FROM $prefix"; + $result = $conn->query($sql); + + if ($result) { + $installed = true; + } + } + + $conn->close(); + } else { + $installed = true; + } + } + + if (!$installed) { + + // including classes + include __DIR__ . '/Classes/Requirement.php'; + + // including php files + include __DIR__ . '/Environment.php'; + include __DIR__ . '/Migration.php'; + include __DIR__ . '/Admin.php'; + include __DIR__ . '/Email.php'; + include __DIR__ . '/Finish.php'; + + // including js + include __DIR__ . '/JS/script'; + + // object creation + $requirement = new Requirement(); + echo $requirement->render(); + } else { + // getting url + $actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; + + $url = explode("/", $actual_link); + array_pop($url); + array_pop($url); + $url = implode("/", $url); + $url = $url . '/404'; + + // redirecting to 404 error page + header("Location: $url"); + } + ?> + + + diff --git a/public/installer/install.php b/public/installer/install.php new file mode 100755 index 000000000..6bf86ea79 --- /dev/null +++ b/public/installer/install.php @@ -0,0 +1,89 @@ +connect_error) { + // retrieving admin entry + $prefix = $databaseData['DB_PREFIX'].'admins'; + $sql = "SELECT id, name FROM $prefix"; + $result = $conn->query($sql); + + if ($result) { + $installed = true; + } + } + + $conn->close(); + } else { + $installed = true; + } + } + + if (! $installed) { + // getting url + $actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; + + $url = explode("/", $actual_link); + array_pop($url); + $url = implode("/", $url); + $url = $url . '/installer'; + + return $url; + } else { + return null; + } +?> + + + diff --git a/public/mix-manifest.json b/public/mix-manifest.json new file mode 100755 index 000000000..2d6011713 --- /dev/null +++ b/public/mix-manifest.json @@ -0,0 +1,4 @@ +{ + "/js/app.js": "/js/app.js", + "/css/app.css": "/css/app.css" +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100755 index 000000000..eb0536286 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js new file mode 100755 index 000000000..13bb001e2 --- /dev/null +++ b/resources/assets/js/app.js @@ -0,0 +1,21 @@ + +/** + * First we will load all of this project's JavaScript dependencies which + * includes Vue and other libraries. It is a great starting point when + * building robust, powerful web applications using Vue and Laravel. + */ + +require('./bootstrap'); + +window.Vue = require('vue'); + +/** + * Next, we will create a fresh Vue application instance and attach it to + * the page. Then, you may begin adding components to this application + * or customize the JavaScript scaffolding to fit your unique needs. + */ + +Vue.component('example-component', require('./components/ExampleComponent.vue')); +const app = new Vue({ + el: '#app' +}); diff --git a/resources/assets/js/bootstrap.js b/resources/assets/js/bootstrap.js new file mode 100755 index 000000000..fb0f1eded --- /dev/null +++ b/resources/assets/js/bootstrap.js @@ -0,0 +1,56 @@ + +window._ = require('lodash'); +window.Popper = require('popper.js').default; + +/** + * We'll load jQuery and the Bootstrap jQuery plugin which provides support + * for JavaScript based Bootstrap features such as modals and tabs. This + * code may be modified to fit the specific needs of your application. + */ + +try { + window.$ = window.jQuery = require('jquery'); + + require('bootstrap'); +} catch (e) {} + +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +window.axios = require('axios'); + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Next we will register the CSRF Token as a common header with Axios so that + * all outgoing HTTP requests automatically have it attached. This is just + * a simple convenience so we don't have to attach every token manually. + */ + +let token = document.head.querySelector('meta[name="csrf-token"]'); + +if (token) { + window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; +} else { + console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'); +} + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo' + +// window.Pusher = require('pusher-js'); + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: process.env.MIX_PUSHER_APP_KEY, +// cluster: process.env.MIX_PUSHER_APP_CLUSTER, +// encrypted: true +// }); diff --git a/resources/assets/js/components/ExampleComponent.vue b/resources/assets/js/components/ExampleComponent.vue new file mode 100755 index 000000000..2805329ab --- /dev/null +++ b/resources/assets/js/components/ExampleComponent.vue @@ -0,0 +1,23 @@ + + + diff --git a/resources/assets/sass/_variables.scss b/resources/assets/sass/_variables.scss new file mode 100755 index 000000000..70ecfdb39 --- /dev/null +++ b/resources/assets/sass/_variables.scss @@ -0,0 +1,8 @@ + +// Body +$body-bg: #f5f8fa; + +// Typography +$font-family-sans-serif: "Raleway", sans-serif; +$font-size-base: 0.9rem; +$line-height-base: 1.6; diff --git a/resources/assets/sass/app.scss b/resources/assets/sass/app.scss new file mode 100755 index 000000000..0077cb141 --- /dev/null +++ b/resources/assets/sass/app.scss @@ -0,0 +1,14 @@ + +// Fonts +@import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600"); + +// Variables +@import "variables"; + +// Bootstrap +@import '~bootstrap/scss/bootstrap'; + +.navbar-laravel { + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); +} diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php new file mode 100755 index 000000000..e5506df29 --- /dev/null +++ b/resources/lang/en/auth.php @@ -0,0 +1,19 @@ + 'These credentials do not match our records.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/resources/lang/en/pagination.php b/resources/lang/en/pagination.php new file mode 100755 index 000000000..d48141187 --- /dev/null +++ b/resources/lang/en/pagination.php @@ -0,0 +1,19 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php new file mode 100755 index 000000000..e5544d201 --- /dev/null +++ b/resources/lang/en/passwords.php @@ -0,0 +1,22 @@ + 'Passwords must be at least six characters and match the confirmation.', + 'reset' => 'Your password has been reset!', + 'sent' => 'We have e-mailed your password reset link!', + 'token' => 'This password reset token is invalid.', + 'user' => "We can't find a user with that e-mail address.", + +]; diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php new file mode 100755 index 000000000..b163c4240 --- /dev/null +++ b/resources/lang/en/validation.php @@ -0,0 +1,146 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'numeric' => 'The :attribute must be greater than :value.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'string' => 'The :attribute must be greater than :value characters.', + 'array' => 'The :attribute must have more than :value items.', + ], + 'gte' => [ + 'numeric' => 'The :attribute must be greater than or equal :value.', + 'file' => 'The :attribute must be greater than or equal :value kilobytes.', + 'string' => 'The :attribute must be greater than or equal :value characters.', + 'array' => 'The :attribute must have :value items or more.', + ], + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lt' => [ + 'numeric' => 'The :attribute must be less than :value.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'string' => 'The :attribute must be less than :value characters.', + 'array' => 'The :attribute must have less than :value items.', + ], + 'lte' => [ + 'numeric' => 'The :attribute must be less than or equal :value.', + 'file' => 'The :attribute must be less than or equal :value kilobytes.', + 'string' => 'The :attribute must be less than or equal :value characters.', + 'array' => 'The :attribute must not have more than :value items.', + ], + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; diff --git a/resources/lang/pt_BR/auth.php b/resources/lang/pt_BR/auth.php new file mode 100755 index 000000000..d3c96afcb --- /dev/null +++ b/resources/lang/pt_BR/auth.php @@ -0,0 +1,19 @@ + 'Essas credenciais não correspondem aos nossos registros.', + 'throttle' => 'Muitas tentativas de login. Tente novamente em :seconds segundos.', + +]; diff --git a/resources/lang/pt_BR/pagination.php b/resources/lang/pt_BR/pagination.php new file mode 100755 index 000000000..4deabd6fb --- /dev/null +++ b/resources/lang/pt_BR/pagination.php @@ -0,0 +1,19 @@ + '« Anterior', + 'next' => 'Próximo »', + +]; diff --git a/resources/lang/pt_BR/passwords.php b/resources/lang/pt_BR/passwords.php new file mode 100755 index 000000000..af4efe782 --- /dev/null +++ b/resources/lang/pt_BR/passwords.php @@ -0,0 +1,22 @@ + 'A senha e a confirmação devem combinar e possuir pelo menos seis caracteres.', + 'reset' => 'Sua senha foi redefinida!', + 'sent' => 'Enviamos seu link de redefinição de senha por e-mail!', + 'token' => 'Este token de redefinição de senha é inválido.', + 'user' => 'Não encontramos um usuário com esse endereço de e-mail.', + +]; diff --git a/resources/lang/pt_BR/validation.php b/resources/lang/pt_BR/validation.php new file mode 100755 index 000000000..3bb08731f --- /dev/null +++ b/resources/lang/pt_BR/validation.php @@ -0,0 +1,119 @@ + 'O campo :attribute deve ser aceito.', + 'active_url' => 'O campo :attribute não é uma URL válida.', + 'after' => 'O campo :attribute deve ser uma data posterior a :date.', + 'after_or_equal' => 'O campo :attribute deve ser uma data posterior ou igual a :date.', + 'alpha' => 'O campo :attribute só pode conter letras.', + 'alpha_dash' => 'O campo :attribute só pode conter letras, números e traços.', + 'alpha_num' => 'O campo :attribute só pode conter letras e números.', + 'array' => 'O campo :attribute deve ser uma matriz.', + 'before' => 'O campo :attribute deve ser uma data anterior :date.', + 'before_or_equal' => 'O campo :attribute deve ser uma data anterior ou igual a :date.', + 'between' => [ + 'numeric' => 'O campo :attribute deve ser entre :min e :max.', + 'file' => 'O campo :attribute deve ser entre :min e :max kilobytes.', + 'string' => 'O campo :attribute deve ser entre :min e :max caracteres.', + 'array' => 'O campo :attribute deve ter entre :min e :max itens.', + ], + 'boolean' => 'O campo :attribute deve ser verdadeiro ou falso.', + 'confirmed' => 'O campo :attribute de confirmação não confere.', + 'date' => 'O campo :attribute não é uma data válida.', + 'date_format' => 'O campo :attribute não corresponde ao formato :format.', + 'different' => 'Os campos :attribute e :other devem ser diferentes.', + 'digits' => 'O campo :attribute deve ter :digits dígitos.', + 'digits_between' => 'O campo :attribute deve ter entre :min e :max dígitos.', + 'dimensions' => 'O campo :attribute tem dimensões de imagem inválidas.', + 'distinct' => 'O campo :attribute campo tem um valor duplicado.', + 'email' => 'O campo :attribute deve ser um endereço de e-mail válido.', + 'exists' => 'O campo :attribute selecionado é inválido.', + 'file' => 'O campo :attribute deve ser um arquivo.', + 'filled' => 'O campo :attribute deve ter um valor.', + 'image' => 'O campo :attribute deve ser uma imagem.', + 'in' => 'O campo :attribute selecionado é inválido.', + 'in_array' => 'O campo :attribute não existe em :other.', + 'integer' => 'O campo :attribute deve ser um número inteiro.', + 'ip' => 'O campo :attribute deve ser um endereço de IP válido.', + 'ipv4' => 'O campo :attribute deve ser um endereço IPv4 válido.', + 'ipv6' => 'O campo :attribute deve ser um endereço IPv6 válido.', + 'json' => 'O campo :attribute deve ser uma string JSON válida.', + 'max' => [ + 'numeric' => 'O campo :attribute não pode ser superior a :max.', + 'file' => 'O campo :attribute não pode ser superior a :max kilobytes.', + 'string' => 'O campo :attribute não pode ser superior a :max caracteres.', + 'array' => 'O campo :attribute não pode ter mais do que :max itens.', + ], + 'mimes' => 'O campo :attribute deve ser um arquivo do tipo: :values.', + 'mimetypes' => 'O campo :attribute deve ser um arquivo do tipo: :values.', + 'min' => [ + 'numeric' => 'O campo :attribute deve ser pelo menos :min.', + 'file' => 'O campo :attribute deve ter pelo menos :min kilobytes.', + 'string' => 'O campo :attribute deve ter pelo menos :min caracteres.', + 'array' => 'O campo :attribute deve ter pelo menos :min itens.', + ], + 'not_in' => 'O campo :attribute selecionado é inválido.', + 'numeric' => 'O campo :attribute deve ser um número.', + 'present' => 'O campo :attribute deve estar presente.', + 'regex' => 'O campo :attribute tem um formato inválido.', + 'required' => 'O campo :attribute é obrigatório.', + 'required_if' => 'O campo :attribute é obrigatório quando :other for :value.', + 'required_unless' => 'O campo :attribute é obrigatório exceto quando :other for :values.', + 'required_with' => 'O campo :attribute é obrigatório quando :values está presente.', + 'required_with_all' => 'O campo :attribute é obrigatório quando :values está presente.', + 'required_without' => 'O campo :attribute é obrigatório quando :values não está presente.', + 'required_without_all' => 'O campo :attribute é obrigatório quando nenhum dos :values estão presentes.', + 'same' => 'Os campos :attribute e :other devem corresponder.', + 'size' => [ + 'numeric' => 'O campo :attribute deve ser :size.', + 'file' => 'O campo :attribute deve ser :size kilobytes.', + 'string' => 'O campo :attribute deve ser :size caracteres.', + 'array' => 'O campo :attribute deve conter :size itens.', + ], + 'string' => 'O campo :attribute deve ser uma string.', + 'timezone' => 'O campo :attribute deve ser uma zona válida.', + 'unique' => 'O campo :attribute já está sendo utilizado.', + 'uploaded' => 'Ocorreu uma falha no upload do campo :attribute.', + 'url' => 'O campo :attribute tem um formato inválido.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + 'attributes' => [], + +]; diff --git a/resources/views/errors/401.blade.php b/resources/views/errors/401.blade.php new file mode 100644 index 000000000..5c586db96 --- /dev/null +++ b/resources/views/errors/401.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Unauthorized')) +@section('code', '401') +@section('message', __('Unauthorized')) diff --git a/resources/views/errors/403.blade.php b/resources/views/errors/403.blade.php new file mode 100644 index 000000000..a5506f01f --- /dev/null +++ b/resources/views/errors/403.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Forbidden')) +@section('code', '403') +@section('message', __($exception->getMessage() ?: 'Forbidden')) diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php new file mode 100644 index 000000000..7549540d8 --- /dev/null +++ b/resources/views/errors/404.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Not Found')) +@section('code', '404') +@section('message', __('Not Found')) diff --git a/resources/views/errors/419.blade.php b/resources/views/errors/419.blade.php new file mode 100644 index 000000000..c09216e21 --- /dev/null +++ b/resources/views/errors/419.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Page Expired')) +@section('code', '419') +@section('message', __('Page Expired')) diff --git a/resources/views/errors/429.blade.php b/resources/views/errors/429.blade.php new file mode 100644 index 000000000..f01b07b8e --- /dev/null +++ b/resources/views/errors/429.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Too Many Requests')) +@section('code', '429') +@section('message', __('Too Many Requests')) diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php new file mode 100644 index 000000000..d9e95d9b9 --- /dev/null +++ b/resources/views/errors/500.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Server Error')) +@section('code', '500') +@section('message', __('Server Error')) diff --git a/resources/views/errors/503.blade.php b/resources/views/errors/503.blade.php new file mode 100644 index 000000000..acd38100a --- /dev/null +++ b/resources/views/errors/503.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Service Unavailable')) +@section('code', '503') +@section('message', __($exception->getMessage() ?: 'Service Unavailable')) diff --git a/resources/views/errors/illustrated-layout.blade.php b/resources/views/errors/illustrated-layout.blade.php new file mode 100644 index 000000000..64eb7cbb8 --- /dev/null +++ b/resources/views/errors/illustrated-layout.blade.php @@ -0,0 +1,486 @@ + + + + + + + @yield('title') + + + + + + + + + +
+
+
+
+ @yield('code', __('Oh no')) +
+ +
+ +

+ @yield('message') +

+ + + + +
+
+ +
+ @yield('image') +
+
+ + diff --git a/resources/views/errors/layout.blade.php b/resources/views/errors/layout.blade.php new file mode 100644 index 000000000..2c51d4f35 --- /dev/null +++ b/resources/views/errors/layout.blade.php @@ -0,0 +1,57 @@ + + + + + + + @yield('title') + + + + + + + + + +
+
+
+ @yield('message') +
+
+
+ + diff --git a/resources/views/errors/minimal.blade.php b/resources/views/errors/minimal.blade.php new file mode 100644 index 000000000..b63ac2b37 --- /dev/null +++ b/resources/views/errors/minimal.blade.php @@ -0,0 +1,62 @@ + + + + + + + @yield('title') + + + + + + + + + +
+
+ @yield('code') +
+ +
+ @yield('message') +
+
+ + diff --git a/resources/views/vendor/mail/html/button.blade.php b/resources/views/vendor/mail/html/button.blade.php new file mode 100755 index 000000000..bf35c7918 --- /dev/null +++ b/resources/views/vendor/mail/html/button.blade.php @@ -0,0 +1,19 @@ + + + + +
+ + + + +
+ + + + +
+ {{ $slot }} +
+
+
diff --git a/resources/views/vendor/mail/html/footer.blade.php b/resources/views/vendor/mail/html/footer.blade.php new file mode 100755 index 000000000..c3f9360ab --- /dev/null +++ b/resources/views/vendor/mail/html/footer.blade.php @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/resources/views/vendor/mail/html/header.blade.php b/resources/views/vendor/mail/html/header.blade.php new file mode 100755 index 000000000..eefabab92 --- /dev/null +++ b/resources/views/vendor/mail/html/header.blade.php @@ -0,0 +1,7 @@ + + + + {{ $slot }} + + + diff --git a/resources/views/vendor/mail/html/layout.blade.php b/resources/views/vendor/mail/html/layout.blade.php new file mode 100755 index 000000000..859900a33 --- /dev/null +++ b/resources/views/vendor/mail/html/layout.blade.php @@ -0,0 +1,54 @@ + + + + + + + + + + + + + +
+ + {{ $header ?? '' }} + + + + + + + {{ $footer ?? '' }} +
+ + + + + +
+ {{ Illuminate\Mail\Markdown::parse($slot) }} + + {{ $subcopy ?? '' }} +
+
+
+ + diff --git a/resources/views/vendor/mail/html/message.blade.php b/resources/views/vendor/mail/html/message.blade.php new file mode 100755 index 000000000..2ad23a66e --- /dev/null +++ b/resources/views/vendor/mail/html/message.blade.php @@ -0,0 +1,27 @@ +@component('mail::layout') + {{-- Header --}} + @slot('header') + @component('mail::header', ['url' => config('app.url')]) + {{ config('app.name') }} + @endcomponent + @endslot + + {{-- Body --}} + {{ $slot }} + + {{-- Subcopy --}} + @isset($subcopy) + @slot('subcopy') + @component('mail::subcopy') + {{ $subcopy }} + @endcomponent + @endslot + @endisset + + {{-- Footer --}} + @slot('footer') + @component('mail::footer') + © {{ date('Y') }} {{ config('app.name') }}. All rights reserved. + @endcomponent + @endslot +@endcomponent diff --git a/resources/views/vendor/mail/html/panel.blade.php b/resources/views/vendor/mail/html/panel.blade.php new file mode 100755 index 000000000..f39708020 --- /dev/null +++ b/resources/views/vendor/mail/html/panel.blade.php @@ -0,0 +1,13 @@ + + + + +
+ + + + +
+ {{ Illuminate\Mail\Markdown::parse($slot) }} +
+
diff --git a/resources/views/vendor/mail/html/promotion.blade.php b/resources/views/vendor/mail/html/promotion.blade.php new file mode 100755 index 000000000..0debcf8a3 --- /dev/null +++ b/resources/views/vendor/mail/html/promotion.blade.php @@ -0,0 +1,7 @@ + + + + +
+ {{ Illuminate\Mail\Markdown::parse($slot) }} +
diff --git a/resources/views/vendor/mail/html/promotion/button.blade.php b/resources/views/vendor/mail/html/promotion/button.blade.php new file mode 100755 index 000000000..8e79081c5 --- /dev/null +++ b/resources/views/vendor/mail/html/promotion/button.blade.php @@ -0,0 +1,13 @@ + + + + +
+ + + + +
+ {{ $slot }} +
+
diff --git a/resources/views/vendor/mail/html/subcopy.blade.php b/resources/views/vendor/mail/html/subcopy.blade.php new file mode 100755 index 000000000..c3df7b4c0 --- /dev/null +++ b/resources/views/vendor/mail/html/subcopy.blade.php @@ -0,0 +1,7 @@ + + + + +
+ {{ Illuminate\Mail\Markdown::parse($slot) }} +
diff --git a/resources/views/vendor/mail/html/table.blade.php b/resources/views/vendor/mail/html/table.blade.php new file mode 100755 index 000000000..a5f3348b2 --- /dev/null +++ b/resources/views/vendor/mail/html/table.blade.php @@ -0,0 +1,3 @@ +
+{{ Illuminate\Mail\Markdown::parse($slot) }} +
diff --git a/resources/views/vendor/mail/html/themes/default.css b/resources/views/vendor/mail/html/themes/default.css new file mode 100755 index 000000000..b78b27daa --- /dev/null +++ b/resources/views/vendor/mail/html/themes/default.css @@ -0,0 +1,287 @@ +/* Base */ + +body, body *:not(html):not(style):not(br):not(tr):not(code) { + font-family: Avenir, Helvetica, sans-serif; + box-sizing: border-box; +} + +body { + background-color: #f5f8fa; + color: #74787E; + height: 100%; + hyphens: auto; + line-height: 1.4; + margin: 0; + -moz-hyphens: auto; + -ms-word-break: break-all; + width: 100% !important; + -webkit-hyphens: auto; + -webkit-text-size-adjust: none; + word-break: break-all; + word-break: break-word; +} + +p, +ul, +ol, +blockquote { + line-height: 1.4; + text-align: left; +} + +a { + color: #3869D4; +} + +a img { + border: none; +} + +/* Typography */ + +h1 { + color: #2F3133; + font-size: 19px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +h2 { + color: #2F3133; + font-size: 16px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +h3 { + color: #2F3133; + font-size: 14px; + font-weight: bold; + margin-top: 0; + text-align: left; +} + +p { + color: #74787E; + font-size: 16px; + line-height: 1.5em; + margin-top: 0; + text-align: left; +} + +p.sub { + font-size: 12px; +} + +img { + max-width: 100%; +} + +/* Layout */ + +.wrapper { + background-color: #f5f8fa; + margin: 0; + padding: 0; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.content { + margin: 0; + padding: 0; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +/* Header */ + +.header { + padding: 25px 0; + text-align: center; +} + +.header a { + color: #bbbfc3; + font-size: 19px; + font-weight: bold; + text-decoration: none; + text-shadow: 0 1px 0 white; +} + +/* Body */ + +.body { + background-color: #FFFFFF; + border-bottom: 1px solid #EDEFF2; + border-top: 1px solid #EDEFF2; + margin: 0; + padding: 0; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.inner-body { + background-color: #FFFFFF; + margin: 0 auto; + padding: 0; + width: 570px; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 570px; +} + +/* Subcopy */ + +.subcopy { + border-top: 1px solid #EDEFF2; + margin-top: 25px; + padding-top: 25px; +} + +.subcopy p { + font-size: 12px; +} + +/* Footer */ + +.footer { + margin: 0 auto; + padding: 0; + text-align: center; + width: 570px; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 570px; +} + +.footer p { + color: #AEAEAE; + font-size: 12px; + text-align: center; +} + +/* Tables */ + +.table table { + margin: 30px auto; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.table th { + border-bottom: 1px solid #EDEFF2; + padding-bottom: 8px; + margin: 0; +} + +.table td { + color: #74787E; + font-size: 15px; + line-height: 18px; + padding: 10px 0; + margin: 0; +} + +.content-cell { + padding: 35px; +} + +/* Buttons */ + +.action { + margin: 30px auto; + padding: 0; + text-align: center; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.button { + border-radius: 3px; + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16); + color: #FFF; + display: inline-block; + text-decoration: none; + -webkit-text-size-adjust: none; +} + +.button-blue { + background-color: #3097D1; + border-top: 10px solid #3097D1; + border-right: 18px solid #3097D1; + border-bottom: 10px solid #3097D1; + border-left: 18px solid #3097D1; +} + +.button-green { + background-color: #2ab27b; + border-top: 10px solid #2ab27b; + border-right: 18px solid #2ab27b; + border-bottom: 10px solid #2ab27b; + border-left: 18px solid #2ab27b; +} + +.button-red { + background-color: #bf5329; + border-top: 10px solid #bf5329; + border-right: 18px solid #bf5329; + border-bottom: 10px solid #bf5329; + border-left: 18px solid #bf5329; +} + +/* Panels */ + +.panel { + margin: 0 0 21px; +} + +.panel-content { + background-color: #EDEFF2; + padding: 16px; +} + +.panel-item { + padding: 0; +} + +.panel-item p:last-of-type { + margin-bottom: 0; + padding-bottom: 0; +} + +/* Promotions */ + +.promotion { + background-color: #FFFFFF; + border: 2px dashed #9BA2AB; + margin: 0; + margin-bottom: 25px; + margin-top: 25px; + padding: 24px; + width: 100%; + -premailer-cellpadding: 0; + -premailer-cellspacing: 0; + -premailer-width: 100%; +} + +.promotion h1 { + text-align: center; +} + +.promotion p { + font-size: 15px; + text-align: center; +} diff --git a/resources/views/vendor/mail/markdown/button.blade.php b/resources/views/vendor/mail/markdown/button.blade.php new file mode 100755 index 000000000..97444ebdc --- /dev/null +++ b/resources/views/vendor/mail/markdown/button.blade.php @@ -0,0 +1 @@ +{{ $slot }}: {{ $url }} diff --git a/resources/views/vendor/mail/markdown/footer.blade.php b/resources/views/vendor/mail/markdown/footer.blade.php new file mode 100755 index 000000000..3338f620e --- /dev/null +++ b/resources/views/vendor/mail/markdown/footer.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/header.blade.php b/resources/views/vendor/mail/markdown/header.blade.php new file mode 100755 index 000000000..aaa3e5754 --- /dev/null +++ b/resources/views/vendor/mail/markdown/header.blade.php @@ -0,0 +1 @@ +[{{ $slot }}]({{ $url }}) diff --git a/resources/views/vendor/mail/markdown/layout.blade.php b/resources/views/vendor/mail/markdown/layout.blade.php new file mode 100755 index 000000000..9378baa07 --- /dev/null +++ b/resources/views/vendor/mail/markdown/layout.blade.php @@ -0,0 +1,9 @@ +{!! strip_tags($header) !!} + +{!! strip_tags($slot) !!} +@isset($subcopy) + +{!! strip_tags($subcopy) !!} +@endisset + +{!! strip_tags($footer) !!} diff --git a/resources/views/vendor/mail/markdown/message.blade.php b/resources/views/vendor/mail/markdown/message.blade.php new file mode 100755 index 000000000..b409c71cb --- /dev/null +++ b/resources/views/vendor/mail/markdown/message.blade.php @@ -0,0 +1,27 @@ +@component('mail::layout') + {{-- Header --}} + @slot('header') + @component('mail::header', ['url' => config('app.url')]) + {{ config('app.name') }} + @endcomponent + @endslot + + {{-- Body --}} + {{ $slot }} + + {{-- Subcopy --}} + @isset($subcopy) + @slot('subcopy') + @component('mail::subcopy') + {{ $subcopy }} + @endcomponent + @endslot + @endisset + + {{-- Footer --}} + @slot('footer') + @component('mail::footer') + © {{ date('Y') }} {{ config('app.name') }}. All rights reserved. + @endcomponent + @endslot +@endcomponent diff --git a/resources/views/vendor/mail/markdown/panel.blade.php b/resources/views/vendor/mail/markdown/panel.blade.php new file mode 100755 index 000000000..3338f620e --- /dev/null +++ b/resources/views/vendor/mail/markdown/panel.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/promotion.blade.php b/resources/views/vendor/mail/markdown/promotion.blade.php new file mode 100755 index 000000000..3338f620e --- /dev/null +++ b/resources/views/vendor/mail/markdown/promotion.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/promotion/button.blade.php b/resources/views/vendor/mail/markdown/promotion/button.blade.php new file mode 100755 index 000000000..aaa3e5754 --- /dev/null +++ b/resources/views/vendor/mail/markdown/promotion/button.blade.php @@ -0,0 +1 @@ +[{{ $slot }}]({{ $url }}) diff --git a/resources/views/vendor/mail/markdown/subcopy.blade.php b/resources/views/vendor/mail/markdown/subcopy.blade.php new file mode 100755 index 000000000..3338f620e --- /dev/null +++ b/resources/views/vendor/mail/markdown/subcopy.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/table.blade.php b/resources/views/vendor/mail/markdown/table.blade.php new file mode 100755 index 000000000..3338f620e --- /dev/null +++ b/resources/views/vendor/mail/markdown/table.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/text/button.blade.php b/resources/views/vendor/mail/text/button.blade.php new file mode 100644 index 000000000..97444ebdc --- /dev/null +++ b/resources/views/vendor/mail/text/button.blade.php @@ -0,0 +1 @@ +{{ $slot }}: {{ $url }} diff --git a/resources/views/vendor/mail/text/footer.blade.php b/resources/views/vendor/mail/text/footer.blade.php new file mode 100644 index 000000000..3338f620e --- /dev/null +++ b/resources/views/vendor/mail/text/footer.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/text/header.blade.php b/resources/views/vendor/mail/text/header.blade.php new file mode 100644 index 000000000..aaa3e5754 --- /dev/null +++ b/resources/views/vendor/mail/text/header.blade.php @@ -0,0 +1 @@ +[{{ $slot }}]({{ $url }}) diff --git a/resources/views/vendor/mail/text/layout.blade.php b/resources/views/vendor/mail/text/layout.blade.php new file mode 100644 index 000000000..9378baa07 --- /dev/null +++ b/resources/views/vendor/mail/text/layout.blade.php @@ -0,0 +1,9 @@ +{!! strip_tags($header) !!} + +{!! strip_tags($slot) !!} +@isset($subcopy) + +{!! strip_tags($subcopy) !!} +@endisset + +{!! strip_tags($footer) !!} diff --git a/resources/views/vendor/mail/text/message.blade.php b/resources/views/vendor/mail/text/message.blade.php new file mode 100644 index 000000000..1ae9ed8f1 --- /dev/null +++ b/resources/views/vendor/mail/text/message.blade.php @@ -0,0 +1,27 @@ +@component('mail::layout') + {{-- Header --}} + @slot('header') + @component('mail::header', ['url' => config('app.url')]) + {{ config('app.name') }} + @endcomponent + @endslot + + {{-- Body --}} + {{ $slot }} + + {{-- Subcopy --}} + @isset($subcopy) + @slot('subcopy') + @component('mail::subcopy') + {{ $subcopy }} + @endcomponent + @endslot + @endisset + + {{-- Footer --}} + @slot('footer') + @component('mail::footer') + © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.') + @endcomponent + @endslot +@endcomponent diff --git a/resources/views/vendor/mail/text/panel.blade.php b/resources/views/vendor/mail/text/panel.blade.php new file mode 100644 index 000000000..3338f620e --- /dev/null +++ b/resources/views/vendor/mail/text/panel.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/text/promotion.blade.php b/resources/views/vendor/mail/text/promotion.blade.php new file mode 100644 index 000000000..3338f620e --- /dev/null +++ b/resources/views/vendor/mail/text/promotion.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/text/promotion/button.blade.php b/resources/views/vendor/mail/text/promotion/button.blade.php new file mode 100644 index 000000000..aaa3e5754 --- /dev/null +++ b/resources/views/vendor/mail/text/promotion/button.blade.php @@ -0,0 +1 @@ +[{{ $slot }}]({{ $url }}) diff --git a/resources/views/vendor/mail/text/subcopy.blade.php b/resources/views/vendor/mail/text/subcopy.blade.php new file mode 100644 index 000000000..3338f620e --- /dev/null +++ b/resources/views/vendor/mail/text/subcopy.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/mail/text/table.blade.php b/resources/views/vendor/mail/text/table.blade.php new file mode 100644 index 000000000..3338f620e --- /dev/null +++ b/resources/views/vendor/mail/text/table.blade.php @@ -0,0 +1 @@ +{{ $slot }} diff --git a/resources/views/vendor/notifications/email.blade.php b/resources/views/vendor/notifications/email.blade.php new file mode 100755 index 000000000..fe3889532 --- /dev/null +++ b/resources/views/vendor/notifications/email.blade.php @@ -0,0 +1,64 @@ +@component('mail::message') +{{-- Greeting --}} +@if (! empty($greeting)) +# {{ $greeting }} +@else +@if ($level == 'error') +# @lang('Whoops!') +@else +# @lang('Hello!') +@endif +@endif + +{{-- Intro Lines --}} +@foreach ($introLines as $line) +{{ $line }} + +@endforeach + +{{-- Action Button --}} +@isset($actionText) + +@component('mail::button', ['url' => $actionUrl, 'color' => $color]) +{{ $actionText }} +@endcomponent +@endisset + +{{-- Outro Lines --}} +@foreach ($outroLines as $line) +{{ $line }} + +@endforeach + +{{-- Salutation --}} +@if (! empty($salutation)) +{{ $salutation }} +@else +@lang('Regards'),
{{ config('app.name') }} +@endif + +{{-- Subcopy --}} +@isset($actionText) +@component('mail::subcopy') +@lang( + "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\n". + 'into your web browser: [:actionURL](:actionURL)', + [ + 'actionText' => $actionText, + 'actionURL' => $actionUrl + ] +) +@endcomponent +@endisset +@endcomponent diff --git a/resources/views/vendor/pagination/bootstrap-4.blade.php b/resources/views/vendor/pagination/bootstrap-4.blade.php new file mode 100755 index 000000000..044bbaa4a --- /dev/null +++ b/resources/views/vendor/pagination/bootstrap-4.blade.php @@ -0,0 +1,44 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/default.blade.php b/resources/views/vendor/pagination/default.blade.php new file mode 100755 index 000000000..e59847a3f --- /dev/null +++ b/resources/views/vendor/pagination/default.blade.php @@ -0,0 +1,44 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/semantic-ui.blade.php b/resources/views/vendor/pagination/semantic-ui.blade.php new file mode 100755 index 000000000..ef0dbb184 --- /dev/null +++ b/resources/views/vendor/pagination/semantic-ui.blade.php @@ -0,0 +1,36 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/simple-bootstrap-4.blade.php b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php new file mode 100755 index 000000000..cc30c9b25 --- /dev/null +++ b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php @@ -0,0 +1,25 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/simple-default.blade.php b/resources/views/vendor/pagination/simple-default.blade.php new file mode 100755 index 000000000..bdf2fe883 --- /dev/null +++ b/resources/views/vendor/pagination/simple-default.blade.php @@ -0,0 +1,17 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/routes/api.php b/routes/api.php new file mode 100755 index 000000000..2c46d3f96 --- /dev/null +++ b/routes/api.php @@ -0,0 +1,14 @@ +id === (int) $id; +}); diff --git a/routes/console.php b/routes/console.php new file mode 100755 index 000000000..75dd0cded --- /dev/null +++ b/routes/console.php @@ -0,0 +1,18 @@ +comment(Inspiring::quote()); +})->describe('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php new file mode 100755 index 000000000..b88112354 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,12 @@ + + */ + +$uri = urldecode( + parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) +); + +// This file allows us to emulate Apache's "mod_rewrite" functionality from the +// built-in PHP web server. This provides a convenient way to test a Laravel +// application without having installed a "real" web server software here. +if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { + return false; +} + +require_once __DIR__.'/public/index.php'; diff --git a/tests/_data/.gitkeep b/tests/_data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/tests/_output/.gitignore b/tests/_output/.gitignore new file mode 100644 index 000000000..c96a04f00 --- /dev/null +++ b/tests/_output/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/tests/_support/AcceptanceTester.php b/tests/_support/AcceptanceTester.php new file mode 100644 index 000000000..95c00ec21 --- /dev/null +++ b/tests/_support/AcceptanceTester.php @@ -0,0 +1,26 @@ +login($I->grabRecord(Admin::class, ['email' => 'admin@example.com'])); + $I->seeAuthentication('admin'); + } + + /** + * Go to a specific route and check if admin guard is applied on it + * + * @param string $name name of the route + * @param array|null $params params the route will be created with + */ + public function amOnAdminRoute(string $name, array $params = null): void + { + $I = $this; + $I->amOnRoute($name, $params); + $I->seeCurrentRouteIs($name); + + /** @var RouteCollection $routes */ + $routes = Route::getRoutes(); + $middlewares = $routes->getByName($name)->middleware(); + $I->assertContains('admin', $middlewares, 'check that admin middleware is applied'); + } + +} diff --git a/tests/_support/Helper/Acceptance.php b/tests/_support/Helper/Acceptance.php new file mode 100644 index 000000000..65b94215e --- /dev/null +++ b/tests/_support/Helper/Acceptance.php @@ -0,0 +1,10 @@ +faker = Factory::create(); + + $this->attributeBrand = $I->grabRecord(Attribute::class, [ + 'code' => 'brand', + 'admin_name' => 'Brand', + ]); + + $locales = Locale::pluck('code')->all(); + + $defaultAttributeOptionAttributes = [ + 'attribute_id' => $this->attributeBrand->id, + 'admin_name' => 'no-brand', + 'sort_order' => 0, + ]; + + foreach ($locales as $locale) { + $defaultAttributeOptionAttributes[$locale] = [ + 'label' => '', + ]; + } + + $this->attributeBrandDefaultOption = $I->have(AttributeOption::class, + $defaultAttributeOptionAttributes); + $this->attributeBrandOption = $I->have(AttributeOption::class, [ + 'attribute_id' => $this->attributeBrand->id, + ]); + + } + + public function selectEmptyAttributeOptionOnProductCreation(FunctionalTester $I) + { + $I->loginAsAdmin(); + + $I->amOnAdminRoute('admin.catalog.products.create'); + $I->see(__('admin::app.catalog.products.add-title'), 'h1'); + + $I->selectOption('select#type', 'simple'); + + $attributeFamily = $I->grabRecord(AttributeFamily::class, [ + 'code' => 'default', + ]); + + $I->selectOption('select#attribute_family_id', $attributeFamily->id); + + $sku = $this->faker->randomNumber(3); + + $I->fillField('sku', $sku); + $I->click(__('admin::app.catalog.products.save-btn-title')); + + $I->seeInSource('Product created successfully.'); + + $I->seeCurrentRouteIs('admin.catalog.products.edit'); + + $productTitle = $this->faker->word; + $productUrlKey = $this->faker->slug; + + $I->fillField('name', $productTitle); + $I->fillField('url_key', $productUrlKey); + $I->selectOption($this->attributeBrand->code, + $this->attributeBrandDefaultOption->id); + $I->fillField('price', $this->faker->randomFloat(2)); + $I->fillField('weight', $this->faker->randomDigit); + + $I->fillField('#short_description', $this->faker->paragraph(1, true)); + $I->fillField('#description', $this->faker->paragraph(5, true)); + + $I->click(__('admin::app.catalog.products.save-btn-title')); + + $I->seeInSource('Product updated successfully.'); + $I->seeCurrentRouteIs('admin.catalog.products.index'); + + $product = $I->grabRecord(Product::class, [ + 'sku' => $sku, + 'type' => 'simple', + 'attribute_family_id' => $attributeFamily->id, + ]); + + $I->seeRecord(ProductAttributeValue::class, [ + 'product_id' => $product->id, + 'attribute_id' => $this->attributeBrand->id, + 'integer_value' => $this->attributeBrandDefaultOption->id, + 'text_value' => null, + ]); + } +} diff --git a/tests/functional/Shop/ProductControllerCest.php b/tests/functional/Shop/ProductControllerCest.php new file mode 100644 index 000000000..45382a4ca --- /dev/null +++ b/tests/functional/Shop/ProductControllerCest.php @@ -0,0 +1,70 @@ +faker = Factory::create(); + } + + public function testCreate(FunctionalTester $I) + { + $I->loginAsAdmin(); + $I->amOnAdminRoute('admin.catalog.products.index'); + $I->click(__('admin::app.catalog.products.add-product-btn-title'), '//*[contains(@class, "page-action")]'); + $I->seeCurrentRouteIs('admin.catalog.products.create'); + + $I->click(__('admin::app.catalog.products.save-btn-title'), '//*[contains(@class, "page-action")]'); + $I->seeFormHasErrors(); + + $testSku = $this->faker->uuid; + $I->selectOption('//select[@id="attribute_family_id"]', 'Default'); + $I->fillField('//input[@id="sku"]', $testSku); + $I->click(__('admin::app.catalog.products.save-btn-title'), '//*[contains(@class, "page-action")]'); + $I->dontSeeFormErrors(); + $I->seeCurrentRouteIs('admin.catalog.products.edit'); + $I->seeRecord(Product::class, ['sku' => $testSku]); + + $I->click(__('admin::app.catalog.products.save-btn-title'), '//*[contains(@class, "page-action")]'); + $I->seeFormHasErrors(); + + $testName = $this->faker->name; + $testUrlKey = $testName; + $testDescription = $this->faker->sentence; + $testDescriptionShop = $this->faker->sentence; + $testPrice = $this->faker->randomFloat(2, 1, 100); + $testWeight = $this->faker->numberBetween(1, 20); + $I->fillField('//input[@id="name"]', $testName); + $I->fillField('//input[@id="url_key"]', $testUrlKey); + $I->fillField('//textarea[@id="description"]', $testDescription); + $I->fillField('//textarea[@id="short_description"]', $testDescriptionShop); + $I->fillField('//input[@id="price"]', $testPrice); + $I->fillField('//input[@id="weight"]', $testWeight); + $I->click(__('admin::app.catalog.products.save-btn-title'), '//*[contains(@class, "page-action")]'); + $I->dontSeeFormErrors(); + $I->seeCurrentRouteIs('admin.catalog.products.index'); + $product = $I->grabRecord(Product::class, ['sku' => $testSku]); + $I->seeRecord(ProductFlat::class, [ + 'sku' => $testSku, + 'name' => $testName, + 'description' => $testDescription, + 'short_description' => $testDescriptionShop, + 'url_key' => $testUrlKey, + 'price' => $testPrice, + 'weight' => $testWeight, + 'product_id' => $product->id, + ]); + } +} diff --git a/tests/trigger.suite.yml b/tests/trigger.suite.yml new file mode 100644 index 000000000..c87ec0a96 --- /dev/null +++ b/tests/trigger.suite.yml @@ -0,0 +1,18 @@ +# Codeception Test Suite Configuration +# +# Suite for unit or integration tests that test database logic (e.g. triggers). + +actor: TriggerTester +modules: + enabled: + - Asserts + - Filesystem + - \Helper\Unit + - Laravel5: + environment_file: .env.testing + run_database_migrations: true + run_database_seeder: true + database_seeder_class: DatabaseSeeder + packages: packages + + step_decorators: ~ \ No newline at end of file diff --git a/tests/trigger/Shop/DatabaseLogicCest.php b/tests/trigger/Shop/DatabaseLogicCest.php new file mode 100644 index 000000000..bd446683e --- /dev/null +++ b/tests/trigger/Shop/DatabaseLogicCest.php @@ -0,0 +1,134 @@ +faker = Factory::create(); + + $this->localeEn = $I->grabRecord(Locale::class, [ + 'code' => 'en', + ]); + + $this->localeDe = $I->have(Locale::class, [ + 'code' => 'de', + 'name' => 'German', + ]); + + $I->assertNotNull($this->localeDe); + } + + public function testGetUrlPathOfCategory(UnitTester $I) + { + $rootCategoryTranslation = $I->grabRecord(CategoryTranslation::class, [ + 'slug' => 'root', + 'locale' => 'en', + ]); + $rootCategory = $I->grabRecord(Category::class, [ + 'id' => $rootCategoryTranslation->category_id, + ]); + + $parentCategoryName = $this->faker->word; + + $parentCategoryAttributes = [ + 'parent_id' => $rootCategory->id, + 'position' => 1, + 'status' => 1, + $this->localeEn->code => [ + 'name' => $parentCategoryName, + 'slug' => strtolower($parentCategoryName), + 'description' => $parentCategoryName, + 'locale_id' => $this->localeEn->id, + ], + $this->localeDe->code => [ + 'name' => $parentCategoryName, + 'slug' => strtolower($parentCategoryName), + 'description' => $parentCategoryName, + 'locale_id' => $this->localeDe->id, + ], + ]; + + $parentCategory = $I->make(Category::class, $parentCategoryAttributes)->first(); + $rootCategory->prependNode($parentCategory); + $I->assertNotNull($parentCategory); + + $categoryName = $this->faker->word; + $categoryAttributes = [ + 'position' => 1, + 'status' => 1, + 'parent_id' => $parentCategory->id, + $this->localeEn->code => [ + 'name' => $categoryName, + 'slug' => strtolower($categoryName), + 'description' => $categoryName, + 'locale_id' => $this->localeEn->id, + ], + $this->localeDe->code => [ + 'name' => $categoryName, + 'slug' => strtolower($categoryName), + 'description' => $categoryName, + 'locale_id' => $this->localeDe->id, + ], + ]; + + $category = $I->make(Category::class, $categoryAttributes)->first(); + $parentCategory->prependNode($category); + $I->assertNotNull($category); + + $sqlStoredFunction = 'SELECT get_url_path_of_category(:category_id, :locale_code) AS url_path;'; + + $urlPathQueryResult = DB::selectOne($sqlStoredFunction, [ + 'category_id' => $parentCategory->id, + 'locale_code' => $this->localeEn->code, + ]); + $I->assertNotNull($urlPathQueryResult->url_path); + $I->assertEquals(strtolower($parentCategoryName), $urlPathQueryResult->url_path); + + $urlPathQueryResult = DB::selectOne($sqlStoredFunction, [ + 'category_id' => $category->id, + 'locale_code' => $this->localeEn->code, + ]); + $I->assertNotNull($urlPathQueryResult->url_path); + + $expectedUrlPath = strtolower($parentCategoryName) . '/' . strtolower($categoryName); + $I->assertEquals($expectedUrlPath, $urlPathQueryResult->url_path); + + $root2Category = $I->make(Category::class, [ + 'position' => 1, + 'status' => 1, + 'parent_id' => null, + $this->localeEn->code => [ + 'name' => $this->faker->word, + 'slug' => strtolower($this->faker->word), + 'description' => $this->faker->word, + 'locale_id' => $this->localeEn->id, + ], + ])->first(); + $root2Category->save(); + + $I->assertNull($root2Category->refresh()->parent_id); + + $urlPathQueryResult = DB::selectOne($sqlStoredFunction, [ + 'category_id' => $root2Category->id, + 'locale_code' => $this->localeEn->code, + ]); + $I->assertNotNull($urlPathQueryResult->url_path); + $I->assertEquals('', $urlPathQueryResult->url_path); + } +} diff --git a/tests/trigger/Shop/TriggerCest.php b/tests/trigger/Shop/TriggerCest.php new file mode 100644 index 000000000..2be0f75d0 --- /dev/null +++ b/tests/trigger/Shop/TriggerCest.php @@ -0,0 +1,309 @@ +faker = Factory::create(); + + $rootCategoryTranslation = $I->grabRecord(CategoryTranslation::class, [ + 'slug' => 'root', + 'locale' => 'en', + ]); + $rootCategory = $I->grabRecord(Category::class, [ + 'id' => $rootCategoryTranslation->category_id, + ]); + + $this->parentCategoryName = $this->faker->word; + $this->categoryName = $this->faker->word . $this->faker->randomDigit; + $this->root2CategoryName = $this->faker->word . $this->faker->randomDigit; + $this->childOfRoot2CategoryName = $this->faker->word . $this->faker->randomDigit; + + $this->localeEn = $I->grabRecord(Locale::class, [ + 'code' => 'en', + ]); + $this->localeDe = $I->have(Locale::class, [ + 'code' => 'de', + 'name' => 'German', + ]); + + $this->parentCategoryAttributes = [ + 'parent_id' => $rootCategory->id, + 'position' => 1, + 'status' => 1, + $this->localeEn->code => [ + 'name' => $this->parentCategoryName, + 'slug' => strtolower($this->parentCategoryName), + 'description' => $this->parentCategoryName, + 'locale_id' => $this->localeEn->id, + ], + $this->localeDe->code => [ + 'name' => $this->parentCategoryName, + 'slug' => strtolower($this->parentCategoryName), + 'description' => $this->parentCategoryName, + 'locale_id' => $this->localeDe->id, + ], + ]; + + $this->parentCategory = $I->make(Category::class, $this->parentCategoryAttributes)->first(); + $rootCategory->appendNode($this->parentCategory); + $I->assertNotNull($this->parentCategory); + + $this->categoryAttributes = [ + 'position' => 1, + 'status' => 1, + 'parent_id' => $this->parentCategory->id, + $this->localeEn->code => [ + 'name' => $this->categoryName, + 'slug' => strtolower($this->categoryName), + 'description' => $this->categoryName, + 'locale_id' => $this->localeEn->id, + ], + $this->localeDe->code => [ + 'name' => $this->categoryName, + 'slug' => strtolower($this->categoryName), + 'description' => $this->categoryName, + 'locale_id' => $this->localeDe->id, + ], + ]; + + $this->category = $I->make(Category::class, $this->categoryAttributes)->first(); + $this->parentCategory->appendNode($this->category); + $I->assertNotNull($this->category); + + + $this->root2CategoryAttributes = [ + 'position' => 1, + 'status' => 1, + 'parent_id' => null, + $this->localeEn->code => [ + 'name' => $this->root2CategoryName, + 'slug' => strtolower($this->root2CategoryName), + 'description' => $this->root2CategoryName, + 'locale_id' => $this->localeEn->id, + ], + $this->localeDe->code => [ + 'name' => $this->root2CategoryName, + 'slug' => strtolower($this->root2CategoryName), + 'description' => $this->root2CategoryName, + 'locale_id' => $this->localeDe->id, + ], + ]; + + $this->root2Category = $I->make(Category::class, $this->root2CategoryAttributes)->first(); + $this->root2Category->save(); + + $I->assertNotNull($this->root2Category); + $I->assertNull($this->root2Category->parent_id); + $I->assertGreaterThan($rootCategory->_rgt, $this->root2Category->_lft); + + $this->childOfRoot2CategoryAttributes = [ + 'position' => 1, + 'status' => 1, + 'parent_id' => $this->root2Category->id, + $this->localeEn->code => [ + 'name' => $this->childOfRoot2CategoryName, + 'slug' => strtolower($this->childOfRoot2CategoryName), + 'description' => $this->childOfRoot2CategoryName, + 'locale_id' => $this->localeEn->id, + ], + $this->localeDe->code => [ + 'name' => $this->childOfRoot2CategoryName, + 'slug' => strtolower($this->childOfRoot2CategoryName), + 'description' => $this->childOfRoot2CategoryName, + 'locale_id' => $this->localeDe->id, + ], + ]; + + $this->childOfRoot2Category = $I->make(Category::class, $this->childOfRoot2CategoryAttributes)->first(); + $this->root2Category->appendNode($this->childOfRoot2Category); + + $I->assertNotNull($this->childOfRoot2Category); + } + + public function testInsertTriggerOnCategoryTranslationsTable(UnitTester $I) + { + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->parentCategory->id, + 'name' => $this->parentCategoryName, + 'locale' => $this->localeEn->code, + 'url_path' => strtolower($this->parentCategoryName) + ]); + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->parentCategory->id, + 'name' => $this->parentCategoryName, + 'locale' => $this->localeDe->code, + 'url_path' => strtolower($this->parentCategoryName) + ]); + + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'name' => $this->categoryName, + 'locale' => $this->localeEn->code, + 'url_path' => strtolower($this->parentCategoryName) . '/' . strtolower($this->categoryName) + ]); + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'name' => $this->categoryName, + 'locale' => $this->localeDe->code, + 'url_path' => strtolower($this->parentCategoryName) . '/' . strtolower($this->categoryName) + ]); + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->root2Category->id, + 'name' => $this->root2CategoryName, + 'locale' => $this->localeEn->code, + 'url_path' => '', + ]); + + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->childOfRoot2Category->id, + 'name' => $this->childOfRoot2CategoryName, + 'locale' => $this->localeDe->code, + 'url_path' => strtolower($this->childOfRoot2CategoryName) + ]); + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->childOfRoot2Category->id, + 'name' => $this->childOfRoot2CategoryName, + 'locale' => $this->localeEn->code, + 'url_path' => strtolower($this->childOfRoot2CategoryName) + ]); + } + + public function testUpdateTriggersOnCategoryTranslationsTable(UnitTester $I) + { + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'name' => $this->categoryName, + 'slug' => strtolower($this->categoryName), + 'locale' => $this->localeEn->code, + 'url_path' => strtolower($this->parentCategoryName) . '/' . strtolower($this->categoryName), + ]); + + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'name' => $this->categoryName, + 'slug' => strtolower($this->categoryName), + 'locale' => $this->localeDe->code, + 'url_path' => strtolower($this->parentCategoryName) . '/' . strtolower($this->categoryName), + ]); + + $newCategoryName = $this->faker->word; + $this->categoryAttributes[$this->localeDe->code]['name'] = $newCategoryName; + $this->categoryAttributes[$this->localeDe->code]['slug'] = strtolower($newCategoryName); + $I->assertTrue($this->category->update($this->categoryAttributes)); + $this->category->refresh(); + + $I->dontSeeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'name' => $newCategoryName, + 'slug' => strtolower($this->categoryName), + 'locale' => $this->localeEn->code, + 'url_path' => strtolower($this->parentCategoryName) . '/' . strtolower($this->categoryName), + ]); + + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'name' => $newCategoryName, + 'slug' => strtolower($newCategoryName), + 'locale' => $this->localeDe->code, + 'url_path' => strtolower($this->parentCategoryName) . '/' . strtolower($newCategoryName), + ]); + } + + public function testInsertTriggersOnCategoriesTable(UnitTester $I) + { + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->parentCategory->id, + 'name' => $this->parentCategoryName, + 'slug' => strtolower($this->parentCategoryName), + 'locale' => $this->localeEn->code, + 'url_path' => strtolower($this->parentCategoryName), + ]); + + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'name' => $this->categoryName, + 'slug' => strtolower($this->categoryName), + 'locale' => $this->localeEn->code, + 'url_path' => strtolower($this->parentCategoryName) . '/' . $this->categoryName, + ]); + } + + public function testUpdateTriggersOnCategoriesTable(UnitTester $I) + { + $I->seeRecord(Category::class, [ + 'id' => $this->category->id, + 'parent_id' => $this->parentCategory->id, + ]); + + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'name' => $this->categoryName, + 'slug' => strtolower($this->categoryName), + 'locale' => $this->localeEn->code, + 'url_path' => strtolower($this->parentCategoryName) . '/' . strtolower($this->categoryName), + ]); + + $category2Name = $this->faker->word; + $category2Attributes = [ + 'position' => 1, + 'status' => 1, + 'parent_id' => $this->parentCategory->id, + $this->localeEn->code => [ + 'name' => $category2Name, + 'slug' => strtolower($category2Name), + 'description' => $category2Name, + 'locale_id' => $this->localeEn->id, + ], + ]; + + $category2 = $I->have(Category::class, $category2Attributes); + $I->assertNotNull($category2); + + $this->categoryAttributes['parent_id'] = $category2->id; + $I->assertTrue($this->category->update($this->categoryAttributes)); + $this->category->refresh(); + + $expectedUrlPath = strtolower($this->parentCategoryName) . '/' + . strtolower($category2Name) . '/' + . strtolower($this->categoryName); + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'name' => $this->categoryName, + 'slug' => strtolower($this->categoryName), + 'locale' => $this->localeEn->code, + 'url_path' => $expectedUrlPath, + ]); + } +} diff --git a/tests/unit.suite.yml b/tests/unit.suite.yml new file mode 100644 index 000000000..53b2aa210 --- /dev/null +++ b/tests/unit.suite.yml @@ -0,0 +1,18 @@ +# Codeception Test Suite Configuration +# +# Suite for unit or integration tests. + +actor: UnitTester +modules: + enabled: + - Asserts + - Filesystem + - \Helper\Unit + - Laravel5: + environment_file: .env.testing + run_database_migrations: true + run_database_seeder: true + database_seeder_class: DatabaseSeeder + packages: packages + + step_decorators: ~ \ No newline at end of file diff --git a/tests/unit/Category/CategoryCest.php b/tests/unit/Category/CategoryCest.php new file mode 100644 index 000000000..9a21c064c --- /dev/null +++ b/tests/unit/Category/CategoryCest.php @@ -0,0 +1,180 @@ +faker = Factory::create(); + + $this->localeEn = $I->grabRecord(Locale::class, [ + 'code' => 'en', + ]); + + $rootCategoryTranslation = $I->grabRecord(CategoryTranslation::class, [ + 'slug' => 'root', + 'locale' => 'en', + ]); + $this->rootCategory = $I->grabRecord(Category::class, [ + 'id' => $rootCategoryTranslation->category_id, + ]); + + $this->categoryAttributes = [ + 'parent_id' => $this->rootCategory->id, + 'position' => 0, + 'status' => 1, + $this->localeEn->code => [ + 'name' => $this->faker->word, + 'slug' => $this->faker->slug, + 'description' => $this->faker->sentence(), + 'locale_id' => $this->localeEn->id, + ], + ]; + + $this->category = $I->make(Category::class, $this->categoryAttributes)->first(); + $this->rootCategory->prependNode($this->category); + $I->assertNotNull($this->category); + + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'locale' => $this->localeEn->code, + 'url_path' => $this->category->slug, + ]); + + $this->childCategoryAttributes = [ + 'parent_id' => $this->category->id, + 'position' => 0, + 'status' => 1, + $this->localeEn->code => [ + 'name' => $this->faker->word, + 'slug' => $this->faker->slug, + 'description' => $this->faker->sentence(), + 'locale_id' => $this->localeEn->id, + ], + ]; + $this->childCategory = $I->make(Category::class, $this->childCategoryAttributes)->first(); + $this->category->prependNode($this->childCategory); + $I->assertNotNull($this->childCategory); + + $expectedUrlPath = $this->category->slug . '/' . $this->childCategory->slug; + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->childCategory->id, + 'locale' => $this->localeEn->code, + 'url_path' => $expectedUrlPath, + ]); + + $this->grandChildCategoryAttributes = [ + 'parent_id' => $this->childCategory->id, + 'position' => 0, + 'status' => 1, + $this->localeEn->code => [ + 'name' => $this->faker->word, + 'slug' => $this->faker->slug, + 'description' => $this->faker->sentence(), + 'locale_id' => $this->localeEn->id, + ], + ]; + $this->grandChildCategory = $I->make(Category::class, $this->grandChildCategoryAttributes)->first(); + $this->childCategory->prependNode($this->grandChildCategory); + $I->assertNotNull($this->grandChildCategory); + + $expectedUrlPath .= '/' . $this->grandChildCategory->slug; + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->grandChildCategory->id, + 'locale' => $this->localeEn->code, + 'url_path' => $expectedUrlPath, + ]); + + $this->category->refresh(); + $this->childCategory->refresh(); + } + + public function testChildUrlPathIsUpdatedOnParentUpdate(UnitTester $I) + { + $newCategorySlug = $this->faker->slug; + + $this->categoryAttributes[$this->localeEn->code]['slug'] = $newCategorySlug; + + // Hacky trick to slow down the test because otherwise CategoryObserver method + // won't work correctly (unit test is too fast) + sleep(1); + + $I->assertTrue($this->category->update($this->categoryAttributes)); + + $this->category->refresh(); + + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->category->id, + 'locale' => $this->localeEn->code, + 'slug' => $newCategorySlug, + 'url_path' => $newCategorySlug, + ]); + + $expectedUrlPath = $newCategorySlug . '/' + . $this->childCategoryAttributes[$this->localeEn->code]['slug']; + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->childCategory->id, + 'locale' => $this->localeEn->code, + 'url_path' => $expectedUrlPath, + ]); + + $expectedUrlPath .= '/' . $this->grandChildCategoryAttributes[$this->localeEn->code]['slug']; + $I->seeRecord(CategoryTranslation::class, [ + 'category_id' => $this->grandChildCategory->id, + 'locale' => $this->localeEn->code, + 'url_path' => $expectedUrlPath, + ]); + + $I->amGoingTo('test if the url_path attribute is available in the model'); + $this->grandChildCategory->refresh(); + $I->assertEquals($expectedUrlPath, $this->grandChildCategory->url_path); + } + + public function testGetRootCategory(UnitTester $I) + { + $I->wantTo('test rootCategory attribute of a category'); + $rootCategory = $this->grandChildCategory->getRootCategory(); + + $I->assertNotNull($rootCategory); + $I->assertEquals($rootCategory->id, $this->rootCategory->id); + } + + public function testGetPathCategories(UnitTester $I) + { + $I->wantTo('test getPathCategories is returning the correct categories in the correct order'); + $I->amGoingTo('get all categories wihin the path of the grand child category'); + $pathCategories = $this->grandChildCategory->getPathCategories(); + + $I->assertCount(4, $pathCategories); + $I->assertEquals($pathCategories[0]->id, $this->rootCategory->id); + $I->assertEquals($pathCategories[1]->id, $this->category->id); + $I->assertEquals($pathCategories[2]->id, $this->childCategory->id); + $I->assertEquals($pathCategories[3]->id, $this->grandChildCategory->id); + } +} diff --git a/tests/unit/Product/Helpers/ProductTypeCest.php b/tests/unit/Product/Helpers/ProductTypeCest.php new file mode 100644 index 000000000..da3ba9abb --- /dev/null +++ b/tests/unit/Product/Helpers/ProductTypeCest.php @@ -0,0 +1,15 @@ +assertTrue(ProductType::hasVariants('configurable')); + $I->assertFalse(ProductType::hasVariants('simple')); + } +} diff --git a/tests/unit/Sales/order/OrderRepositoryCest.php b/tests/unit/Sales/order/OrderRepositoryCest.php new file mode 100644 index 000000000..ea2dddbb7 --- /dev/null +++ b/tests/unit/Sales/order/OrderRepositoryCest.php @@ -0,0 +1,38 @@ +getProperty('model'); + $property->setAccessible(true); + + $this->repository = $reflection->newInstanceWithoutConstructor(); + $property->setValue($this->repository, new Order()); + } + + public function testGenerateIncrementIdOnEmptyDatabase(UnitTester $I) + { + $result = $this->repository->generateIncrementId(); + + $I->assertEquals(1, $result); + } + + public function testGenerateIncrementIdOnFilledDatabase(UnitTester $I) + { + $order = new Order(['id' => rand(666, 1337)]); + $order->save(); + + $result = $this->repository->generateIncrementId(); + + $I->assertEquals($order->id + 1, $result); + } +} diff --git a/webpack.mix.js b/webpack.mix.js new file mode 100755 index 000000000..72fdbb16d --- /dev/null +++ b/webpack.mix.js @@ -0,0 +1,15 @@ +let mix = require('laravel-mix'); + +/* + |-------------------------------------------------------------------------- + | Mix Asset Management + |-------------------------------------------------------------------------- + | + | Mix provides a clean, fluent API for defining some Webpack build steps + | for your Laravel application. By default, we are compiling the Sass + | file for the application as well as bundling up all the JS files. + | + */ + +mix.js('resources/assets/js/app.js', 'public/js') + .sass('resources/assets/sass/app.scss', 'public/css'); From 4f1e20d23cc861c50743f81a98865685270534b7 Mon Sep 17 00:00:00 2001 From: rahul shukla Date: Tue, 21 Jan 2020 15:28:16 +0530 Subject: [PATCH 26/51] conflict resolve --- config/session.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/config/session.php b/config/session.php index f8fb6f334..08b9b55d7 100755 --- a/config/session.php +++ b/config/session.php @@ -124,11 +124,7 @@ return [ 'cookie' => env( 'SESSION_COOKIE', -<<<<<<< HEAD - str_slug(env('APP_NAME', 'laravel'), '_').'_session' -======= \Illuminate\Support\Str::slug(env('APP_NAME', 'laravel'), '_').'_session' ->>>>>>> debf060b03516ba67c103e0e9d8382c84a9271f6 ), /* From a606c06e115d1861e3cc5ff528c4ee02297f8654 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 15:51:12 +0530 Subject: [PATCH 27/51] Cart rule and catalog rule updated for laravel 6.0 --- composer.lock | 876 ++++++++++++------ .../CMS/src/Repositories/CmsRepository.php | 8 +- .../Http/Controllers/CartRuleController.php | 12 +- .../Controllers/CatalogRuleController.php | 12 +- packages/Webkul/Checkout/src/Cart.php | 4 +- .../src/Repositories/SliderRepository.php | 8 +- 6 files changed, 591 insertions(+), 329 deletions(-) diff --git a/composer.lock b/composer.lock index 845bc02ee..b047e7387 100644 --- a/composer.lock +++ b/composer.lock @@ -4,31 +4,31 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7f2f9cf13bf42618829cbe2516a7a85c", + "content-hash": "06686b2b0cd023b308427381d8ee9184", "packages": [ { "name": "astrotomic/laravel-translatable", - "version": "v11.5.2", + "version": "v11.6.1", "source": { "type": "git", "url": "https://github.com/Astrotomic/laravel-translatable.git", - "reference": "d1496d1f53e40ce6ceb689aa75befea4818211f1" + "reference": "f7b294cb7b2a853cb11b0e51bc60d9170f2b11a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Astrotomic/laravel-translatable/zipball/d1496d1f53e40ce6ceb689aa75befea4818211f1", - "reference": "d1496d1f53e40ce6ceb689aa75befea4818211f1", + "url": "https://api.github.com/repos/Astrotomic/laravel-translatable/zipball/f7b294cb7b2a853cb11b0e51bc60d9170f2b11a0", + "reference": "f7b294cb7b2a853cb11b0e51bc60d9170f2b11a0", "shasum": "" }, "require": { - "illuminate/contracts": "5.6.* || 5.7.* || 5.8.* || ^6.0", - "illuminate/database": "5.6.* || 5.7.* || 5.8.* || ^6.0", - "illuminate/support": "5.6.* || 5.7.* || 5.8.* || ^6.0", - "php": ">=7.1.3" + "illuminate/contracts": "5.8.* || ^6.0", + "illuminate/database": "5.8.* || ^6.0", + "illuminate/support": "5.8.* || ^6.0", + "php": ">=7.2" }, "require-dev": { - "orchestra/testbench": "3.6.* || 3.7.* || 3.8.* || ^4.0", - "orchestra/testbench-core": "3.6.* || 3.7.* || 3.8.* || ^4.0" + "orchestra/testbench": "3.8.* || ^4.0", + "phpunit/phpunit": "^8.0" }, "type": "library", "extra": { @@ -68,25 +68,25 @@ "laravel", "translation" ], - "time": "2019-10-09T08:24:20+00:00" + "time": "2019-11-06T09:12:49+00:00" }, { "name": "barryvdh/laravel-dompdf", - "version": "v0.8.3", + "version": "v0.8.5", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-dompdf.git", - "reference": "46781d0304277845a19c09c169bc595fd182cce4" + "reference": "7393732b2f3a3ee357974cbb0c46c9b65b84dad1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/46781d0304277845a19c09c169bc595fd182cce4", - "reference": "46781d0304277845a19c09c169bc595fd182cce4", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/7393732b2f3a3ee357974cbb0c46c9b65b84dad1", + "reference": "7393732b2f3a3ee357974cbb0c46c9b65b84dad1", "shasum": "" }, "require": { "dompdf/dompdf": "^0.8", - "illuminate/support": "5.5.x|5.6.x|5.7.x", + "illuminate/support": "^5.5|^6", "php": ">=7" }, "type": "library", @@ -124,7 +124,7 @@ "laravel", "pdf" ], - "time": "2018-08-31T13:25:44+00:00" + "time": "2019-08-23T14:30:33+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -530,28 +530,28 @@ }, { "name": "dompdf/dompdf", - "version": "v0.8.3", + "version": "v0.8.4", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "75f13c700009be21a1965dc2c5b68a8708c22ba2" + "reference": "8f49b3b01693f51037dd50da81090beba1b5c005" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/75f13c700009be21a1965dc2c5b68a8708c22ba2", - "reference": "75f13c700009be21a1965dc2c5b68a8708c22ba2", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/8f49b3b01693f51037dd50da81090beba1b5c005", + "reference": "8f49b3b01693f51037dd50da81090beba1b5c005", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "phenx/php-font-lib": "0.5.*", - "phenx/php-svg-lib": "0.3.*", - "php": ">=5.4.0" + "phenx/php-font-lib": "^0.5.1", + "phenx/php-svg-lib": "^0.3.3", + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.5|^6.5", - "squizlabs/php_codesniffer": "2.*" + "phpunit/phpunit": "^7.5", + "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "ext-gd": "Needed to process images", @@ -592,7 +592,7 @@ ], "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", "homepage": "https://github.com/dompdf/dompdf", - "time": "2018-12-14T02:40:31+00:00" + "time": "2020-01-20T17:00:46+00:00" }, { "name": "dragonmantank/cron-expression", @@ -650,21 +650,22 @@ }, { "name": "egulias/email-validator", - "version": "2.1.14", + "version": "2.1.15", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "c4b8d12921999d8a561004371701dbc2e05b5ece" + "reference": "e834eea5306d85d67de5a05db5882911d5b29357" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c4b8d12921999d8a561004371701dbc2e05b5ece", - "reference": "c4b8d12921999d8a561004371701dbc2e05b5ece", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e834eea5306d85d67de5a05db5882911d5b29357", + "reference": "e834eea5306d85d67de5a05db5882911d5b29357", "shasum": "" }, "require": { "doctrine/lexer": "^1.0.1", - "php": ">=5.5" + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.10" }, "require-dev": { "dominicsayers/isemail": "^3.0.7", @@ -703,53 +704,7 @@ "validation", "validator" ], - "time": "2020-01-05T14:11:20+00:00" - }, - { - "name": "erusev/parsedown", - "version": "1.7.4", - "source": { - "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35" - }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "time": "2019-12-30T22:54:17+00:00" + "time": "2020-01-20T21:40:59+00:00" }, { "name": "fideloper/proxy", @@ -1324,31 +1279,31 @@ }, { "name": "kalnoy/nestedset", - "version": "v4.3.4", + "version": "v5.0.0", "source": { "type": "git", "url": "https://github.com/lazychaser/laravel-nestedset.git", - "reference": "351fab2eaab95f885a0e52b01985301e93c4d7e7" + "reference": "9c0ae248f38289147a5094fa0c5ba9bb9e93104b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lazychaser/laravel-nestedset/zipball/351fab2eaab95f885a0e52b01985301e93c4d7e7", - "reference": "351fab2eaab95f885a0e52b01985301e93c4d7e7", + "url": "https://api.github.com/repos/lazychaser/laravel-nestedset/zipball/9c0ae248f38289147a5094fa0c5ba9bb9e93104b", + "reference": "9c0ae248f38289147a5094fa0c5ba9bb9e93104b", "shasum": "" }, "require": { - "illuminate/database": "5.2 - 5.8", - "illuminate/events": "5.2 - 5.8", - "illuminate/support": "5.2 - 5.8", - "php": ">=5.5.9" + "illuminate/database": "~5.7.0|~5.8.0|~6.0", + "illuminate/events": "~5.7.0|~5.8.0|~6.0", + "illuminate/support": "~5.7.0|~5.8.0|~6.0", + "php": ">=7.1.3" }, "require-dev": { - "phpunit/phpunit": "4.8.*" + "phpunit/phpunit": "7.*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "v4.2.x-dev" + "dev-master": "v5.0.x-dev" }, "laravel": { "providers": [ @@ -1371,7 +1326,7 @@ "email": "lazychaser@gmail.com" } ], - "description": "Nested Set Model for Laravel 4-5", + "description": "Nested Set Model for Laravel 5.7 and up", "keywords": [ "database", "hierarchy", @@ -1379,7 +1334,7 @@ "nested sets", "nsm" ], - "time": "2019-02-27T15:22:30+00:00" + "time": "2019-09-06T06:18:32+00:00" }, { "name": "konekt/concord", @@ -1554,89 +1509,48 @@ ], "time": "2019-11-24T13:23:50+00:00" }, - { - "name": "kylekatarnls/update-helper", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/kylekatarnls/update-helper.git", - "reference": "5786fa188e0361b9adf9e8199d7280d1b2db165e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/5786fa188e0361b9adf9e8199d7280d1b2db165e", - "reference": "5786fa188e0361b9adf9e8199d7280d1b2db165e", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0.0", - "php": ">=5.3.0" - }, - "require-dev": { - "codeclimate/php-test-reporter": "dev-master", - "composer/composer": "2.0.x-dev || ^2.0.0-dev", - "phpunit/phpunit": ">=4.8.35 <6.0" - }, - "type": "composer-plugin", - "extra": { - "class": "UpdateHelper\\ComposerPlugin" - }, - "autoload": { - "psr-0": { - "UpdateHelper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kyle", - "email": "kylekatarnls@gmail.com" - } - ], - "description": "Update helper", - "time": "2019-07-29T11:03:54+00:00" - }, { "name": "laravel/framework", - "version": "v5.6.16", + "version": "v6.11.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "fcdbc791bc3e113ada38ab0a1147141fb9ec2b16" + "reference": "17af23842c259edcfd8c5b9e6a7c86596e040034" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/fcdbc791bc3e113ada38ab0a1147141fb9ec2b16", - "reference": "fcdbc791bc3e113ada38ab0a1147141fb9ec2b16", + "url": "https://api.github.com/repos/laravel/framework/zipball/17af23842c259edcfd8c5b9e6a7c86596e040034", + "reference": "17af23842c259edcfd8c5b9e6a7c86596e040034", "shasum": "" }, "require": { - "doctrine/inflector": "~1.1", - "dragonmantank/cron-expression": "~2.0", - "erusev/parsedown": "~1.7", + "doctrine/inflector": "^1.1", + "dragonmantank/cron-expression": "^2.0", + "egulias/email-validator": "^2.1.10", + "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", + "league/commonmark": "^1.1", + "league/commonmark-ext-table": "^2.1", "league/flysystem": "^1.0.8", - "monolog/monolog": "~1.12", - "nesbot/carbon": "^1.24.1", - "php": "^7.1.3", - "psr/container": "~1.0", + "monolog/monolog": "^1.12|^2.0", + "nesbot/carbon": "^2.0", + "opis/closure": "^3.1", + "php": "^7.2", + "psr/container": "^1.0", "psr/simple-cache": "^1.0", "ramsey/uuid": "^3.7", - "swiftmailer/swiftmailer": "~6.0", - "symfony/console": "~4.0", - "symfony/debug": "~4.0", - "symfony/finder": "~4.0", - "symfony/http-foundation": "~4.0", - "symfony/http-kernel": "~4.0", - "symfony/process": "~4.0", - "symfony/routing": "~4.0", - "symfony/var-dumper": "~4.0", + "swiftmailer/swiftmailer": "^6.0", + "symfony/console": "^4.3.4", + "symfony/debug": "^4.3.4", + "symfony/finder": "^4.3.4", + "symfony/http-foundation": "^4.3.4", + "symfony/http-kernel": "^4.3.4", + "symfony/process": "^4.3.4", + "symfony/routing": "^4.3.4", + "symfony/var-dumper": "^4.3.4", "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "~2.2" + "vlucas/phpdotenv": "^3.3" }, "conflict": { "tightenco/collect": "<5.5.33" @@ -1672,43 +1586,47 @@ "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "~3.0", - "doctrine/dbal": "~2.6", - "filp/whoops": "^2.1.4", - "league/flysystem-cached-adapter": "~1.0", - "mockery/mockery": "~1.0", + "aws/aws-sdk-php": "^3.0", + "doctrine/dbal": "^2.6", + "filp/whoops": "^2.4", + "guzzlehttp/guzzle": "^6.3", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.3.1", "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.6.*", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~7.0", + "orchestra/testbench-core": "^4.0", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^8.4|^9.0", "predis/predis": "^1.1.1", - "symfony/css-selector": "~4.0", - "symfony/dom-crawler": "~4.0" + "symfony/cache": "^4.3.4" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.6).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", "ext-pcntl": "Required to use all features of the queue worker.", "ext-posix": "Required to use all features of the queue worker.", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", - "laravel/tinker": "Required to use the tinker console command (~1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-cached-adapter": "Required to use the Flysystem cache (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (~1.0).", - "nexmo/client": "Required to use the Nexmo transport (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (~4.0).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~4.0).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." + "ext-redis": "Required to use the Redis cache and queue drivers.", + "filp/whoops": "Required for friendly error pages in development (^2.4).", + "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0).", + "laravel/tinker": "Required to use the tinker console command (^1.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^4.3.4).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.2).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.6-dev" + "dev-master": "6.x-dev" } }, "autoload": { @@ -1736,7 +1654,60 @@ "framework", "laravel" ], - "time": "2018-04-09T16:07:04+00:00" + "time": "2020-01-14T15:12:09+00:00" + }, + { + "name": "laravel/helpers", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/helpers.git", + "reference": "b8eae9ddd461e89d0296f74fd069c413bf83b6fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/helpers/zipball/b8eae9ddd461e89d0296f74fd069c413bf83b6fa", + "reference": "b8eae9ddd461e89d0296f74fd069c413bf83b6fa", + "shasum": "" + }, + "require": { + "illuminate/support": "~5.8.0|^6.0", + "php": ">=7.1.3" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Dries Vints", + "email": "dries.vints@gmail.com" + } + ], + "description": "Provides backwards compatibility for helpers in the latest Laravel release.", + "keywords": [ + "helpers", + "laravel" + ], + "time": "2019-07-30T15:25:31+00:00" }, { "name": "laravel/tinker", @@ -1856,6 +1827,142 @@ ], "time": "2019-05-24T18:30:49+00:00" }, + { + "name": "league/commonmark", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "34cf4ddb3892c715ae785c880e6691d839cff88d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/34cf4ddb3892c715ae785c880e6691d839cff88d", + "reference": "34cf4ddb3892c715ae785c880e6691d839cff88d", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1" + }, + "replace": { + "colinodell/commonmark-php": "*" + }, + "require-dev": { + "cebe/markdown": "~1.0", + "commonmark/commonmark.js": "0.29.1", + "erusev/parsedown": "~1.0", + "ext-json": "*", + "michelf/php-markdown": "~1.4", + "mikehaertl/php-shellcommand": "^1.4", + "phpstan/phpstan-shim": "^0.11.5", + "phpunit/phpunit": "^7.5", + "scrutinizer/ocular": "^1.5", + "symfony/finder": "^4.2" + }, + "suggest": { + "league/commonmark-extras": "Library of useful extensions including smart punctuation" + }, + "bin": [ + "bin/commonmark" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "PHP Markdown parser based on the CommonMark spec", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "markdown", + "parser" + ], + "time": "2020-01-16T01:18:13+00:00" + }, + { + "name": "league/commonmark-ext-table", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark-ext-table.git", + "reference": "3228888ea69636e855efcf6636ff8e6316933fe7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark-ext-table/zipball/3228888ea69636e855efcf6636ff8e6316933fe7", + "reference": "3228888ea69636e855efcf6636ff8e6316933fe7", + "shasum": "" + }, + "require": { + "league/commonmark": "~0.19.3|^1.0", + "php": "^7.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "phpstan/phpstan": "~0.11", + "phpunit/phpunit": "^7.0|^8.0", + "symfony/var-dumper": "^4.0", + "vimeo/psalm": "^3.0" + }, + "type": "commonmark-extension", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\Ext\\Table\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Martin Hasoň", + "email": "martin.hason@gmail.com" + }, + { + "name": "Webuni s.r.o.", + "homepage": "https://www.webuni.cz" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Table extension for league/commonmark", + "homepage": "https://github.com/thephpleague/commonmark-ext-table", + "keywords": [ + "commonmark", + "extension", + "markdown", + "table" + ], + "time": "2019-09-26T13:28:33+00:00" + }, { "name": "league/flysystem", "version": "1.0.63", @@ -1942,29 +2049,28 @@ }, { "name": "maatwebsite/excel", - "version": "3.1.11", + "version": "3.1.18", "source": { "type": "git", "url": "https://github.com/Maatwebsite/Laravel-Excel.git", - "reference": "8576af60a456bcead31a2d2d9cf03dea0598860e" + "reference": "d0231ab1f4bb93c8695630cb445ada1fdc54add0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Maatwebsite/Laravel-Excel/zipball/8576af60a456bcead31a2d2d9cf03dea0598860e", - "reference": "8576af60a456bcead31a2d2d9cf03dea0598860e", + "url": "https://api.github.com/repos/Maatwebsite/Laravel-Excel/zipball/d0231ab1f4bb93c8695630cb445ada1fdc54add0", + "reference": "d0231ab1f4bb93c8695630cb445ada1fdc54add0", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/support": "5.5.*|5.6.*|5.7.*|5.8.*", - "opis/closure": "^3.1", + "illuminate/support": "5.5.*|5.6.*|5.7.*|5.8.*|^6.0", "php": "^7.0", - "phpoffice/phpspreadsheet": "^1.6" + "phpoffice/phpspreadsheet": "^1.10" }, "require-dev": { "mockery/mockery": "^1.1", - "orchestra/database": "^3.8", - "orchestra/testbench": "^3.8", + "orchestra/database": "^4.0", + "orchestra/testbench": "^4.0", "phpunit/phpunit": "^8.0", "predis/predis": "^1.1" }, @@ -2006,7 +2112,7 @@ "php", "phpspreadsheet" ], - "time": "2019-03-19T10:54:38+00:00" + "time": "2019-12-24T10:40:12+00:00" }, { "name": "markbaker/complex", @@ -2174,21 +2280,21 @@ }, { "name": "monolog/monolog", - "version": "1.25.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1" + "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fa82921994db851a8becaf3787a9e73c5976b6f1", - "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c861fcba2ca29404dc9e617eedd9eff4616986b8", + "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": "^7.2", + "psr/log": "^1.0.1" }, "provide": { "psr/log-implementation": "1.0.0" @@ -2196,33 +2302,36 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", + "elasticsearch/elasticsearch": "^6.0", + "graylog2/gelf-php": "^1.4.2", + "jakub-onderka/php-parallel-lint": "^0.9", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", + "phpspec/prophecy": "^1.6.1", + "phpunit/phpunit": "^8.3", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -2248,7 +2357,7 @@ "logging", "psr-3" ], - "time": "2019-12-20T14:15:16+00:00" + "time": "2019-12-20T14:22:59+00:00" }, { "name": "namshi/jose", @@ -2315,34 +2424,39 @@ }, { "name": "nesbot/carbon", - "version": "1.39.1", + "version": "2.29.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33" + "reference": "faf862506030dc48c061c840c7f50933f1df4ed8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4be0c005164249208ce1b5ca633cd57bdd42ff33", - "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/faf862506030dc48c061c840c7f50933f1df4ed8", + "reference": "faf862506030dc48c061c840c7f50933f1df4ed8", "shasum": "" }, "require": { - "kylekatarnls/update-helper": "^1.1", - "php": ">=5.3.9", - "symfony/translation": "~2.6 || ~3.0 || ~4.0" + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { - "composer/composer": "^1.2", - "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "^4.8.35 || ^5.7" + "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "kylekatarnls/multi-tester": "^1.1", + "phpmd/phpmd": "^2.8", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "^7.5 || ^8.0", + "squizlabs/php_codesniffer": "^3.4" }, "bin": [ - "bin/upgrade-carbon" + "bin/carbon" ], "type": "library", "extra": { - "update-helper": "Carbon\\Upgrade", + "branch-alias": { + "dev-master": "2.x-dev" + }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" @@ -2351,7 +2465,7 @@ }, "autoload": { "psr-4": { - "": "src/" + "Carbon\\": "src/Carbon/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2363,16 +2477,20 @@ "name": "Brian Nesbitt", "email": "brian@nesbot.com", "homepage": "http://nesbot.com" + }, + { + "name": "kylekatarnls", + "homepage": "http://github.com/kylekatarnls" } ], - "description": "A simple API extension for DateTime.", + "description": "An API extension for DateTime that supports 281 different languages.", "homepage": "http://carbon.nesbot.com", "keywords": [ "date", "datetime", "time" ], - "time": "2019-10-14T05:51:36+00:00" + "time": "2020-01-21T07:29:55+00:00" }, { "name": "nikic/php-parser", @@ -2426,6 +2544,76 @@ ], "time": "2019-11-08T13:50:10+00:00" }, + { + "name": "nwidart/laravel-modules", + "version": "3.3.1", + "source": { + "type": "git", + "url": "https://github.com/nWidart/laravel-modules.git", + "reference": "a7ec8a5871e57d337b7d37bbeb246fb99c41c703" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/a7ec8a5871e57d337b7d37bbeb246fb99c41c703", + "reference": "a7ec8a5871e57d337b7d37bbeb246fb99c41c703", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.7", + "laravel/framework": "5.6.*", + "mockery/mockery": "~1.0", + "orchestra/testbench": "^3.6", + "phpstan/phpstan": "^0.9.2", + "phpunit/phpunit": "~7.0", + "spatie/phpunit-snapshot-assertions": "^1.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Nwidart\\Modules\\LaravelModulesServiceProvider" + ], + "aliases": { + "Module": "Nwidart\\Modules\\Facades\\Module" + } + }, + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Nwidart\\Modules\\": "src" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Widart", + "email": "n.widart@gmail.com", + "homepage": "https://nicolaswidart.com", + "role": "Developer" + } + ], + "description": "Laravel Module management", + "keywords": [ + "laravel", + "module", + "modules", + "nwidart", + "rad" + ], + "time": "2018-07-13T15:36:59+00:00" + }, { "name": "opis/closure", "version": "3.5.1", @@ -2703,28 +2891,83 @@ "time": "2019-12-01T23:13:51+00:00" }, { - "name": "prettus/l5-repository", - "version": "2.6.32", + "name": "phpoption/phpoption", + "version": "1.7.2", "source": { "type": "git", - "url": "https://github.com/andersao/l5-repository.git", - "reference": "f6ebfffee80a38e1d2dcf479e70b1a9ead397c24" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/andersao/l5-repository/zipball/f6ebfffee80a38e1d2dcf479e70b1a9ead397c24", - "reference": "f6ebfffee80a38e1d2dcf479e70b1a9ead397c24", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", + "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", "shasum": "" }, "require": { - "illuminate/config": "~5.0", - "illuminate/console": "~5.0", - "illuminate/database": "~5.0", - "illuminate/filesystem": "~5.0", - "illuminate/http": "~5.0", - "illuminate/pagination": "~5.0", - "illuminate/support": "~5.0", - "prettus/laravel-validation": "1.1.*" + "php": "^5.5.9 || ^7.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.3", + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2019-12-15T19:35:24+00:00" + }, + { + "name": "prettus/l5-repository", + "version": "2.6.40", + "source": { + "type": "git", + "url": "https://github.com/andersao/l5-repository.git", + "reference": "48ed6d347941bf04927a3cd490df7bba7a02ca36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andersao/l5-repository/zipball/48ed6d347941bf04927a3cd490df7bba7a02ca36", + "reference": "48ed6d347941bf04927a3cd490df7bba7a02ca36", + "shasum": "" + }, + "require": { + "illuminate/config": "~5.0|~6.0", + "illuminate/console": "~5.0|~6.0", + "illuminate/database": "~5.0|~6.0", + "illuminate/filesystem": "~5.0|~6.0", + "illuminate/http": "~5.0|~6.0", + "illuminate/pagination": "~5.0|~6.0", + "illuminate/support": "~5.0|~6.0", + "prettus/laravel-validation": "~1.1|~1.2" }, "suggest": { "league/fractal": "Required to use the Fractal Presenter (0.12.*).", @@ -2752,10 +2995,12 @@ { "name": "Anderson Andrade", "email": "contato@andersonandra.de", + "homepage": "http://andersonandra.de", "role": "Developer" } ], "description": "Laravel 5 - Repositories to the database layer", + "homepage": "http://andersao.github.io/l5-repository", "keywords": [ "cache", "eloquent", @@ -2763,25 +3008,25 @@ "model", "repository" ], - "time": "2018-01-27T15:53:20+00:00" + "time": "2019-12-22T13:53:50+00:00" }, { "name": "prettus/laravel-validation", - "version": "1.1.5", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/andersao/laravel-validator.git", - "reference": "d9eb401fb3518a890b117e83bd25a4109fcdb704" + "reference": "5ffa053baae31d11fa34da013b940d85c99ba253" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/andersao/laravel-validator/zipball/d9eb401fb3518a890b117e83bd25a4109fcdb704", - "reference": "d9eb401fb3518a890b117e83bd25a4109fcdb704", + "url": "https://api.github.com/repos/andersao/laravel-validator/zipball/5ffa053baae31d11fa34da013b940d85c99ba253", + "reference": "5ffa053baae31d11fa34da013b940d85c99ba253", "shasum": "" }, "require": { - "illuminate/support": "~5.4", - "illuminate/validation": "~5.4", + "illuminate/support": "~5.4|^6.0", + "illuminate/validation": "~5.4|^6.0", "php": ">=5.4.0" }, "type": "library", @@ -2794,16 +3039,19 @@ "authors": [ { "name": "Anderson Andrade", - "email": "contato@andersonandra.de" + "email": "contato@andersonandra.de", + "homepage": "http://andersonandra.de", + "role": "Developer" } ], "description": "Laravel Validation Service", + "homepage": "http://andersao.github.io/laravel-validation", "keywords": [ "laravel", "service", "validation" ], - "time": "2017-08-28T23:28:32+00:00" + "time": "2019-09-11T12:19:42+00:00" }, { "name": "psr/container", @@ -4834,35 +5082,35 @@ }, { "name": "tymon/jwt-auth", - "version": "1.0.0-rc.4", + "version": "1.0.0-rc.5", "source": { "type": "git", "url": "https://github.com/tymondesigns/jwt-auth.git", - "reference": "f72b8eb0deff2c002d40a8b0411a546c28ebec98" + "reference": "103739700dc0358039a33b5bc91247570bb83529" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/f72b8eb0deff2c002d40a8b0411a546c28ebec98", - "reference": "f72b8eb0deff2c002d40a8b0411a546c28ebec98", + "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/103739700dc0358039a33b5bc91247570bb83529", + "reference": "103739700dc0358039a33b5bc91247570bb83529", "shasum": "" }, "require": { - "illuminate/auth": "^5.1", - "illuminate/contracts": "^5.1", - "illuminate/http": "^5.1", - "illuminate/support": "^5.1", + "illuminate/auth": "^5.1|^6", + "illuminate/contracts": "^5.1|^6", + "illuminate/http": "^5.1|^6", + "illuminate/support": "^5.1|^6", "lcobucci/jwt": "^3.2", "namshi/jose": "^7.0", - "nesbot/carbon": "^1.0 || ^2.0", - "php": "^5.5.9 || ^7.0" + "nesbot/carbon": "^1.0|^2.0", + "php": "^5.5.9|^7.0" }, "require-dev": { - "cartalyst/sentinel": "2.0.*", - "illuminate/console": "^5.1", - "illuminate/database": "^5.1", - "illuminate/routing": "^5.1", + "cartalyst/sentinel": "^2|^3", + "illuminate/console": "^5.1|^6", + "illuminate/database": "^5.1|^6", + "illuminate/routing": "^5.1|^6", "mockery/mockery": ">=0.9.9", - "phpunit/phpunit": "~4.8 || ~6.0" + "phpunit/phpunit": "~4.8|~6.0" }, "type": "library", "extra": { @@ -4905,33 +5153,34 @@ "jwt", "laravel" ], - "time": "2019-03-05T09:05:32+00:00" + "time": "2019-09-09T03:33:47+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v2.6.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5" + "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5", - "reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156", + "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": "^5.4 || ^7.0", + "phpoption/phpoption": "^1.5", "symfony/polyfill-ctype": "^1.9" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.0" + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "3.6-dev" } }, "autoload": { @@ -4944,10 +5193,15 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "homepage": "https://gjcampbell.co.uk/" + }, { "name": "Vance Lucas", "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" + "homepage": "https://vancelucas.com/" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -4956,7 +5210,7 @@ "env", "environment" ], - "time": "2019-01-29T11:11:52+00:00" + "time": "2019-09-10T21:37:39+00:00" } ], "packages-dev": [ @@ -5371,20 +5625,21 @@ "selenium", "webdriver" ], + "abandoned": "php-webdriver/webdriver", "time": "2019-06-13T08:02:18+00:00" }, { "name": "filp/whoops", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "4c97f814aa2f0dd4d5bedc89181c10ef12c004c5" + "reference": "fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/4c97f814aa2f0dd4d5bedc89181c10ef12c004c5", - "reference": "4c97f814aa2f0dd4d5bedc89181c10ef12c004c5", + "url": "https://api.github.com/repos/filp/whoops/zipball/fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130", + "reference": "fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130", "shasum": "" }, "require": { @@ -5432,7 +5687,7 @@ "throwable", "whoops" ], - "time": "2019-12-29T10:00:00+00:00" + "time": "2020-01-15T10:00:00+00:00" }, { "name": "fzaninotto/faker", @@ -6083,35 +6338,42 @@ }, { "name": "laravel/dusk", - "version": "v4.0.5", + "version": "v5.8.1", "source": { "type": "git", "url": "https://github.com/laravel/dusk.git", - "reference": "c30c8a01d35661e253a7d3ea7ae6a79faf3f8d92" + "reference": "d67fe1d0797fc2886d9229f011be9af8ee069750" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/dusk/zipball/c30c8a01d35661e253a7d3ea7ae6a79faf3f8d92", - "reference": "c30c8a01d35661e253a7d3ea7ae6a79faf3f8d92", + "url": "https://api.github.com/repos/laravel/dusk/zipball/d67fe1d0797fc2886d9229f011be9af8ee069750", + "reference": "d67fe1d0797fc2886d9229f011be9af8ee069750", "shasum": "" }, "require": { - "facebook/webdriver": "~1.3", - "illuminate/console": "~5.6", - "illuminate/support": "~5.6", - "nesbot/carbon": "~1.20", + "ext-json": "*", + "ext-zip": "*", + "facebook/webdriver": "^1.7", + "illuminate/console": "~5.7.0|~5.8.0|^6.0|^7.0", + "illuminate/support": "~5.7.0|~5.8.0|^6.0|^7.0", + "nesbot/carbon": "^1.20|^2.0", "php": ">=7.1.0", - "symfony/console": "~4.0", - "symfony/process": "~4.0" + "symfony/console": "^4.0|^5.0", + "symfony/finder": "^4.0|^5.0", + "symfony/process": "^4.0|^5.0", + "vlucas/phpdotenv": "^2.2|^3.0|^4.0" }, "require-dev": { - "mockery/mockery": "~1.0", - "phpunit/phpunit": "~7.0" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5|^8.0" + }, + "suggest": { + "ext-pcntl": "Used to gracefully terminate Dusk when tests are running." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "5.0-dev" }, "laravel": { "providers": [ @@ -6140,7 +6402,7 @@ "testing", "webdriver" ], - "time": "2019-01-10T14:22:35+00:00" + "time": "2020-01-07T18:54:17+00:00" }, { "name": "maximebf/debugbar", @@ -6270,16 +6532,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.9.4", + "version": "1.9.5", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7" + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/579bb7356d91f9456ccd505f24ca8b667966a0a7", - "reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", "shasum": "" }, "require": { @@ -6314,7 +6576,7 @@ "object", "object graph" ], - "time": "2019-12-15T19:12:40+00:00" + "time": "2020-01-17T21:11:47+00:00" }, { "name": "nunomaduro/collision", @@ -6635,24 +6897,24 @@ }, { "name": "phpspec/prophecy", - "version": "1.10.1", + "version": "v1.10.2", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc" + "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/cbe1df668b3fe136bcc909126a0f529a78d4cbbc", - "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b4400efc9d206e83138e2bb97ed7f5b14b831cd9", + "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { "phpspec/phpspec": "^2.5 || ^3.2", @@ -6694,7 +6956,7 @@ "spy", "stub" ], - "time": "2019-12-22T21:05:45+00:00" + "time": "2020-01-20T15:57:02+00:00" }, { "name": "phpunit/php-code-coverage", diff --git a/packages/Webkul/CMS/src/Repositories/CmsRepository.php b/packages/Webkul/CMS/src/Repositories/CmsRepository.php index 0a9da50f3..0c5e0812f 100644 --- a/packages/Webkul/CMS/src/Repositories/CmsRepository.php +++ b/packages/Webkul/CMS/src/Repositories/CmsRepository.php @@ -31,7 +31,7 @@ class CmsRepository extends Repository */ public function create(array $data) { - Event::fire('cms.pages.create.before'); + Event::dispatch('cms.pages.create.before'); $model = $this->getModel(); @@ -46,7 +46,7 @@ class CmsRepository extends Repository $page->channels()->sync($data['channels']); - Event::fire('cms.pages.create.after', $page); + Event::dispatch('cms.pages.create.after', $page); return $page; } @@ -61,13 +61,13 @@ class CmsRepository extends Repository { $page = $this->find($id); - Event::fire('cms.pages.update.before', $id); + Event::dispatch('cms.pages.update.before', $id); parent::update($data, $id, $attribute); $page->channels()->sync($data['channels']); - Event::fire('cms.pages.update.after', $id); + Event::dispatch('cms.pages.update.after', $id); return $page; } diff --git a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php index dc90a01b5..0e74172ac 100644 --- a/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php +++ b/packages/Webkul/CartRule/src/Http/Controllers/CartRuleController.php @@ -97,11 +97,11 @@ class CartRuleController extends Controller $data = request()->all(); - Event::fire('promotions.cart_rule.create.before'); + Event::dispatch('promotions.cart_rule.create.before'); $cartRule = $this->cartRuleRepository->create($data); - Event::fire('promotions.cart_rule.create.after', $cartRule); + Event::dispatch('promotions.cart_rule.create.after', $cartRule); session()->flash('success', trans('admin::app.response.create-success', ['name' => 'Cart Rule'])); @@ -145,11 +145,11 @@ class CartRuleController extends Controller $cartRule = $this->cartRuleRepository->findOrFail($id); - Event::fire('promotions.cart_rule.update.before', $cartRule); + Event::dispatch('promotions.cart_rule.update.before', $cartRule); $cartRule = $this->cartRuleRepository->update(request()->all(), $id); - Event::fire('promotions.cart_rule.update.after', $cartRule); + Event::dispatch('promotions.cart_rule.update.after', $cartRule); session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Cart Rule'])); @@ -167,11 +167,11 @@ class CartRuleController extends Controller $cartRule = $this->cartRuleRepository->findOrFail($id); try { - Event::fire('promotions.cart_rule.delete.before', $id); + Event::dispatch('promotions.cart_rule.delete.before', $id); $this->cartRuleRepository->delete($id); - Event::fire('promotions.cart_rule.delete.after', $id); + Event::dispatch('promotions.cart_rule.delete.after', $id); session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Cart Rule'])); diff --git a/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php b/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php index 3bcceb50f..41b34e7b0 100644 --- a/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php +++ b/packages/Webkul/CatalogRule/src/Http/Controllers/CatalogRuleController.php @@ -94,11 +94,11 @@ class CatalogRuleController extends Controller $data = request()->all(); - Event::fire('promotions.catalog_rule.create.before'); + Event::dispatch('promotions.catalog_rule.create.before'); $catalogRule = $this->catalogRuleRepository->create($data); - Event::fire('promotions.catalog_rule.create.after', $catalogRule); + Event::dispatch('promotions.catalog_rule.create.after', $catalogRule); $this->catalogRuleIndexHelper->reindexComplete(); @@ -141,11 +141,11 @@ class CatalogRuleController extends Controller $catalogRule = $this->catalogRuleRepository->findOrFail($id); - Event::fire('promotions.catalog_rule.update.before', $catalogRule); + Event::dispatch('promotions.catalog_rule.update.before', $catalogRule); $catalogRule = $this->catalogRuleRepository->update(request()->all(), $id); - Event::fire('promotions.catalog_rule.update.after', $catalogRule); + Event::dispatch('promotions.catalog_rule.update.after', $catalogRule); $this->catalogRuleIndexHelper->reindexComplete(); @@ -165,11 +165,11 @@ class CatalogRuleController extends Controller $catalogRule = $this->catalogRuleRepository->findOrFail($id); try { - Event::fire('promotions.catalog_rule.delete.before', $id); + Event::dispatch('promotions.catalog_rule.delete.before', $id); $this->catalogRuleRepository->delete($id); - Event::fire('promotions.catalog_rule.delete.after', $id); + Event::dispatch('promotions.catalog_rule.delete.after', $id); session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Catalog Rule'])); diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index fcce552c9..8b3ae7993 100755 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -615,7 +615,7 @@ class Cart { if (! $cart = $this->getCart()) return false; - Event::fire('checkout.cart.collect.totals.before', $cart); + Event::dispatch('checkout.cart.collect.totals.before', $cart); $this->calculateItemsTax(); @@ -658,7 +658,7 @@ class Cart { $cart->save(); - Event::fire('checkout.cart.collect.totals.after', $cart); + Event::dispatch('checkout.cart.collect.totals.after', $cart); } /** diff --git a/packages/Webkul/Core/src/Repositories/SliderRepository.php b/packages/Webkul/Core/src/Repositories/SliderRepository.php index f2e455492..b1c808fd5 100755 --- a/packages/Webkul/Core/src/Repositories/SliderRepository.php +++ b/packages/Webkul/Core/src/Repositories/SliderRepository.php @@ -56,7 +56,7 @@ class SliderRepository extends Repository */ public function save(array $data) { - Event::fire('core.settings.slider.create.before', $data); + Event::dispatch('core.settings.slider.create.before', $data); $channelName = $this->channelRepository->find($data['channel_id'])->name; @@ -88,7 +88,7 @@ class SliderRepository extends Repository $slider = $this->create($data); - Event::fire('core.settings.slider.create.after', $slider); + Event::dispatch('core.settings.slider.create.after', $slider); return true; } @@ -99,7 +99,7 @@ class SliderRepository extends Repository */ public function updateItem(array $data, $id) { - Event::fire('core.settings.slider.update.before', $id); + Event::dispatch('core.settings.slider.update.before', $id); $channelName = $this->channelRepository->find($data['channel_id'])->name; @@ -131,7 +131,7 @@ class SliderRepository extends Repository $slider = $this->update($data, $id); - Event::fire('core.settings.slider.update.after', $slider); + Event::dispatch('core.settings.slider.update.after', $slider); return true; } From 6f12f216250abff40c592ec16cb51a0548fd45dc Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 15:54:46 +0530 Subject: [PATCH 28/51] PHP version updated in readme file --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f430fc703..8a434304f 100755 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ Take advantage of two of the hottest frameworks used in this project -- Laravel * **OS**: Ubuntu 16.04 LTS or higher / Windows 7 or Higher (WampServer / XAMPP). * **SERVER**: Apache 2 or NGINX. * **RAM**: 3 GB or higher. -* **PHP**: 7.1.3 or higher. +* **PHP**: 7.2.0 or higher. * **Processor**: Clock Cycle 1 Ghz or higher. * **For MySQL users**: 5.7.23 or higher. * **For MariaDB users**: 10.2.7 or Higher. From 4bb13981bba8a2134b30011b867c2b2e7ec774c8 Mon Sep 17 00:00:00 2001 From: rahul shukla Date: Tue, 21 Jan 2020 16:05:44 +0530 Subject: [PATCH 29/51] php version updated for installer. --- public/installer/Classes/Requirement.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/installer/Classes/Requirement.php b/public/installer/Classes/Requirement.php index e033d4ddf..20bd46793 100755 --- a/public/installer/Classes/Requirement.php +++ b/public/installer/Classes/Requirement.php @@ -80,7 +80,7 @@ class Requirement { * * @var _minPhpVersion */ - $_minPhpVersion = '7.1.17'; + $_minPhpVersion = '7.2.0'; $currentPhpVersion = $this->getPhpVersionInfo(); $supported = false; From 3046aa617ba4ad5a8e0de95991904914dd125169 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 17:02:01 +0530 Subject: [PATCH 30/51] PHP version updated in composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 3b09011ba..592c64358 100755 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ "license": "MIT", "type": "project", "require": { - "php": "^7.1.3", + "php": "^7.2.0", "ext-curl": "*", "ext-intl": "*", "ext-mbstring": "*", From cddba75d9e8cad1b30dfd2ea0dd81d6239d6e3aa Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 19:05:56 +0530 Subject: [PATCH 31/51] Added .env.ci file --- .env.ci | 39 +++++++++++++++++++++++++++++++++++++++ .env.testing | 32 +++++++++++++++----------------- 2 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 .env.ci diff --git a/.env.ci b/.env.ci new file mode 100644 index 000000000..5893cf60c --- /dev/null +++ b/.env.ci @@ -0,0 +1,39 @@ +APP_NAME=Laravel +APP_ENV=local +APP_VERSION=0.1.5 +APP_KEY=base64:G4KY3tUsTaY9ONo1n/QyJvVLQZdJDgbIkSJswFK01HE= +APP_DEBUG=true +APP_URL=http://192.168.15.195/laravel/bagisto/public + +LOG_CHANNEL=stack + +DB_CONNECTION=sqlite +DB_DATABASE=:memory: + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +SESSION_DRIVER=file +SESSION_LIFETIME=120 +QUEUE_DRIVER=sync + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_DRIVER=smtp +MAIL_HOST=smtp.sendgrid.net +MAIL_PORT=587 +MAIL_USERNAME=helpdeskWebkul +MAIL_PASSWORD=SiM8$GjQCaI)!pTSF^ +MAIL_ENCRYPTION=tls + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +SHOP_MAIL_FROM=jitendra@webkul.com +ADMIN_MAIL_TO=jitendra@webkul.com \ No newline at end of file diff --git a/.env.testing b/.env.testing index 6b1104008..38b5b4884 100644 --- a/.env.testing +++ b/.env.testing @@ -1,23 +1,23 @@ -APP_NAME=Bagisto +APP_NAME=Laravel APP_ENV=local -APP_VERSION=0.1.8 -APP_KEY=base64:NFtGjjFAqET6RlX3PVC/gFpzHb4jK1OxDc3cuU5Asz4= +APP_VERSION=0.1.5 +APP_KEY=base64:G4KY3tUsTaY9ONo1n/QyJvVLQZdJDgbIkSJswFK01HE= APP_DEBUG=true -APP_URL=http://localhost +APP_URL=http://192.168.15.195/laravel/bagisto/public LOG_CHANNEL=stack DB_CONNECTION=mysql -DB_HOST=mysql +DB_HOST=localhost DB_PORT=3306 -DB_DATABASE=bagisto_test +DB_DATABASE=bagisto_testing DB_USERNAME=root -DB_PASSWORD=root +DB_PASSWORD=webkul BROADCAST_DRIVER=log CACHE_DRIVER=file SESSION_DRIVER=file -SESSION_LIFETIME=20 +SESSION_LIFETIME=120 QUEUE_DRIVER=sync REDIS_HOST=127.0.0.1 @@ -25,17 +25,12 @@ REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_DRIVER=smtp -MAIL_HOST=smtp.mailtrap.io -MAIL_PORT=2525 -MAIL_USERNAME= -MAIL_PASSWORD= +MAIL_HOST=smtp.sendgrid.net +MAIL_PORT=587 +MAIL_USERNAME=helpdeskWebkul +MAIL_PASSWORD=SiM8$GjQCaI)!pTSF^ MAIL_ENCRYPTION=tls -SHOP_MAIL_FROM= -ADMIN_MAIL_TO= - -fixer_api_key= - PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= @@ -43,3 +38,6 @@ PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +SHOP_MAIL_FROM=jitendra@webkul.com +ADMIN_MAIL_TO=jitendra@webkul.com \ No newline at end of file From 48ddb65b15b2d9732ddaa120a82fbd388c7adee4 Mon Sep 17 00:00:00 2001 From: Jitendra Singh <39991107+jitendra-webkul@users.noreply.github.com> Date: Tue, 21 Jan 2020 19:07:17 +0530 Subject: [PATCH 32/51] Create ci.yml --- .github/workflows/ci.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..b16aebf16 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,29 @@ +name: Bagisto + +on: [push] + +jobs: + laravel-tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Copy .env + run: php -r "file_exists('.env') || copy('.env.ci', '.env');" + - name: Install Dependencies + run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist + - name: Generate key + run: php artisan key:generate + - name: Create Database + run: | + mkdir -p database + touch database/database.sqlite + - name: Execute tests (Unit, Feature and Trigger tests) via Codeception + env: + DB_CONNECTION: sqlite + DB_DATABASE: database/database.sqlite + run: | + set -e + @php artisan migrate:fresh --env=testing + vendor/bin/codecept run unit + vendor/bin/codecept run functional + vendor/bin/codecept run trigger From 6ce0ff0f412964b4629f210679d0c4b72d34f9c2 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 19:18:16 +0530 Subject: [PATCH 33/51] composer.lock file updated --- composer.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.lock b/composer.lock index b047e7387..7b04d5410 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "06686b2b0cd023b308427381d8ee9184", + "content-hash": "cc056714a51a7ae1a027577b93e07ef1", "packages": [ { "name": "astrotomic/laravel-translatable", @@ -8134,7 +8134,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.1.3", + "php": "^7.2.0", "ext-curl": "*", "ext-intl": "*", "ext-mbstring": "*", From a04ec5a12bd5d48e5cf0ea50455a79dc510647e7 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 19:22:29 +0530 Subject: [PATCH 34/51] Updated ci.yml --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b16aebf16..633aa90b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ jobs: - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies - run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist + run: composer install - name: Generate key run: php artisan key:generate - name: Create Database From bc70656ec8c06bad1adcc5b49701903e3fef67d1 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 19:58:11 +0530 Subject: [PATCH 35/51] Added php extensions --- .github/workflows/ci.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 633aa90b0..9c2da1795 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,11 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 + - name: Setup PHP + uses: shivammathur/setup-php@master + with: + php-version: 7.2.0 + extension-csv: curl, intl, mbstring, openssl, pdo, pdo_mysql, tokenizer - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies @@ -23,7 +28,7 @@ jobs: DB_DATABASE: database/database.sqlite run: | set -e - @php artisan migrate:fresh --env=testing + @php artisan migrate:fresh --env=ci vendor/bin/codecept run unit vendor/bin/codecept run functional - vendor/bin/codecept run trigger + vendor/bin/codecept run trigger \ No newline at end of file From ff41e0e417582f732798f5890aa56be2e18c1d97 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:01:45 +0530 Subject: [PATCH 36/51] Updated ci.yml --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c2da1795..c6d7eb71c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,10 +8,10 @@ jobs: steps: - uses: actions/checkout@v1 - name: Setup PHP - uses: shivammathur/setup-php@master - with: - php-version: 7.2.0 - extension-csv: curl, intl, mbstring, openssl, pdo, pdo_mysql, tokenizer + uses: shivammathur/setup-php@v1 + with: + php-version: '7.4' + extensions: curl, intl, mbstring, openssl, pdo, pdo_mysql, tokenizer - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies From a5878915322ba241e9737b4200e9accd4d43b2b7 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:03:36 +0530 Subject: [PATCH 37/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c6d7eb71c..47a486fac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,9 +8,9 @@ jobs: steps: - uses: actions/checkout@v1 - name: Setup PHP - uses: shivammathur/setup-php@v1 - with: - php-version: '7.4' + uses: shivammathur/setup-php@v1 + with: + php-version: 7.4 extensions: curl, intl, mbstring, openssl, pdo, pdo_mysql, tokenizer - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" From 7258b8dc88befa4d3d934bfadc2c30a1071359c8 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:05:51 +0530 Subject: [PATCH 38/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 47a486fac..28fb3d90e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: uses: shivammathur/setup-php@v1 with: php-version: 7.4 - extensions: curl, intl, mbstring, openssl, pdo, pdo_mysql, tokenizer + extensions: intl, mbstring - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies From b2e6e8204e6070cad03b2606203ebae673d5dc9d Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:16:59 +0530 Subject: [PATCH 39/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28fb3d90e..3d08190d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,8 +10,8 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v1 with: - php-version: 7.4 - extensions: intl, mbstring + php-version: '7.4' + extensions: intl - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies From 0801ab86ea37a6e58664ddfe5709446aa74261cd Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:18:22 +0530 Subject: [PATCH 40/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3d08190d4..6aa044f3d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: uses: shivammathur/setup-php@v1 with: php-version: '7.4' - extensions: intl + extensions: 'intl' - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies From 8a63aa25524adcaf4a85a0c1700f8dfd5888e6a0 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:20:27 +0530 Subject: [PATCH 41/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6aa044f3d..b6ae89915 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,6 @@ jobs: uses: shivammathur/setup-php@v1 with: php-version: '7.4' - extensions: 'intl' - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies From c494a3946bd87ae7ac463d8fd9d0d8a48f347cdc Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:22:16 +0530 Subject: [PATCH 42/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b6ae89915..422d3eeff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,10 +7,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - - name: Setup PHP - uses: shivammathur/setup-php@v1 - with: - php-version: '7.4' - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies From 8ed91faa7a1ceed6bd020afc9bbd9441ad208547 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:25:16 +0530 Subject: [PATCH 43/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 422d3eeff..80809325f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,11 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 + - name: Setup PHP + - uses: shivammathur/setup-php@v1 + with: + extensions: intl + - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies From 9d7acc0f11bb4ce1dce24660aab5a0b3919a722c Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:26:57 +0530 Subject: [PATCH 44/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 80809325f..788775651 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,11 +7,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 + - name: Setup PHP - uses: shivammathur/setup-php@v1 with: extensions: intl - + - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies From d12ecf74e5bde6b1a1c7a09726aea79e11796251 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:28:47 +0530 Subject: [PATCH 45/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 788775651..896ef9262 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - + - name: Setup PHP - uses: shivammathur/setup-php@v1 with: From da56b54cc7ab42f2bddbd0486f91a51ad66282ee Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:31:22 +0530 Subject: [PATCH 46/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 896ef9262..26a027f3e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,10 +8,10 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Setup PHP - - uses: shivammathur/setup-php@v1 - with: - extensions: intl + - name: Setup PHP + - uses: shivammathur/setup-php@v1 + with: + extensions: intl - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" From b05e27a8bac284ffda642f4945f2b02fc2482e30 Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:32:51 +0530 Subject: [PATCH 47/51] Fixed syntax in ci.yml --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 26a027f3e..043d7f95b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,6 @@ jobs: - uses: shivammathur/setup-php@v1 with: extensions: intl - - name: Copy .env run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - name: Install Dependencies From 4b3ec1c9eca7323a0c1b3d13a8937ffa7287292f Mon Sep 17 00:00:00 2001 From: Jitendra Singh Date: Tue, 21 Jan 2020 20:35:45 +0530 Subject: [PATCH 48/51] Removed ci.yml --- .github/workflows/ci.yml | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 043d7f95b..000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Bagisto - -on: [push] - -jobs: - laravel-tests: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - - name: Setup PHP - - uses: shivammathur/setup-php@v1 - with: - extensions: intl - - name: Copy .env - run: php -r "file_exists('.env') || copy('.env.ci', '.env');" - - name: Install Dependencies - run: composer install - - name: Generate key - run: php artisan key:generate - - name: Create Database - run: | - mkdir -p database - touch database/database.sqlite - - name: Execute tests (Unit, Feature and Trigger tests) via Codeception - env: - DB_CONNECTION: sqlite - DB_DATABASE: database/database.sqlite - run: | - set -e - @php artisan migrate:fresh --env=ci - vendor/bin/codecept run unit - vendor/bin/codecept run functional - vendor/bin/codecept run trigger \ No newline at end of file From a71ccb522b4b712413774b60b6652010142c2933 Mon Sep 17 00:00:00 2001 From: Florian Bosdorff Date: Tue, 21 Jan 2020 20:01:07 +0100 Subject: [PATCH 49/51] add automated test pipeline --- .env.testing | 6 ++-- .github/workflows/ci.yml | 60 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.env.testing b/.env.testing index 38b5b4884..e88f73461 100644 --- a/.env.testing +++ b/.env.testing @@ -8,11 +8,11 @@ APP_URL=http://192.168.15.195/laravel/bagisto/public LOG_CHANNEL=stack DB_CONNECTION=mysql -DB_HOST=localhost +DB_HOST=mysql DB_PORT=3306 DB_DATABASE=bagisto_testing -DB_USERNAME=root -DB_PASSWORD=webkul +DB_USERNAME=bagisto +DB_PASSWORD=secret BROADCAST_DRIVER=log CACHE_DRIVER=file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..1a0a1b5dd --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,60 @@ +name: CI + +on: + pull_request: + push: + branches: + - master + +jobs: + tests: + name: Run tests + runs-on: ubuntu-latest + + services: + mysql: + image: mysql:5.7 + env: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: bagisto_testing + MYSQL_USER: bagisto + MYSQL_PASSWORD: secret + ports: + - 3306 + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5 + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup php + uses: shivammathur/setup-php@v1 + with: + php-version: '7.3' + extensions: intl, curl, mbstring, openssl, pdo, pdo_mysql, tokenizer + + - name: Set environment + run: | + set -e + sed -i "s|^\(DB_HOST=\s*\).*$|\1127.0.0.1|" .env.testing + sed -i "s|^\(DB_PORT=\s*\).*$|\1${{ job.services.mysql.ports['3306'] }}|" .env.testing + printf "the complete .env.testing ...\n\n" + cat .env.testing + + - name: Composer install + run: | + set -e + composer global require hirak/prestissimo + composer install --no-interaction --ansi --no-progress --no-suggest --optimize-autoloader + + - name: Migrate database + run: set -e && php artisan migrate --env=testing + + - name: Execute unit tests + run: set -e && vendor/bin/codecept run unit + + - name: Execute functional tests + run: set -e && vendor/bin/codecept run functional + + - name: Execute trigger tests + run: set -e && vendor/bin/codecept run trigger From 9cb3600d7f6d3be6e5286ec15cf4ec4ac441876e Mon Sep 17 00:00:00 2001 From: Florian Bosdorff Date: Tue, 21 Jan 2020 20:13:22 +0100 Subject: [PATCH 50/51] change pipeline-trigger to on: push --- .github/workflows/ci.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a0a1b5dd..46fc3a4aa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,10 +1,6 @@ name: CI -on: - pull_request: - push: - branches: - - master +on: push jobs: tests: From ec51fa9108c2839d2222cebb35b143f192f6ae98 Mon Sep 17 00:00:00 2001 From: Florian Bosdorff Date: Tue, 21 Jan 2020 20:16:30 +0100 Subject: [PATCH 51/51] change pipeline-trigger to on: push and pull_request --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 46fc3a4aa..4f74da491 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,6 @@ name: CI -on: push +on: [push, pull_request] jobs: tests: