enhance add to basket

This commit is contained in:
Ludovic CANDELLIER
2022-04-01 00:11:15 +02:00
parent e3c60e7cde
commit 8afb3467f8
17 changed files with 359 additions and 53 deletions

View File

@@ -14,8 +14,6 @@ class ArticleController extends Controller
{
$data = self::init();
$data['article'] = Articles::getArticleToSell($id);
// dump($data);
// exit;
return view('Shop.Articles.show', $data);
}
}

View File

@@ -0,0 +1,88 @@
<?php
namespace App\Http\Controllers\Shop\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use App\Repositories\Layout;
use App\Repositories\Languages;
use App\Repositories\Shop\Customers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('customer')->except('logout');
}
public function showLoginForm()
{
$data['url'] = route('Shop.Auth.login.post');
return view('Shop.Auth.login', $data);
}
protected function guard()
{
return Auth::guard('customer');
}
public function login(Request $request)
{
$this->validate($request, [
'username' => 'required|email',
'password' => 'required|min:6'
]);
if (Auth::guard('customer')->attempt(['username' => $request->username, 'password' => $request->password], $request->get('remember'))) {
return redirect()->intended(route('Conferencing.event'));
}
return back()->withInput($request->only('username', 'remember'));
}
public function logout(Request $request)
{
// Get the session key for this user
$sessionKey = $this->guard()->getName();
$this->guard()->logout();
// Delete single session key (just for this user)
$request->session()->forget($sessionKey);
return redirect()->route('home');
}
public function username()
{
return 'username';
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace App\Http\Controllers\Shop\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class ResetPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
/**
* Where to redirect users after resetting their password.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
public function showResetForm(Request $request, $token = null)
{
$data = $this->initHeader();
$data['token'] = $token;
$data['email'] = $request->email;
return view('Auth.passwords.reset', $data);
}
}

View File

@@ -23,21 +23,21 @@ class BasketController extends Controller
{
$offer_id = $request->input('offer_id');
$quantity = $request->input('quantity');
if (ShopCart::has($offer_id)) {
$ret = ShopCart::remove($offer_id);
}
$data = $quantity ? Offers::getBasketData($offer_id, $quantity) : false;
$ret = $data ? ShopCart::add($data) : false;
return true;
return Offers::addBasket($offer_id, $quantity);
}
public function modalBasket($offer_id, $quantity)
{
$data['offer'] = Offers::getFull($offer_id)->toArray();
$data['basket'] = Offers::addBasket($offer_id, $quantity);
return view('Shop.Baskets.partials.modalBasket', $data);
}
public function basket()
{
$data = self::init();
$data['basket'] = Offers::getBasket();
//dump($data['basket']);
// exit;
return view('Shop.Baskets.basket', $data);
}

View File

@@ -8,9 +8,15 @@ use \Cart;
class ShopCart
{
public static function add($data)
public static function add($item)
{
return self::get()->add($data);
$ret = self::get()->add($item);
return [
'count' => self::count(),
'quantity' => self::getTotalQuantity(),
'total' => self::getTotal(),
'added' => $item,
];
}
public static function remove($id)
@@ -39,6 +45,16 @@ class ShopCart
return self::getContent()->count();
}
public static function getTotalQuantity()
{
return self::get()->getTotalQuantity();
}
public static function getTotal()
{
return self::get()->getTotal();
}
public static function getContent()
{
return self::get()->getContent();

View File

@@ -98,12 +98,12 @@ class Articles
case 'App\Models\Botanic\Variety':
$variety = $article->product;
$specie = $variety->specie;
$description = empty($specie->description) ? '' : $specie->description . '<br>';
$description .= empty($variety->description) ? '' : $variety->description . '<br>';
$description = empty($specie->description) ? '' : $specie->description . '<br><br>';
$description .= empty($variety->description) ? '' : $variety->description . '<br><br>';
break;
case 'App\Models\Botanic\Specie':
$specie = $article->product;
$description = empty($specie->description) ? '' : $specie->description . '<br>';
$description = empty($specie->description) ? '' : $specie->description . '<br><br>';
break;
default:
$description = '';

View File

@@ -7,6 +7,32 @@ use App\Repositories\Core\User\ShopCart;
class Offers
{
public static function addBasket($offer_id, $quantity = 1)
{
if (ShopCart::has($offer_id)) {
$ret = ShopCart::remove($offer_id);
}
$data = $quantity ? Offers::getBasketData($offer_id, $quantity) : false;
return $data ? ShopCart::add($data) : false;
}
public static function getFull($id, $sale_channel_id = false)
{
$sale_channel_id = $sale_channel_id ? $sale_channel_id : SaleChannels::getDefaultID();
return Offer::with([
'article.article_nature',
'article.product',
'article.image',
'tariff' => function ($query) use ($sale_channel_id) {
$query->bySaleChannel($sale_channel_id);
},
'tariff.price_lists' => function ($query) use ($sale_channel_id) {
$query->BySaleChannel($sale_channel_id);
},
'tariff.price_lists.price_list_values',
'variation',
])->find($id);
}
public static function getPrice($id, $quantity = 1, $sale_channel_id = false)
{
@@ -153,5 +179,4 @@ class Offers
{
return self::update(['status_id' => $status_id], $id);
}
}