diff --git a/packages/Webkul/Admin/src/Config/system.php b/packages/Webkul/Admin/src/Config/system.php new file mode 100644 index 000000000..67d19e606 --- /dev/null +++ b/packages/Webkul/Admin/src/Config/system.php @@ -0,0 +1,33 @@ + 'catalog', + 'name' => 'Catalog', + 'sort' => 1 + ], [ + 'key' => 'catalog.products', + 'name' => 'Products', + 'sort' => 1, + ], [ + 'key' => 'catalog.products.review', + 'name' => 'Review', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'guest_review', + 'title' => 'Allow Guest Review', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'Yes', + 'value' => true + ], [ + 'title' => 'No', + 'value' => false + ] + ], + ] + ] + ], +]; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php index eb4853f6d..28dfb17d6 100755 --- a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php @@ -44,7 +44,7 @@ class AdminServiceProvider extends ServiceProvider Handler::class ); } - + /** * Register services. * @@ -115,7 +115,7 @@ class AdminServiceProvider extends ServiceProvider return $tree; } - + /** * Register package config. * @@ -130,5 +130,9 @@ class AdminServiceProvider extends ServiceProvider $this->mergeConfigFrom( dirname(__DIR__) . '/Config/acl.php', 'acl' ); + + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/system.php', 'core' + ); } } \ 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 index f73d76faf..7d212e34d 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -771,7 +771,8 @@ return [ '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.' + 'duplicate-error' => 'Identifier must be unique, duplicate identifier :identifier at row :position.', + 'enough-row-error' => 'file has not enough rows' ], 'response' => [ 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..897f343c3 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_145238_alter_product_reviews_table.php @@ -0,0 +1,31 @@ +string('name'); + $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_nullable_in_product_reviews_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_nullable_in_product_reviews_table.php new file mode 100644 index 000000000..b231e39de --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_nullable_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) { + // + }); + } +} diff --git a/packages/Webkul/Product/src/Models/ProductReview.php b/packages/Webkul/Product/src/Models/ProductReview.php index d5e111f5b..2544b941d 100755 --- a/packages/Webkul/Product/src/Models/ProductReview.php +++ b/packages/Webkul/Product/src/Models/ProductReview.php @@ -9,7 +9,7 @@ use Webkul\Product\Contracts\ProductReview as ProductReviewContract; class ProductReview extends Model implements ProductReviewContract { - protected $fillable = ['comment', 'title', 'rating', 'status', 'product_id', 'customer_id']; + protected $fillable = ['comment', 'title', 'rating', 'status', 'product_id', 'customer_id', 'name']; /** * Get the product attribute family that owns the product. diff --git a/packages/Webkul/Shipping/src/Config/system.php b/packages/Webkul/Shipping/src/Config/system.php index 03e49e78f..be069892b 100755 --- a/packages/Webkul/Shipping/src/Config/system.php +++ b/packages/Webkul/Shipping/src/Config/system.php @@ -30,7 +30,7 @@ return [ ], [ 'name' => 'active', 'title' => 'Status', - 'type' => 'select', + 'type' => 'multiselect', 'options' => [ [ 'title' => 'Active', diff --git a/packages/Webkul/Shop/src/DataGrids/OrderDataGrid.php b/packages/Webkul/Shop/src/DataGrids/OrderDataGrid.php new file mode 100644 index 000000000..827fdc1ce --- /dev/null +++ b/packages/Webkul/Shop/src/DataGrids/OrderDataGrid.php @@ -0,0 +1,88 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class OrderDataGrid 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('orders as order') + ->addSelect('order.id', 'order.status', 'order.created_at', 'order.grand_total') + ->where('customer_id', auth()->guard('customer')->user()->id); + + $this->setQueryBuilder($queryBuilder); + } + + public function addColumns() + { + $this->addColumn([ + 'index' => 'id', + 'label' => trans('shop::app.customer.account.order.index.order_id'), + 'type' => 'number', + 'searchable' => false, + 'sortable' => true, + ]); + + $this->addColumn([ + 'index' => 'created_at', + 'label' => trans('shop::app.customer.account.order.index.date'), + 'type' => 'datetime', + 'searchable' => true, + 'sortable' => true, + ]); + + $this->addColumn([ + 'index' => 'grand_total', + 'label' => trans('shop::app.customer.account.order.index.total'), + 'type' => 'price', + 'searchable' => true, + 'sortable' => true, + ]); + + $this->addColumn([ + 'index' => 'status', + 'label' => trans('shop::app.customer.account.order.index.status'), + 'type' => 'string', + 'searchable' => false, + 'sortable' => true, + 'closure' => 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'; + } + ]); + } + + public function prepareActions() { + $this->addAction([ + 'type' => 'View', + 'route' => 'customer.orders.view', + 'icon' => 'icon eye-icon' + ]); + } +} \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Http/Controllers/OrderController.php b/packages/Webkul/Shop/src/Http/Controllers/OrderController.php index af883561f..32c545436 100755 --- a/packages/Webkul/Shop/src/Http/Controllers/OrderController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/OrderController.php @@ -65,7 +65,8 @@ class OrderController extends Controller * * @return \Illuminate\Http\Response */ - public function index() { + public function index() + { $orders = $this->order->findWhere([ 'customer_id' => auth()->guard('customer')->user()->id ]); diff --git a/packages/Webkul/Shop/src/Http/Controllers/ReviewController.php b/packages/Webkul/Shop/src/Http/Controllers/ReviewController.php index 32fbffd5f..55bc20f1d 100755 --- a/packages/Webkul/Shop/src/Http/Controllers/ReviewController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/ReviewController.php @@ -46,8 +46,6 @@ class ReviewController extends Controller */ public function __construct(Product $product, ProductReview $productReview) { - $this->middleware('customer')->only(['create', 'store', 'destroy']); - $this->product = $product; $this->productReview = $productReview; @@ -65,7 +63,9 @@ class ReviewController extends Controller { $product = $this->product->findBySlugOrFail($slug); - return view($this->_config['view'], compact('product')); + $guest_review = core()->getConfigData('catalog.products.review.guest_review'); + + return view($this->_config['view'], compact('product', 'guest_review')); } /** @@ -84,11 +84,13 @@ class ReviewController extends Controller $data = request()->all(); - $customer_id = auth()->guard('customer')->user()->id; + if (auth()->guard('customer')->user()) { + $data['customer_id'] = auth()->guard('customer')->user()->id; + $data['name'] = auth()->guard('customer')->user()->first_name .' ' . auth()->guard('customer')->user()->last_name; + } $data['status'] = 'pending'; $data['product_id'] = $id; - $data['customer_id'] = $customer_id; $this->productReview->create($data); diff --git a/packages/Webkul/Shop/src/Http/routes.php b/packages/Webkul/Shop/src/Http/routes.php index cacfa3afa..e04ce1c40 100755 --- a/packages/Webkul/Shop/src/Http/routes.php +++ b/packages/Webkul/Shop/src/Http/routes.php @@ -106,7 +106,7 @@ Route::group(['middleware' => ['web', 'theme', 'locale', 'currency']], function // Show Product Review Form Store Route::post('/product/{slug}/review', 'Webkul\Shop\Http\Controllers\ReviewController@store')->defaults('_config', [ - 'redirect' => 'customer.reviews.index' + 'redirect' => 'shop.home.index' ])->name('shop.reviews.store'); //customer routes starts here diff --git a/packages/Webkul/Shop/src/Resources/lang/en/app.php b/packages/Webkul/Shop/src/Resources/lang/en/app.php index 9ab227503..594aea865 100755 --- a/packages/Webkul/Shop/src/Resources/lang/en/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/en/app.php @@ -80,7 +80,8 @@ return [ 'ratingreviews' => ':rating Ratings & :review Reviews', 'star' => 'Star', 'percentage' => ':percentage %', - 'id-star' => 'star' + 'id-star' => 'star', + 'name' => 'Name' ], 'customer' => [ 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 index 9d9c39566..1b2ea26ce 100755 --- 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 @@ -23,71 +23,10 @@ {!! view_render_event('bagisto.shop.customers.account.orders.list.before', ['orders' => $orders]) !!}
| {{ __('shop::app.customer.account.order.index.order_id') }} | -{{ __('shop::app.customer.account.order.index.date') }} | -{{ __('shop::app.customer.account.order.index.total') }} | -{{ __('shop::app.customer.account.order.index.status')}} | -||||||
|---|---|---|---|---|---|---|---|---|---|
| - - #{{ $order->id }} - - | - -{{ core()->formatDate($order->created_at, 'd M Y') }} | - -- {{ core()->formatPrice($order->grand_total, $order->order_currency_code) }} - | - -- @if($order->status == 'processing') - Processing - @elseif ($order->status == 'completed') - Completed - @elseif ($order->status == "canceled") - Canceled - @elseif ($order->status == "closed") - Closed - @elseif ($order->status == "pending") - Pending - @elseif ($order->status == "pending_payment") - Pending Payment - @elseif ($order->status == "fraud") - Fraud - @endif - | -||||||
| {{ __('admin::app.common.no-result-found') }} | -|||||||||