first upload all files
This commit is contained in:
79
Modules/Compare/Compare.php
Normal file
79
Modules/Compare/Compare.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Compare;
|
||||
|
||||
use JsonSerializable;
|
||||
use Modules\Product\Entities\Product;
|
||||
use Darryldecode\Cart\Cart as DarryldecodeCart;
|
||||
use Illuminate\Database\Eloquent\Collection as EloquentCollection;
|
||||
|
||||
class Compare extends DarryldecodeCart implements JsonSerializable
|
||||
{
|
||||
public function store($productId)
|
||||
{
|
||||
$product = Product::with('files', 'attributes.attribute')
|
||||
->with('reviews')
|
||||
->withCount('options')
|
||||
->findOrFail($productId);
|
||||
|
||||
return $this->add([
|
||||
'id' => $product->id,
|
||||
'name' => $product->name,
|
||||
'price' => $product->price->amount(),
|
||||
'quantity' => 1,
|
||||
'attributes' => compact('product'),
|
||||
]);
|
||||
}
|
||||
|
||||
public function hasAnyProduct()
|
||||
{
|
||||
return $this->products()->isNotEmpty();
|
||||
}
|
||||
|
||||
public function count()
|
||||
{
|
||||
return $this->products()->count();
|
||||
}
|
||||
|
||||
public function products()
|
||||
{
|
||||
return $this->getContent()->map(function ($item) {
|
||||
return $item->attributes->product;
|
||||
});
|
||||
}
|
||||
|
||||
public function attributes()
|
||||
{
|
||||
return $this->products()->flatMap->attributes->unique('name');
|
||||
}
|
||||
|
||||
public function relatedProducts()
|
||||
{
|
||||
return $this->products()->load(['relatedProducts' => function ($query) {
|
||||
$query->forCard();
|
||||
}])->pluck('relatedProducts')->flatten();
|
||||
}
|
||||
|
||||
public function list()
|
||||
{
|
||||
return $this->products()->pluck('id');
|
||||
}
|
||||
|
||||
public function getContent()
|
||||
{
|
||||
return new EloquentCollection($this->session->get($this->sessionKeyCartItems));
|
||||
}
|
||||
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return [
|
||||
'products' => $this->products(),
|
||||
'attributes' => $this->attributes(),
|
||||
];
|
||||
}
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
return json_encode($this->jsonSerialize());
|
||||
}
|
||||
}
|
||||
36
Modules/Compare/Config/config.php
Normal file
36
Modules/Compare/Config/config.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
/*
|
||||
* ---------------------------------------------------------------
|
||||
* formatting
|
||||
* ---------------------------------------------------------------
|
||||
*
|
||||
* the formatting of shopping cart values
|
||||
*/
|
||||
'format_numbers' => env('SHOPPING_FORMAT_VALUES', false),
|
||||
|
||||
'decimals' => env('SHOPPING_DECIMALS', 0),
|
||||
|
||||
'dec_point' => env('SHOPPING_DEC_POINT', '.'),
|
||||
|
||||
'thousands_sep' => env('SHOPPING_THOUSANDS_SEP', ','),
|
||||
|
||||
/*
|
||||
* ---------------------------------------------------------------
|
||||
* persistence
|
||||
* ---------------------------------------------------------------
|
||||
*
|
||||
* the configuration for persisting cart
|
||||
*/
|
||||
'storage' => null,
|
||||
|
||||
/*
|
||||
* ---------------------------------------------------------------
|
||||
* events
|
||||
* ---------------------------------------------------------------
|
||||
*
|
||||
* the configuration for cart events
|
||||
*/
|
||||
'events' => null,
|
||||
];
|
||||
42
Modules/Compare/Http/Controllers/CompareController.php
Normal file
42
Modules/Compare/Http/Controllers/CompareController.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Compare\Http\Controllers;
|
||||
|
||||
use Modules\Compare\Compare;
|
||||
|
||||
class CompareController
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @param \Modules\Compare\Compare $compare
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Compare $compare)
|
||||
{
|
||||
return view('public.compare.index', compact('compare'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Modules\Compare\Compare $compare
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Compare $compare)
|
||||
{
|
||||
$compare->store(request('productId'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $productId
|
||||
* @param \Modules\Compare\Compare $compare
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($productId, Compare $compare)
|
||||
{
|
||||
$compare->remove($productId);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Compare\Http\Controllers;
|
||||
|
||||
use Modules\Compare\Compare;
|
||||
|
||||
class CompareRelatedProductController
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @param \Modules\Compare\Compare $compare
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Compare $compare)
|
||||
{
|
||||
return $compare->relatedProducts();
|
||||
}
|
||||
}
|
||||
29
Modules/Compare/Providers/CompareServiceProvider.php
Normal file
29
Modules/Compare/Providers/CompareServiceProvider.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Compare\Providers;
|
||||
|
||||
use Modules\Compare\Compare;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class CompareServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->app->singleton(Compare::class, function ($app) {
|
||||
return new Compare(
|
||||
$app['session'],
|
||||
$app['events'],
|
||||
'compare',
|
||||
session()->getId() . '_compare',
|
||||
config('fleetcart.modules.compare.config')
|
||||
);
|
||||
});
|
||||
|
||||
$this->app->alias(Compare::class, 'compare');
|
||||
}
|
||||
}
|
||||
9
Modules/Compare/Routes/public.php
Normal file
9
Modules/Compare/Routes/public.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::get('compare', 'CompareController@index')->name('compare.index');
|
||||
Route::post('compare', 'CompareController@store')->name('compare.store');
|
||||
Route::delete('compare/{productId}', 'CompareController@destroy')->name('compare.destroy');
|
||||
|
||||
Route::get('compare/related-products', 'CompareRelatedProductController@index')->name('compare.related_products.index');
|
||||
28
Modules/Compare/composer.json
Normal file
28
Modules/Compare/composer.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "fleetcart/compare",
|
||||
"description": "The FleetCart Compare Module.",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Envay Soft",
|
||||
"email": "envaysoft@gmail.com"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "^8.0.2",
|
||||
"darryldecode/cart": "^4.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Modules\\Compare\\": ""
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"sort-packages": true
|
||||
},
|
||||
"minimum-stability": "dev"
|
||||
}
|
||||
9
Modules/Compare/module.json
Normal file
9
Modules/Compare/module.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Compare",
|
||||
"alias": "compare",
|
||||
"description": "The FleetCart Compare Module.",
|
||||
"priority": 100,
|
||||
"providers": [
|
||||
"Modules\\Compare\\Providers\\CompareServiceProvider"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user