first upload all files

This commit is contained in:
NW
2023-06-11 13:14:03 +01:00
parent f14dbc52b5
commit c08b36d1b6
1705 changed files with 106852 additions and 0 deletions

View 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());
}
}

View 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,
];

View 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);
}
}

View File

@@ -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();
}
}

View 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');
}
}

View 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');

View 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"
}

View File

@@ -0,0 +1,9 @@
{
"name": "Compare",
"alias": "compare",
"description": "The FleetCart Compare Module.",
"priority": 100,
"providers": [
"Modules\\Compare\\Providers\\CompareServiceProvider"
]
}