fixes
This commit is contained in:
@@ -17,7 +17,7 @@ class CommentsDataTable extends DataTable
|
||||
|
||||
public function query(Comment $model)
|
||||
{
|
||||
$model = $model::with(['user'])->select('*');
|
||||
$model = $model::with(['commentator'])->select('*');
|
||||
|
||||
return $this->buildQuery($model);
|
||||
}
|
||||
@@ -26,7 +26,7 @@ class CommentsDataTable extends DataTable
|
||||
{
|
||||
return [
|
||||
Column::make('updated_at')->title(__('date'))->width('80')->class('text-center')->searchable(false),
|
||||
Column::make('user.name')->title(__('name'))->searchable(false),
|
||||
Column::make('commentator.name')->title(__('name'))->searchable(false),
|
||||
Column::make('comment')->title(__('comments'))->searchable(false),
|
||||
$this->makeColumnButtons(),
|
||||
];
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Datatables\Admin\Shop;
|
||||
|
||||
use App\Datatables\ParentDataTable as DataTable;
|
||||
use App\Models\Shop\CustomerAddress;
|
||||
use App\Repositories\Shop\CustomerAddresses;
|
||||
use Yajra\DataTables\Html\Column;
|
||||
|
||||
class CustomerAddressesDataTable extends DataTable
|
||||
@@ -29,10 +30,20 @@ class CustomerAddressesDataTable extends DataTable
|
||||
return $customerId ? $model->byCustomer($customerId) : $model;
|
||||
}
|
||||
|
||||
public function modifier($datatables)
|
||||
{
|
||||
$datatables->editColumn('type', function (CustomerAddress $address) {
|
||||
return CustomerAddresses::getIconByType($address->type);
|
||||
})->rawColumns(['type', 'action']);
|
||||
|
||||
return parent::modifier($datatables);
|
||||
}
|
||||
|
||||
|
||||
protected function getColumns()
|
||||
{
|
||||
return [
|
||||
Column::make('type')->title('')->width(30),
|
||||
Column::make('address')->title('Adresse'),
|
||||
Column::make('zipcode')->title('Code postal'),
|
||||
Column::make('city')->title('Ville'),
|
||||
|
||||
80
app/Datatables/Admin/Shop/CustomerInvoicesDataTable.php
Normal file
80
app/Datatables/Admin/Shop/CustomerInvoicesDataTable.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace App\Datatables\Admin\Shop;
|
||||
|
||||
use App\Datatables\ParentDataTable as DataTable;
|
||||
use App\Models\Shop\Invoice;
|
||||
use App\Repositories\Shop\Customers;
|
||||
use App\Repositories\Shop\InvoicePayments;
|
||||
use App\Repositories\Shop\Invoices;
|
||||
use Yajra\DataTables\Html\Column;
|
||||
|
||||
class CustomerInvoicesDataTable extends DataTable
|
||||
{
|
||||
public $model_name = 'invoices';
|
||||
|
||||
public $sortedColumn = 1;
|
||||
|
||||
public $sortedOrder = 'desc';
|
||||
|
||||
public $stateSave = true;
|
||||
|
||||
public $url = null;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->url = route('Shop.Invoices.index');
|
||||
}
|
||||
|
||||
public function query(Invoice $model)
|
||||
{
|
||||
$customerId = Customers::getId();
|
||||
$model = $model->byCustomer($customerId)->with(['address']);
|
||||
|
||||
return $this->buildQuery($model);
|
||||
}
|
||||
|
||||
public function getHtmlButtons()
|
||||
{
|
||||
$buttons = view('components.form.button', [
|
||||
'dataId' => '{{$uuid}}',
|
||||
'class' => 'btn-sm btn-secondary btn-invoice mr-2',
|
||||
'icon' => 'fa-file-pdf',
|
||||
'title' => 'Télécharger la facture',
|
||||
'url' => route('Shop.Invoices.pdf').'/{{$uuid}}',
|
||||
]);
|
||||
|
||||
$buttons .= self::getButtonShow('uuid', 'Voir la facture');
|
||||
|
||||
return $buttons;
|
||||
}
|
||||
|
||||
public function modifier($datatables)
|
||||
{
|
||||
$datatables
|
||||
->editColumn('status', function (Invoice $invoice) {
|
||||
return Invoices::getStatus($invoice->status);
|
||||
})
|
||||
->editColumn('created_at', function (Invoice $invoice) {
|
||||
return $invoice->created_at->isoFormat('DD/MM/YY HH:mm');
|
||||
})
|
||||
->editColumn('payment_type', function (Invoice $invoice) {
|
||||
return InvoicePayments::getPaymentType($invoice->payment_type);
|
||||
})
|
||||
->rawColumns(['action']);
|
||||
|
||||
return parent::modifier($datatables);
|
||||
}
|
||||
|
||||
protected function getColumns()
|
||||
{
|
||||
return [
|
||||
Column::make('created_at')->title('Date'),
|
||||
Column::make('ref')->title('Ref'),
|
||||
Column::make('payment_type')->title('Règlement'),
|
||||
Column::make('total_shipped')->title('Montant')->class('text-right'),
|
||||
Column::make('status')->title('Statut'),
|
||||
$this->makeColumnButtons(),
|
||||
];
|
||||
}
|
||||
}
|
||||
69
app/Datatables/Admin/Shop/CustomerOrdersDataTable.php
Normal file
69
app/Datatables/Admin/Shop/CustomerOrdersDataTable.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace App\Datatables\Admin\Shop;
|
||||
|
||||
use App\Datatables\ParentDataTable as DataTable;
|
||||
use App\Models\Shop\Order;
|
||||
use App\Repositories\Shop\Customers;
|
||||
use App\Repositories\Shop\Orders;
|
||||
use Yajra\DataTables\Html\Column;
|
||||
|
||||
class CustomerOrdersDataTable extends DataTable
|
||||
{
|
||||
public $model_name = 'orders';
|
||||
|
||||
public $sortedColumn = 1;
|
||||
|
||||
public $sortedOrder = 'desc';
|
||||
|
||||
public $stateSave = true;
|
||||
|
||||
public $url = null;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->url = route('Shop.Orders.index');
|
||||
}
|
||||
|
||||
public function query(Order $model)
|
||||
{
|
||||
$customerId = Customers::getId();
|
||||
$model = $model->byCustomer($customerId);
|
||||
|
||||
return $this->buildQuery($model);
|
||||
}
|
||||
|
||||
public function getHtmlButtons()
|
||||
{
|
||||
$buttons = '';
|
||||
|
||||
$buttons .= self::getButtonShow('uuid', 'Voir la facture');
|
||||
|
||||
return $buttons;
|
||||
}
|
||||
|
||||
public function modifier($datatables)
|
||||
{
|
||||
$datatables
|
||||
->editColumn('status', function (Order $order) {
|
||||
return Orders::getStatus($order->status);
|
||||
})
|
||||
->editColumn('created_at', function (Order $order) {
|
||||
return $order->created_at->isoFormat('DD/MM/YY HH:mm');
|
||||
})
|
||||
->rawColumns(['action']);
|
||||
|
||||
return parent::modifier($datatables);
|
||||
}
|
||||
|
||||
protected function getColumns()
|
||||
{
|
||||
return [
|
||||
Column::make('created_at')->title('Date'),
|
||||
Column::make('ref')->title('Ref'),
|
||||
Column::make('total_shipped')->title('Montant')->class('text-right'),
|
||||
Column::make('status')->title('Statut'),
|
||||
$this->makeColumnButtons(),
|
||||
];
|
||||
}
|
||||
}
|
||||
36
app/Datatables/Admin/Shop/PriceListValuesDataTable.php
Normal file
36
app/Datatables/Admin/Shop/PriceListValuesDataTable.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Datatables\Admin\Shop;
|
||||
|
||||
use App\Datatables\ParentDataTable as DataTable;
|
||||
use App\Models\Shop\PriceListValue;
|
||||
use Yajra\DataTables\Html\Column;
|
||||
|
||||
class PriceListValuesDataTable extends DataTable
|
||||
{
|
||||
public $model_name = 'price_list_values';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->url = route('Admin.Shop.PriceListValues.index');
|
||||
}
|
||||
|
||||
public function query(PriceListValue $model)
|
||||
{
|
||||
$model = $model->with(['price_list']);
|
||||
|
||||
return $this->buildQuery($model);
|
||||
}
|
||||
|
||||
protected function getColumns()
|
||||
{
|
||||
return [
|
||||
Column::make('price_list.name')->data('price_list')->title('etat'),
|
||||
Column::make('code')->title('Code'),
|
||||
Column::make('quantity')->title('Quantité'),
|
||||
Column::make('price')->title('Prix HT'),
|
||||
Column::make('price_taxed')->title('Prix TTC'),
|
||||
$this->makeColumnButtons(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -31,14 +31,18 @@ class CustomerAddressController extends Controller
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$data['customer'] = CustomerAddresses::get($id);
|
||||
$data = [
|
||||
'customer' => CustomerAddresses::get($id),
|
||||
];
|
||||
|
||||
return view('Admin.Shop.CustomerAddresses.view', $data);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$data['customer'] = CustomerAddresses::edit($id);
|
||||
$data = [
|
||||
'customer' => CustomerAddresses::edit($id),
|
||||
];
|
||||
|
||||
return view('Admin.Shop.CustomerAddresses.edit', $data);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
namespace App\Http\Controllers\Admin\Shop;
|
||||
|
||||
use App\Datatables\Admin\Shop\CustomerAddressesDataTable;
|
||||
use App\Datatables\Admin\Shop\CustomerInvoicesDataTable;
|
||||
use App\Datatables\Admin\Shop\CustomerOrdersDataTable;
|
||||
use App\Datatables\Admin\Shop\CustomersDataTable;
|
||||
use App\Repositories\Shop\Customers;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -32,17 +34,21 @@ class CustomerController extends Controller
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$data['customer'] = Customers::get($id);
|
||||
$data = [
|
||||
'customer' => Customers::get($id),
|
||||
];
|
||||
|
||||
return view('Admin.Shop.Customers.view', $data);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$data = Customers::init();
|
||||
$data['customer'] = Customers::edit($id);
|
||||
$model = new CustomerAddressesDataTable();
|
||||
$data['customer_addresses'] = $model->html();
|
||||
$data = Customers::init() + [
|
||||
'customer' => Customers::edit($id),
|
||||
'customer_addresses' => (new CustomerAddressesDataTable())->html(),
|
||||
'customer_invoices' => (new CustomerInvoicesDataTable())->html(),
|
||||
'customer_orders' => (new CustomerOrdersDataTable())->html(),
|
||||
];
|
||||
|
||||
return view('Admin.Shop.Customers.edit', $data);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Shop;
|
||||
|
||||
use App\Datatables\Admin\Shop\CustomerInvoicesDataTable;
|
||||
use App\Repositories\Shop\Invoices;
|
||||
|
||||
class CustomerInvoiceController extends Controller
|
||||
{
|
||||
public function index(CustomerInvoicesDataTable $dataTable)
|
||||
{
|
||||
return $dataTable->render('Admin.Shop.CustomerInvoices.list');
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$data = [
|
||||
'invoice' => Invoices::get($id),
|
||||
];
|
||||
|
||||
return view('Admin.Shop.CustomerInvoices.view', $data);
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
return Invoices::destroy($id);
|
||||
}
|
||||
}
|
||||
28
app/Http/Controllers/Admin/Shop/CustomerOrderController.php
Normal file
28
app/Http/Controllers/Admin/Shop/CustomerOrderController.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Shop;
|
||||
|
||||
use App\Datatables\Admin\Shop\CustomerOrdersDataTable;
|
||||
use App\Repositories\Shop\Orders;
|
||||
|
||||
class CustomerOrderController extends Controller
|
||||
{
|
||||
public function index(CustomerOrdersDataTable $dataTable)
|
||||
{
|
||||
return $dataTable->render('Admin.Shop.CustomerOrders.list');
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$data = [
|
||||
'order' => Orders::get($id),
|
||||
];
|
||||
|
||||
return view('Admin.Shop.CustomerOrders.view', $data);
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
return Orders::destroy($id);
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,9 @@
|
||||
|
||||
namespace App\Http\Controllers\Admin\Shop;
|
||||
|
||||
use App\Datatables\Shop\PriceListValuesDataTable;
|
||||
use App\Datatables\Admin\Shop\PriceListValuesDataTable;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Repositories\Shop\Packages;
|
||||
use App\Repositories\Shop\PriceListValueCategories;
|
||||
use App\Repositories\Shop\PriceListValues;
|
||||
use App\Repositories\Shop\Taxes;
|
||||
use App\Repositories\Shop\Unities;
|
||||
@@ -15,27 +14,31 @@ class PriceListValueController extends Controller
|
||||
{
|
||||
public function index(PriceListValuesDataTable $dataTable)
|
||||
{
|
||||
$data['categories'] = PriceListValueCategories::getOptions();
|
||||
|
||||
return $dataTable->render('Admin.Shop.PriceListValues.list', $data);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$data['unities'] = Unities::getOptions();
|
||||
$data['taxes_options'] = Taxes::getOptions();
|
||||
$data['categories'] = PriceListValueCategories::getOptions();
|
||||
$data = [
|
||||
'unities' => Unities::getOptions(),
|
||||
'taxes_options' => Taxes::getOptions(),
|
||||
];
|
||||
|
||||
return view('Admin.Shop.PriceListValues.create', $data);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$data['generic'] = PriceListValues::getFull($id)->toArray();
|
||||
$data['packages'] = Packages::getSelectByFamily($data['generic']['category']['article_family_id']);
|
||||
$data['unities'] = ($data['packages']['id'] ?? false) ? Unities::getSelectByPackage($data['packages']['id']) : [];
|
||||
$data['taxes_options'] = Taxes::getOptions();
|
||||
$data['categories'] = PriceListValueCategories::getOptions();
|
||||
$priceListValue = PriceListValues::getFull($id)->toArray();
|
||||
$familyId = $priceListValue['category']['article_family_id'];
|
||||
// $packages = Packages::getSelectByFamily($familyId);
|
||||
$data = [
|
||||
'generic' => $priceListValue,
|
||||
'packages' => $packages,
|
||||
'unities' => $packages['id'] ?? false ? Unities::getSelectByPackage($packages['id']) : [],
|
||||
'taxes_options' => Taxes::getOptions(),
|
||||
'categories' => PriceListValueCategories::getOptions(),
|
||||
];
|
||||
|
||||
return view('Admin.Shop.PriceListValues.edit', $data);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Shop\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Shop\RegisterCustomer;
|
||||
use App\Repositories\Shop\CustomerSaleChannels;
|
||||
use App\Repositories\Shop\CustomerAddresses;
|
||||
use App\Repositories\Shop\Customers;
|
||||
use Illuminate\Foundation\Auth\EmailVerificationRequest;
|
||||
@@ -63,10 +64,11 @@ class RegisterController extends Controller
|
||||
|
||||
protected function create(array $data)
|
||||
{
|
||||
$user = Customers::create($data);
|
||||
CustomerAddresses::add($user->id, $data);
|
||||
$customer = Customers::create($data);
|
||||
CustomerAddresses::createByCustomer($customer->id, $data);
|
||||
CustomerSaleChannels::createByCustomer($customer->id);
|
||||
|
||||
return $user;
|
||||
return $customer;
|
||||
}
|
||||
|
||||
protected function guard()
|
||||
|
||||
@@ -42,8 +42,8 @@ class ConfirmationCommande extends TemplateMailable
|
||||
|
||||
public function __construct($order)
|
||||
{
|
||||
$facturation_address = $order->invoice->address ? $order->invoice->address : $customer;
|
||||
$delivery_address = $order->delivery_address ? $order->delivery_address : $customer;
|
||||
$facturation_address = $order->invoice->address;
|
||||
$delivery_address = $order->delivery_address;
|
||||
$this->prenom = $order->customer->first_name;
|
||||
$this->nom = $order->customer->last_name;
|
||||
$this->facturation_adresse = $facturation_address->address;
|
||||
|
||||
@@ -3,7 +3,10 @@
|
||||
namespace App\Models\Shop;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Znck\Eloquent\Relations\BelongsToThrough as RelationsBelongsToThrough;
|
||||
use Znck\Eloquent\Traits\BelongsToThrough;
|
||||
|
||||
class Unity extends Model
|
||||
@@ -14,14 +17,28 @@ class Unity extends Model
|
||||
|
||||
protected $table = 'shop_unities';
|
||||
|
||||
public function package()
|
||||
public function package(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Package::class);
|
||||
}
|
||||
|
||||
public function article_family()
|
||||
public function variations(): HasMany
|
||||
{
|
||||
return $this->belongsToThrough(ArticleNature::class, Package::class, null, '', ['App\Models\Shop\ArticleNature' => 'article_family_id', 'App\Models\Shop\Package' => 'package_id']);
|
||||
return $this->hasMany(Variation::class);
|
||||
}
|
||||
|
||||
public function article_family(): RelationsBelongsToThrough
|
||||
{
|
||||
return $this->belongsToThrough(
|
||||
ArticleNature::class,
|
||||
Package::class,
|
||||
null,
|
||||
'',
|
||||
[
|
||||
'App\Models\Shop\ArticleNature' => 'article_family_id',
|
||||
'App\Models\Shop\Package' => 'package_id'
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function scopeByPackage($query, $id)
|
||||
|
||||
@@ -30,8 +30,13 @@ class Variation extends Model
|
||||
return $this->hasMany(Offer::class);
|
||||
}
|
||||
|
||||
public function scopeByPackage($query, $package_id)
|
||||
public function scopeByPackage($query, $packageId)
|
||||
{
|
||||
return $query->where($this->table.'.package_id', $package_id);
|
||||
return $query->where($this->table . '.package_id', $packageId);
|
||||
}
|
||||
|
||||
public function scopeByUnity($query, $unityId)
|
||||
{
|
||||
return $query->where($this->table . '.unity_id', $unityId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,22 +2,20 @@
|
||||
|
||||
namespace App\Repositories\Core\Auth;
|
||||
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\Rules\Password;
|
||||
|
||||
class Passwords
|
||||
{
|
||||
public static function validator()
|
||||
public static function validator($request)
|
||||
{
|
||||
$validator = new \Password\Validator(new \Password\StringHelper());
|
||||
$validator->setMinLength(5);
|
||||
$validator->setMinLowerCaseLetters(2);
|
||||
$validator->setMinUpperCaseLetters(1);
|
||||
$validator->setMinNumbers(1);
|
||||
$validator->setMinSymbols(3);
|
||||
return Validator::make($request->all(), [
|
||||
'password' => ['required', 'confirmed', self::rules()],
|
||||
]);
|
||||
}
|
||||
|
||||
if ($validator->isValid($password)) {
|
||||
printf('password %s is valid'.PHP_EOL, $password);
|
||||
} else {
|
||||
printf('password %s is invalid'.PHP_EOL, $password);
|
||||
var_dump($validator->getErrors());
|
||||
}
|
||||
public static function rules()
|
||||
{
|
||||
return Password::min(10)->mixedCase()->numbers()->symbols()->uncompromised();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,8 +41,6 @@ class Teams
|
||||
|
||||
public static function delete($id)
|
||||
{
|
||||
Users::destroyByUniqueTeam($id);
|
||||
|
||||
return Team::destroy($id);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,28 +3,22 @@
|
||||
namespace App\Repositories\Core;
|
||||
|
||||
use App\Datatables\Admin\Core\CommentsDataTable;
|
||||
use App\Models\Core\Comment as rawComment;
|
||||
use App\Models\Core\Comment;
|
||||
use App\Repositories\Core\Auth\Users;
|
||||
use App\Traits\Model\Basic;
|
||||
|
||||
class Comments
|
||||
{
|
||||
public static function get($id)
|
||||
{
|
||||
return rawComment::find($id);
|
||||
}
|
||||
use Basic;
|
||||
|
||||
public static function getDatatable()
|
||||
{
|
||||
$model = new CommentsDataTable();
|
||||
|
||||
return $model->html();
|
||||
return (new CommentsDataTable())->html();
|
||||
}
|
||||
|
||||
public static function getCommentsByModel($model, $model_id)
|
||||
{
|
||||
$class = self::getClass($model);
|
||||
|
||||
return self::getCommentsByClass($class, $model_id);
|
||||
return self::getCommentsByClass(self::getClass($model), $model_id);
|
||||
}
|
||||
|
||||
public static function getCommentsByClass($class, $id)
|
||||
@@ -32,7 +26,7 @@ class Comments
|
||||
return self::getByModel(self::getModel($class, $id));
|
||||
}
|
||||
|
||||
public static function getModel($class, $id)
|
||||
public static function getItem($class, $id)
|
||||
{
|
||||
return $class::find($id);
|
||||
}
|
||||
@@ -75,25 +69,11 @@ class Comments
|
||||
$data['is_approved'] = true;
|
||||
$data['user_id'] = Users::getId();
|
||||
|
||||
return rawComment::create($data);
|
||||
return Comment::create($data);
|
||||
}
|
||||
|
||||
public static function update($data, $id = false)
|
||||
public static function getModel()
|
||||
{
|
||||
$id = $id ? $id : $data['id'];
|
||||
$model = self::get($id);
|
||||
$model->update($data);
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
public static function deleteComments($model)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function deleteComment($model, $index)
|
||||
{
|
||||
return true;
|
||||
return Comment::query();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,23 +4,22 @@ namespace App\Repositories\Shop;
|
||||
|
||||
use App\Repositories\Botanic\Species;
|
||||
use App\Repositories\Botanic\Varieties;
|
||||
use App\Traits\Model\Basic;
|
||||
use App\Traits\Repository\Imageable;
|
||||
|
||||
class ArticleImages
|
||||
{
|
||||
use Basic, Imageable;
|
||||
use Imageable;
|
||||
|
||||
public static function getFullImagesByArticleId($id)
|
||||
{
|
||||
$article = self::get($id);
|
||||
$article = Articles::get($id);
|
||||
|
||||
return $article ? self::getFullImagesByArticle($article) : false;
|
||||
}
|
||||
|
||||
public static function countFullImagesByArticleId($id)
|
||||
{
|
||||
$article = self::get($id);
|
||||
$article = Articles::get($id);
|
||||
|
||||
return $article ? self::countFullImagesByArticle($article) : 0;
|
||||
}
|
||||
|
||||
@@ -9,67 +9,6 @@ class CustomerAddresses
|
||||
{
|
||||
use Basic;
|
||||
|
||||
public static function add($userId, $data)
|
||||
{
|
||||
self::addDeliveryAddress($userId, $data);
|
||||
self::addInvoiceAddress($userId, $data);
|
||||
}
|
||||
|
||||
public static function addDeliveryAddress($userId, $data)
|
||||
{
|
||||
$name = $data['company'] ? $data['company'] : $data['first_name'].' '.$data['last_name'];
|
||||
$delivery = $data['use_for_delivery'] ?? false;
|
||||
|
||||
$data = [
|
||||
'customer_id' => $userId,
|
||||
'type' => 2,
|
||||
'name' => $name,
|
||||
'address' => $delivery ? $data['delivery_address'] : $data['address'],
|
||||
'address2' => $delivery ? $data['delivery_address2'] : $data['address2'],
|
||||
'zipcode' => $delivery ? $data['delivery_zipcode'] : $data['zipcode'],
|
||||
'city' => $delivery ? $data['delivery_city'] : $data['city'],
|
||||
];
|
||||
|
||||
return self::store($data);
|
||||
}
|
||||
|
||||
public static function addInvoiceAddress($userId, $data)
|
||||
{
|
||||
$name = $data['company'] ? $data['company'] : $data['first_name'].' '.$data['last_name'];
|
||||
|
||||
$data = [
|
||||
'customer_id' => $userId,
|
||||
'type' => 1,
|
||||
'name' => $name,
|
||||
'address' => $data['address'],
|
||||
'address2' => $data['address2'],
|
||||
'zipcode' => $data['zipcode'],
|
||||
'city' => $data['city'],
|
||||
];
|
||||
|
||||
return self::store($data);
|
||||
}
|
||||
|
||||
public static function getInvoiceAddress($customerId)
|
||||
{
|
||||
$addresses = CustomerAddress::byCustomer($customerId)->byInvoicing()->get();
|
||||
if (count($addresses)) {
|
||||
$address = $addresses->first();
|
||||
}
|
||||
|
||||
return $address;
|
||||
}
|
||||
|
||||
public static function getDeliveryAddress($customerId)
|
||||
{
|
||||
$addresses = CustomerAddress::byCustomer($customerId)->byDelivery()->get();
|
||||
if (count($addresses)) {
|
||||
$address = $addresses->first();
|
||||
}
|
||||
|
||||
return $address;
|
||||
}
|
||||
|
||||
public static function storeByCustomer($customer, $data)
|
||||
{
|
||||
$deliveries = $data['deliveries'] ?? false;
|
||||
@@ -87,6 +26,72 @@ class CustomerAddresses
|
||||
}
|
||||
}
|
||||
|
||||
public static function createByCustomer($customerId, $data)
|
||||
{
|
||||
self::addDeliveryAddress($customerId, $data);
|
||||
self::addInvoiceAddress($customerId, $data);
|
||||
}
|
||||
|
||||
public static function addDeliveryAddress($customerId, $data)
|
||||
{
|
||||
$delivery = $data['use_for_delivery'] ?? false;
|
||||
$data = array_merge($data, [
|
||||
'address' => $delivery ? $data['delivery_address'] : $data['address'],
|
||||
'address2' => $delivery ? $data['delivery_address2'] : $data['address2'],
|
||||
'zipcode' => $delivery ? $data['delivery_zipcode'] : $data['zipcode'],
|
||||
'city' => $delivery ? $data['delivery_city'] : $data['city'],
|
||||
]);
|
||||
|
||||
return self::addAddress($customerId, $data, 2);
|
||||
}
|
||||
|
||||
public static function addInvoiceAddress($customerId, $data)
|
||||
{
|
||||
return self::addAddress($customerId, $data, 1);
|
||||
|
||||
}
|
||||
|
||||
public static function addAddress($customerId, $data, $type)
|
||||
{
|
||||
$name = $data['company'] ? $data['company'] : $data['first_name'] . ' ' . $data['last_name'];
|
||||
|
||||
$data = [
|
||||
'customer_id' => $customerId,
|
||||
'type' => $type,
|
||||
'name' => $name,
|
||||
'address' => $data['address'],
|
||||
'address2' => $data['address2'],
|
||||
'zipcode' => $data['zipcode'],
|
||||
'city' => $data['city'],
|
||||
];
|
||||
|
||||
return self::store($data);
|
||||
}
|
||||
|
||||
public static function getInvoiceAddress($customerId)
|
||||
{
|
||||
$addresses = CustomerAddress::byCustomer($customerId)->byInvoicing()->get();
|
||||
return count($addresses) ? $addresses->first() : self::getByCustomer($customerId);
|
||||
}
|
||||
|
||||
public static function getDeliveryAddress($customerId)
|
||||
{
|
||||
$addresses = CustomerAddress::byCustomer($customerId)->byDelivery()->get();
|
||||
return count($addresses) ? $addresses->first() : self::getByCustomer($customerId);
|
||||
}
|
||||
|
||||
public static function getByCustomer($customerId = false)
|
||||
{
|
||||
$customer = Customers::get($customerId);
|
||||
|
||||
return $customer ? $customer->only(['address', 'adress2', 'zipcode', 'city']) : false;
|
||||
}
|
||||
|
||||
public static function getIconByType($type)
|
||||
{
|
||||
return ((int) $type === 1) ? '<i class="fa fa-fw fa-truck"></i>' : '<i class="fa fa-fw fa-file-invoice"></i>';
|
||||
}
|
||||
|
||||
public static function toggleActive($id, $active)
|
||||
{
|
||||
return self::update(['active' => $active], $id);
|
||||
|
||||
73
app/Repositories/Shop/CustomerAvatars.php
Normal file
73
app/Repositories/Shop/CustomerAvatars.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repositories\Shop;
|
||||
|
||||
use App\Repositories\Core\File;
|
||||
use Laravolt\Avatar\Avatar;
|
||||
|
||||
class CustomerAvatars
|
||||
{
|
||||
public static function getImg($id = false)
|
||||
{
|
||||
$avatar = self::getAvatar($id);
|
||||
$name = Customers::getName($id);
|
||||
|
||||
return "<img src='{$avatar}' class='img-fluid' title='{$name}'>";
|
||||
}
|
||||
|
||||
public static function getAvatar($id = false)
|
||||
{
|
||||
$customer = $id ? Customers::get($id) : Customers::getAuth();
|
||||
$file = self::makeAvatarFilename($customer);
|
||||
if (!File::checkFile($file)) {
|
||||
self::createAvatar($customer);
|
||||
}
|
||||
|
||||
return self::getPublic(self::getAvatarFilename($customer));
|
||||
}
|
||||
|
||||
public static function createAvatar($customer)
|
||||
{
|
||||
$filename = self::makeAvatarFilename($customer);
|
||||
$name = $customer->first_name . ' ' . $customer->last_name;
|
||||
$avatar = new Avatar();
|
||||
|
||||
return $avatar->create($name)
|
||||
->setBackground('#F2B90F')
|
||||
->setForeground('#335012')
|
||||
->setBorder(1, '#28a745')
|
||||
->setFontFamily('Roboto Condensed')
|
||||
->setDimension(36)
|
||||
->setFontSize(16)
|
||||
->save($filename);
|
||||
}
|
||||
|
||||
public static function makeAvatarFilename($customer)
|
||||
{
|
||||
$path = storage_path(self::getStorage());
|
||||
if (File::checkDirOrCreate($path)) {
|
||||
$filename = $path . self::getAvatarFilename($customer);
|
||||
}
|
||||
|
||||
return $filename ?? false;
|
||||
}
|
||||
|
||||
public static function getAvatarFilename($customer)
|
||||
{
|
||||
return 'user-' . $customer->uuid . '.png';
|
||||
}
|
||||
|
||||
public static function getStorage($filename = false)
|
||||
{
|
||||
$path = '/app/public/Customers/';
|
||||
|
||||
return $filename ? $path . $filename : $path;
|
||||
}
|
||||
|
||||
public static function getPublic($filename = false)
|
||||
{
|
||||
$path = '/storage/Customers/';
|
||||
|
||||
return $filename ? $path . $filename : $path;
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,13 @@ class CustomerSaleChannels
|
||||
{
|
||||
use Basic;
|
||||
|
||||
public static function createByCustomer($customerId)
|
||||
{
|
||||
$customer = Customers::get($customerId);
|
||||
|
||||
return $customer->sale_channels()->sync(SaleChannels::getDefault());
|
||||
}
|
||||
|
||||
public static function destroyByCustomerAndSaleChannel($customerId, $saleChannelId)
|
||||
{
|
||||
return CustomerSaleChannel::byCustomer($customerId)->bySaleChannel($saleChannelId)->delete();
|
||||
|
||||
@@ -5,11 +5,9 @@ namespace App\Repositories\Shop;
|
||||
use App\Datatables\Shop\CustomerInvoicesDataTable;
|
||||
use App\Datatables\Shop\CustomerOrdersDataTable;
|
||||
use App\Models\Shop\Customer;
|
||||
use App\Repositories\Core\File;
|
||||
use App\Traits\Model\Basic;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravolt\Avatar\Avatar;
|
||||
|
||||
class Customers
|
||||
{
|
||||
@@ -32,20 +30,24 @@ class Customers
|
||||
public static function getSaleChannels($customerId = false)
|
||||
{
|
||||
$customer = $customerId ? self::get($customerId) : self::getAuth();
|
||||
$saleChannels = $customer ? $customer->sale_channels : false;
|
||||
|
||||
return $customer ? $customer->sale_channels : SaleChannels::getDefault();
|
||||
return $saleChannels ? $saleChannels : SaleChannels::getDefault();
|
||||
}
|
||||
|
||||
public static function getSaleChannel()
|
||||
public static function getSaleChannel($customerId = false)
|
||||
{
|
||||
return SaleChannels::getDefault();
|
||||
$saleChannels = self::getSaleChannels($customerId);
|
||||
|
||||
return $saleChannels->first();
|
||||
}
|
||||
|
||||
public static function getDeliveries()
|
||||
{
|
||||
$customer = self::getAuth();
|
||||
$deliveries = $customer ? $customer->deliveries : false;
|
||||
|
||||
return $customer ? $customer->deliveries : Deliveries::getDefault();
|
||||
return $deliveries ? $deliveries : [Deliveries::getDefault()];
|
||||
}
|
||||
|
||||
public static function getOptions()
|
||||
@@ -63,48 +65,6 @@ class Customers
|
||||
] : abort('403');
|
||||
}
|
||||
|
||||
public static function getAvatar($id = false)
|
||||
{
|
||||
$customer = $id ? self::get($id) : self::getAuth();
|
||||
$file = self::makeAvatarFilename($customer);
|
||||
if (!File::checkFile($file)) {
|
||||
self::createAvatar($customer);
|
||||
}
|
||||
|
||||
return self::getPublic(self::getAvatarFilename($customer));
|
||||
}
|
||||
|
||||
public static function createAvatar($customer)
|
||||
{
|
||||
$filename = self::makeAvatarFilename($customer);
|
||||
$name = $customer->first_name . ' ' . $customer->last_name;
|
||||
$avatar = new Avatar();
|
||||
|
||||
return $avatar->create($name)
|
||||
->setBackground('#F2B90F')
|
||||
->setForeground('#335012')
|
||||
->setBorder(1, '#28a745')
|
||||
->setFontFamily('Roboto Condensed')
|
||||
->setDimension(36)
|
||||
->setFontSize(16)
|
||||
->save($filename);
|
||||
}
|
||||
|
||||
public static function makeAvatarFilename($customer)
|
||||
{
|
||||
$path = storage_path(self::getStorage());
|
||||
if (File::checkDirOrCreate($path)) {
|
||||
$filename = $path . self::getAvatarFilename($customer);
|
||||
}
|
||||
|
||||
return $filename ?? false;
|
||||
}
|
||||
|
||||
public static function getAvatarFilename($customer)
|
||||
{
|
||||
return 'user-' . $customer->uuid . '.png';
|
||||
}
|
||||
|
||||
public static function getAddresses($id = false)
|
||||
{
|
||||
$customer = self::getWithAddresses($id);
|
||||
@@ -126,26 +86,6 @@ class Customers
|
||||
return $user ? $user->name : '';
|
||||
}
|
||||
|
||||
public static function getAuth()
|
||||
{
|
||||
return self::guard()->user();
|
||||
}
|
||||
|
||||
public static function getId()
|
||||
{
|
||||
return self::guard()->id();
|
||||
}
|
||||
|
||||
public static function isNotConnected()
|
||||
{
|
||||
return !self::isConnected();
|
||||
}
|
||||
|
||||
public static function isConnected()
|
||||
{
|
||||
return self::guard()->check();
|
||||
}
|
||||
|
||||
public static function edit($id)
|
||||
{
|
||||
if (!$id) {
|
||||
@@ -178,14 +118,9 @@ class Customers
|
||||
return $customer->id;
|
||||
}
|
||||
|
||||
public static function storeDeliveries($customer, $deliveries)
|
||||
public static function storeDeliveries($customerId, $deliveries)
|
||||
{
|
||||
if (!$deliveries) {
|
||||
return false;
|
||||
}
|
||||
$deliveries = collect($deliveries)->transform(function ($item) {
|
||||
return (int) $item;
|
||||
})->toArray();
|
||||
$customer = self::get($customerId);
|
||||
|
||||
return $customer->deliveries()->sync($deliveries);
|
||||
}
|
||||
@@ -200,18 +135,9 @@ class Customers
|
||||
|
||||
public static function storeSaleChannels($customerId, $saleChannels)
|
||||
{
|
||||
$oldSaleChannels = self::getSaleChannelIds($customerId);
|
||||
$deleteSaleChannels = array_diff($oldSaleChannels, $saleChannels);
|
||||
$newSaleChannels = array_diff($saleChannels, $oldSaleChannels);
|
||||
$customer = self::get($customerId);
|
||||
|
||||
$data = ['customer_id' => $customerId];
|
||||
foreach ($newSaleChannels as $saleChannelId) {
|
||||
$data['sale_channel_id'] = $saleChannelId;
|
||||
CustomerSaleChannels::store($data);
|
||||
}
|
||||
foreach ($deleteSaleChannels as $saleChannelId) {
|
||||
CustomerSaleChannels::destroyByCustomerAndSaleChannel($customerId, $saleChannelId);
|
||||
}
|
||||
return $customer->sale_channels()->sync($saleChannels);
|
||||
}
|
||||
|
||||
public static function create($data)
|
||||
@@ -223,18 +149,24 @@ class Customers
|
||||
return Customer::create($data);
|
||||
}
|
||||
|
||||
public static function getStorage($filename = false)
|
||||
public static function getAuth()
|
||||
{
|
||||
$path = '/app/public/Customers/';
|
||||
|
||||
return $filename ? $path . $filename : $path;
|
||||
return self::guard()->user();
|
||||
}
|
||||
|
||||
public static function getPublic($filename = false)
|
||||
public static function getId()
|
||||
{
|
||||
$path = '/storage/Customers/';
|
||||
return self::guard()->id();
|
||||
}
|
||||
|
||||
return $filename ? $path . $filename : $path;
|
||||
public static function isNotConnected()
|
||||
{
|
||||
return !self::isConnected();
|
||||
}
|
||||
|
||||
public static function isConnected()
|
||||
{
|
||||
return self::guard()->check();
|
||||
}
|
||||
|
||||
public static function guard()
|
||||
|
||||
@@ -19,7 +19,7 @@ class Deliveries
|
||||
public static function getByCustomer($customerId = false)
|
||||
{
|
||||
$customer = $customerId ? Customers::get($customerId) : Customers::getAuth();
|
||||
$saleChannels = $customer ? $customer->sale_channels->pluck('id')->toArray() : false;
|
||||
$saleChannels = $customer ? $customer->sale_channels->pluck('id')->toArray() : [SaleChannels::getDefaultID()];
|
||||
|
||||
return $saleChannels ? self::getBySaleChannels($saleChannels) : false;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('shop.customers.title'),
|
||||
'subtitle' => __('shop.customers.edit'),
|
||||
'breadcrumb' => [__('shop.customers.title')]
|
||||
'title' => __('shop.customer_addresses.title'),
|
||||
'subtitle' => __('shop.customer_addresses.edit'),
|
||||
'breadcrumb' => [__('shop.customer_addresses.title')],
|
||||
])
|
||||
|
||||
@section('content')
|
||||
|
||||
{{ Form::open(['route' => 'Admin.Shop.Customers.store', 'id' => 'customer-form', 'autocomplete' => 'off']) }}
|
||||
<input type="hidden" name="id" value="{{ $customer['id'] }}">
|
||||
@include('Admin.Shop.Customers.form')
|
||||
{{ Form::open(['route' => 'Admin.Shop.CustomerAddresses.store', 'id' => 'customer_address-form', 'autocomplete' => 'off']) }}
|
||||
<input type="hidden" name="id" value="{{ $customer_address['id'] ?? null }}">
|
||||
@include('Admin.Shop.CustomerAddresses.form')
|
||||
</form>
|
||||
|
||||
@endsection
|
||||
|
||||
@@ -96,8 +96,8 @@
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-6">
|
||||
{{ Form::label('sale_delivery_id', __('shop.deliveries.name')) }}
|
||||
@include('components.form.select', [
|
||||
'label' => __('shop.deliveries.name'),
|
||||
'name' => 'deliveries[]',
|
||||
'list' => $deliveries ?? [],
|
||||
'values' => $customer['deliveries'] ?? null,
|
||||
|
||||
15
resources/views/Admin/Shop/CustomerInvoices/create.blade.php
Normal file
15
resources/views/Admin/Shop/CustomerInvoices/create.blade.php
Normal file
@@ -0,0 +1,15 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('shop.customer_addresses.title'),
|
||||
'subtitle' => __('shop.customer_addresses.add'),
|
||||
'breadcrumb' => [__('shop.customers.title')],
|
||||
])
|
||||
|
||||
@section('content')
|
||||
{{ Form::open([
|
||||
'route' => 'Admin.Shop.CustomerAddresses.store',
|
||||
'id' => 'customer_address-form',
|
||||
'autocomplete' => 'off',
|
||||
]) }}
|
||||
@include('components.address')
|
||||
</form>
|
||||
@endsection
|
||||
12
resources/views/Admin/Shop/CustomerInvoices/edit.blade.php
Normal file
12
resources/views/Admin/Shop/CustomerInvoices/edit.blade.php
Normal file
@@ -0,0 +1,12 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('shop.customer_addresses.title'),
|
||||
'subtitle' => __('shop.customer_addresses.edit'),
|
||||
'breadcrumb' => [__('shop.customer_addresses.title')],
|
||||
])
|
||||
|
||||
@section('content')
|
||||
{{ Form::open(['route' => 'Admin.Shop.CustomerAddresses.store', 'id' => 'customer_address-form', 'autocomplete' => 'off']) }}
|
||||
<input type="hidden" name="id" value="{{ $customer_address['id'] ?? null }}">
|
||||
@include('Admin.Shop.CustomerAddresses.form')
|
||||
</form>
|
||||
@endsection
|
||||
135
resources/views/Admin/Shop/CustomerInvoices/form.blade.php
Normal file
135
resources/views/Admin/Shop/CustomerInvoices/form.blade.php
Normal file
@@ -0,0 +1,135 @@
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="row mb-3">
|
||||
<div class="col-6">
|
||||
{{ Form::label('first_name', 'Prénom') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'first_name',
|
||||
'value' => $customer['first_name'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
<div class="col-6">
|
||||
{{ Form::label('last_name', 'Nom') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'last_name',
|
||||
'value' => $customer['last_name'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
{{ Form::label('company', 'Société') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'company',
|
||||
'value' => $customer['company'] ?? null,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
{{ Form::label('tva', 'TVA') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'tva',
|
||||
'value' => $customer['tva'] ?? null,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-6">
|
||||
{{ Form::label('email', 'Email') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'email',
|
||||
'value' => $customer['email'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
<div class="col-6">
|
||||
{{ Form::label('phone', 'Téléphone') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'phone',
|
||||
'value' => $customer['phone'] ?? null,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
{{ Form::label('address', 'Adresse') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'address',
|
||||
'value' => $customer['address'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
{{ Form::label('address2', 'Adresse complémentaire') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'address2',
|
||||
'value' => $customer['address2'] ?? null,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-4">
|
||||
{{ Form::label('zipcode', 'Code postal') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'zipcode',
|
||||
'value' => $customer['zipcode'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
<div class="col-8">
|
||||
{{ Form::label('city', 'Ville') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'city',
|
||||
'value' => $customer['city'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-6">
|
||||
@include('components.form.select', [
|
||||
'label' => __('shop.deliveries.name'),
|
||||
'name' => 'deliveries[]',
|
||||
'list' => $deliveries ?? [],
|
||||
'values' => $customer['deliveries'] ?? null,
|
||||
'with_empty' => '',
|
||||
'class' => 'select2',
|
||||
'multiple' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
@if ($customer['addresses'])
|
||||
@include('components.address', [
|
||||
'with_country' => false,
|
||||
'prefix' => 'addresses[0]',
|
||||
'with_tab' => true,
|
||||
'item' => $customer['addresses'][0],
|
||||
])
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('components.save')
|
||||
|
||||
@include('load.form.save')
|
||||
@include('load.form.select2')
|
||||
|
||||
@push('js')
|
||||
<script>
|
||||
$(function() {
|
||||
initSelect2();
|
||||
initSaveForm('#customer-form');
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
11
resources/views/Admin/Shop/CustomerInvoices/list.blade.php
Normal file
11
resources/views/Admin/Shop/CustomerInvoices/list.blade.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<x-card>
|
||||
@include('components.datatable', [
|
||||
'route' => route('Admin.Shop.CustomerInvoices.index'),
|
||||
'model' => 'customer_invoices',
|
||||
'with_print' => false,
|
||||
'with_filters' => false,
|
||||
])
|
||||
<x-layout.modal title="Filtres" id="modal-customer_invoices-filters">
|
||||
@include('Admin.Shop.CustomerInvoices.partials.filters', ['model' => 'customer_invoices'])
|
||||
</x-layout.modal>
|
||||
</x-card>
|
||||
@@ -0,0 +1,3 @@
|
||||
<form id="{{ $model }}-filters">
|
||||
<input type="text" name="customer_id" value="{{ $customer['id'] ?? false }}">
|
||||
</form>
|
||||
36
resources/views/Admin/Shop/CustomerInvoices/show.blade.php
Normal file
36
resources/views/Admin/Shop/CustomerInvoices/show.blade.php
Normal file
@@ -0,0 +1,36 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('products.title'),
|
||||
'subtitle' => __('products.title'),
|
||||
'breadcrumb' => [__('products.title')]
|
||||
])
|
||||
|
||||
@section('content')
|
||||
<form action="{{ route('Shop.Products') }}" method="GET">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-offset-2 col-md-8">
|
||||
|
||||
<div class="box box-info">
|
||||
<div class="box-body">
|
||||
<div class="col-md-6">
|
||||
<h3>{{ name }}</h3>
|
||||
<h4>
|
||||
{{ $product.section.name }}<br>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="col-md-6 text-right">
|
||||
<h2>{{ $prix_total }} €</h2>
|
||||
<h4>{{ $residence['type_produit']['name'] }}</h4>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
@include('Hestimmo.modules.Lot.partials.carousel')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@endsection
|
||||
15
resources/views/Admin/Shop/CustomerOrders/create.blade.php
Normal file
15
resources/views/Admin/Shop/CustomerOrders/create.blade.php
Normal file
@@ -0,0 +1,15 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('shop.customer_addresses.title'),
|
||||
'subtitle' => __('shop.customer_addresses.add'),
|
||||
'breadcrumb' => [__('shop.customers.title')],
|
||||
])
|
||||
|
||||
@section('content')
|
||||
{{ Form::open([
|
||||
'route' => 'Admin.Shop.CustomerAddresses.store',
|
||||
'id' => 'customer_address-form',
|
||||
'autocomplete' => 'off',
|
||||
]) }}
|
||||
@include('components.address')
|
||||
</form>
|
||||
@endsection
|
||||
12
resources/views/Admin/Shop/CustomerOrders/edit.blade.php
Normal file
12
resources/views/Admin/Shop/CustomerOrders/edit.blade.php
Normal file
@@ -0,0 +1,12 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('shop.customer_addresses.title'),
|
||||
'subtitle' => __('shop.customer_addresses.edit'),
|
||||
'breadcrumb' => [__('shop.customer_addresses.title')],
|
||||
])
|
||||
|
||||
@section('content')
|
||||
{{ Form::open(['route' => 'Admin.Shop.CustomerAddresses.store', 'id' => 'customer_address-form', 'autocomplete' => 'off']) }}
|
||||
<input type="hidden" name="id" value="{{ $customer_address['id'] ?? null }}">
|
||||
@include('Admin.Shop.CustomerAddresses.form')
|
||||
</form>
|
||||
@endsection
|
||||
135
resources/views/Admin/Shop/CustomerOrders/form.blade.php
Normal file
135
resources/views/Admin/Shop/CustomerOrders/form.blade.php
Normal file
@@ -0,0 +1,135 @@
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="row mb-3">
|
||||
<div class="col-6">
|
||||
{{ Form::label('first_name', 'Prénom') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'first_name',
|
||||
'value' => $customer['first_name'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
<div class="col-6">
|
||||
{{ Form::label('last_name', 'Nom') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'last_name',
|
||||
'value' => $customer['last_name'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
{{ Form::label('company', 'Société') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'company',
|
||||
'value' => $customer['company'] ?? null,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
{{ Form::label('tva', 'TVA') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'tva',
|
||||
'value' => $customer['tva'] ?? null,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-6">
|
||||
{{ Form::label('email', 'Email') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'email',
|
||||
'value' => $customer['email'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
<div class="col-6">
|
||||
{{ Form::label('phone', 'Téléphone') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'phone',
|
||||
'value' => $customer['phone'] ?? null,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
{{ Form::label('address', 'Adresse') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'address',
|
||||
'value' => $customer['address'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
{{ Form::label('address2', 'Adresse complémentaire') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'address2',
|
||||
'value' => $customer['address2'] ?? null,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-4">
|
||||
{{ Form::label('zipcode', 'Code postal') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'zipcode',
|
||||
'value' => $customer['zipcode'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
<div class="col-8">
|
||||
{{ Form::label('city', 'Ville') }}
|
||||
@include('components.form.input', [
|
||||
'name' => 'city',
|
||||
'value' => $customer['city'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-6">
|
||||
@include('components.form.select', [
|
||||
'label' => __('shop.deliveries.name'),
|
||||
'name' => 'deliveries[]',
|
||||
'list' => $deliveries ?? [],
|
||||
'values' => $customer['deliveries'] ?? null,
|
||||
'with_empty' => '',
|
||||
'class' => 'select2',
|
||||
'multiple' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
@if ($customer['addresses'])
|
||||
@include('components.address', [
|
||||
'with_country' => false,
|
||||
'prefix' => 'addresses[0]',
|
||||
'with_tab' => true,
|
||||
'item' => $customer['addresses'][0],
|
||||
])
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('components.save')
|
||||
|
||||
@include('load.form.save')
|
||||
@include('load.form.select2')
|
||||
|
||||
@push('js')
|
||||
<script>
|
||||
$(function() {
|
||||
initSelect2();
|
||||
initSaveForm('#customer-form');
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
11
resources/views/Admin/Shop/CustomerOrders/list.blade.php
Normal file
11
resources/views/Admin/Shop/CustomerOrders/list.blade.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<x-card>
|
||||
@include('components.datatable', [
|
||||
'route' => route('Admin.Shop.CustomerOrders.index'),
|
||||
'model' => 'customer_orders',
|
||||
'with_print' => false,
|
||||
'with_filters' => false,
|
||||
])
|
||||
<x-layout.modal title="Filtres" id="modal-customer_orders-filters">
|
||||
@include('Admin.Shop.CustomerOrders.partials.filters', ['model' => 'customer_orders'])
|
||||
</x-layout.modal>
|
||||
</x-card>
|
||||
@@ -0,0 +1,3 @@
|
||||
<form id="{{ $model }}-filters">
|
||||
<input type="text" name="customer_id" value="{{ $customer['id'] ?? false }}">
|
||||
</form>
|
||||
36
resources/views/Admin/Shop/CustomerOrders/show.blade.php
Normal file
36
resources/views/Admin/Shop/CustomerOrders/show.blade.php
Normal file
@@ -0,0 +1,36 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('products.title'),
|
||||
'subtitle' => __('products.title'),
|
||||
'breadcrumb' => [__('products.title')]
|
||||
])
|
||||
|
||||
@section('content')
|
||||
<form action="{{ route('Shop.Products') }}" method="GET">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-offset-2 col-md-8">
|
||||
|
||||
<div class="box box-info">
|
||||
<div class="box-body">
|
||||
<div class="col-md-6">
|
||||
<h3>{{ name }}</h3>
|
||||
<h4>
|
||||
{{ $product.section.name }}<br>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="col-md-6 text-right">
|
||||
<h2>{{ $prix_total }} €</h2>
|
||||
<h4>{{ $residence['type_produit']['name'] }}</h4>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
@include('Hestimmo.modules.Lot.partials.carousel')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@endsection
|
||||
@@ -114,9 +114,15 @@
|
||||
</div>
|
||||
</form>
|
||||
<div class="col-6">
|
||||
<x-layout.box-collapse title='Adresses' id='form-customer-address'>
|
||||
<x-layout.box-collapse title='Adresses' id='customer-addresses'>
|
||||
@include('Admin.Shop.CustomerAddresses.list', ['dataTable' => $customer_addresses])
|
||||
</x-layout.box-collapse>
|
||||
<x-layout.box-collapse title='Factures' id='customer-invoices'>
|
||||
@include('Admin.Shop.CustomerInvoices.list', ['dataTable' => $customer_invoices])
|
||||
</x-layout.box-collapse>
|
||||
<x-layout.box-collapse title='Commandes' id='customer-orders'>
|
||||
@include('Admin.Shop.CustomerOrders.list', ['dataTable' => $customer_orders])
|
||||
</x-layout.box-collapse>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -124,12 +130,14 @@
|
||||
|
||||
@include('load.form.save')
|
||||
@include('load.form.select2')
|
||||
@include('load.layout.chevron')
|
||||
|
||||
@push('js')
|
||||
{!! JsValidator::formRequest('App\Http\Requests\Admin\Shop\StoreCustomerPost', '#customer-form') !!}
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
initChevron();
|
||||
initSelect2();
|
||||
initSaveForm('#customer-form');
|
||||
});
|
||||
|
||||
@@ -47,17 +47,15 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- /.table-responsive -->
|
||||
</div>
|
||||
<!-- /.box-body -->
|
||||
<div class="card-header clearfix">
|
||||
<!--
|
||||
<a href="{{ route('Admin.Shop.Orders.create') }}" class="btn btn-sm btn-info btn-flat pull-left">
|
||||
Nouvelle commande
|
||||
</a>
|
||||
-->
|
||||
<a href="{{ route('Admin.Shop.Orders.index') }}" class="btn btn-sm btn-default btn-flat pull-right">
|
||||
Voir toutes les commandes
|
||||
</a>
|
||||
</div>
|
||||
<!-- /.box-footer -->
|
||||
</div>
|
||||
<!-- /.box -->
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
'value' => $calcul['type_id'] ?? false,
|
||||
'list' => $delivery_types ?? [],
|
||||
'label' => __('shop.delivery_types.name'),
|
||||
'with_empty' => '',
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
@@ -23,7 +24,6 @@
|
||||
@include('load.form.select2')
|
||||
@include('load.form.save')
|
||||
|
||||
|
||||
@push('js')
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('shop.delivery_type_calculations.title'),
|
||||
'subtitle' => __('shop.delivery_type_calculations.list'),
|
||||
'breadcrumb' => [__('shop.delivery_type_calculations.title')]
|
||||
'breadcrumb' => [__('shop.delivery_type_calculations.title')],
|
||||
])
|
||||
|
||||
@section('content')
|
||||
@@ -9,7 +9,8 @@
|
||||
@include('components.datatable', [
|
||||
'route' => route('Admin.Shop.DeliveryTypeCalculations.index'),
|
||||
'model' => 'delivery_type_calculations',
|
||||
'with_filters' => true,
|
||||
'with_filters' => false,
|
||||
'with_print' => false,
|
||||
])
|
||||
@endcomponent
|
||||
@endsection
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('shop.deliveries.title'),
|
||||
'subtitle' => __('shop.deliveries.add'),
|
||||
'breadcrumb' => [__('shop.deliveries.title'), __('shop.deliveries.add')]
|
||||
'title' => __('shop.delivery_types.title'),
|
||||
'subtitle' => __('shop.delivery_types.add'),
|
||||
'breadcrumb' => [__('shop.delivery_types.title')],
|
||||
])
|
||||
|
||||
@section('content')
|
||||
{{ Form::open(['route' => 'Admin.Shop.Deliveries.store', 'id' => 'delivery-form', 'autocomplete' => 'off']) }}
|
||||
@include('Admin.Shop.Deliveries.form')
|
||||
@include('Admin.Shop.DeliveryTypes.form')
|
||||
</form>
|
||||
@endsection
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
@extends('layout.index', [
|
||||
'title' => __('shop.deliveries.title'),
|
||||
'subtitle' => __('shop.deliveries.edit'),
|
||||
'breadcrumb' => [__('shop.deliveries.title')]
|
||||
'title' => __('shop.delivery_types.title'),
|
||||
'subtitle' => __('shop.delivery_types.edit'),
|
||||
'breadcrumb' => [__('shop.delivery_types.title')],
|
||||
])
|
||||
|
||||
@section('content')
|
||||
{{ Form::open(['route' => 'Admin.Shop.Deliveries.store', 'id' => 'delivery-form', 'autocomplete' => 'off']) }}
|
||||
<input type="hidden" name="id" value="{{ $delivery['id'] }}">
|
||||
@include('Admin.Shop.Deliveries.form')
|
||||
@include('Admin.Shop.DeliveryTypes.form')
|
||||
</form>
|
||||
@endsection
|
||||
|
||||
@@ -1,31 +1,11 @@
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-xl-8">
|
||||
<div class="row mb-3">
|
||||
<div class="col-6">
|
||||
{{ Form::label('sale_channel_id', __('shop.sale_channels.name')) }}
|
||||
@include('components.form.select', ['name' => 'sale_channel_id', 'list' => $sale_channels ?? [], 'value' => $delivery['sale_channel_id'] ?? null, 'with_empty' => '', 'class' => 'select2'])
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="row">
|
||||
<div class="col-5">
|
||||
{{ Form::label('active', __('Actif')) }}<br/>
|
||||
@include("components.form.toggle", ['name' => 'active', 'value' => $delivery['active'] ?? false, 'on' => __('active'), 'off' => __('inactive')])
|
||||
</div>
|
||||
<div class="col-3">
|
||||
{{ Form::label('is_public', __('Type')) }}
|
||||
@include('components.form.toggle', ['name' => 'is_public', 'value' => $delivery['is_public'] ?? false, 'on' => __('public'), 'off' => __('administré')])
|
||||
</div>
|
||||
<div class="col-4">
|
||||
{{ Form::label('at_house', __('Défaut')) }}
|
||||
@include('components.form.checkboxes.icheck', ['name' => 'at_house', 'value' => $delivery['at_house'] ?? null])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
{{ Form::label('name', __('Nom')) }}
|
||||
@include('components.form.input', ['name' => 'name', 'value' => $delivery['name'] ?? null, 'required' => true])
|
||||
@include('components.form.input', [
|
||||
'name' => 'name',
|
||||
'value' => $delivery['name'] ?? null,
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -36,23 +16,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('components.address', ['with_country' => false])
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-3">
|
||||
{{ Form::label('event_date_begin', __('Date de début')) }}
|
||||
@include('components.form.datepicker', ['name' => 'event_date_begin', 'value' => $delivery['event_date_begin'] ?? null])
|
||||
</div>
|
||||
<div class="col-3">
|
||||
{{ Form::label('event_date_end', __('Date de fin')) }}
|
||||
@include('components.form.datepicker', ['name' => 'event_date_end', 'value' => $delivery['event_date_end'] ?? null])
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('components.save')
|
||||
<x-save />
|
||||
|
||||
@include('load.form.select2')
|
||||
@include('load.form.save')
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
@include('boilerplate::load.tinymce')
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
{{ Form::label('name', 'Nom') }}
|
||||
@@ -24,11 +21,13 @@
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="float-right mt-3">
|
||||
@include('components.form.buttons.button-save')
|
||||
<x-save />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('boilerplate::load.tinymce')
|
||||
|
||||
@push('js')
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
'prefix' => 'invoices',
|
||||
'addresses' => $customer['invoice_addresses'],
|
||||
'with_name' => true,
|
||||
'route_del' => route(''),
|
||||
])
|
||||
</x-card>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
@section('content')
|
||||
@php
|
||||
if ($errors->registration) {
|
||||
if ($errors->registration->all()) {
|
||||
$classIdent = 'd-none';
|
||||
$classRegister = '';
|
||||
} else {
|
||||
|
||||
@@ -25,15 +25,7 @@
|
||||
@push('js')
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('.slider').slick({
|
||||
lazyLoad: 'ondemand',
|
||||
slidesToShow: 5,
|
||||
slidesToScroll: 1,
|
||||
dots: false,
|
||||
autoplay: true,
|
||||
autoplaySpeed: 5000
|
||||
});
|
||||
initSlick();
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
<button type="button" class="btn bg-light green-dark p-0" data-toggle="dropdown">
|
||||
@if (App\Repositories\Shop\Customers::isConnected())
|
||||
<img src="{{ App\Repositories\Shop\Customers::getAvatar() }}" class="img-fluid" title="{{ App\Repositories\Shop\Customers::getName() }}">
|
||||
{!! App\Repositories\Shop\CustomerAvatars::getImg() !!}
|
||||
@else
|
||||
<img src="/img/header/login.svg" width="36px">
|
||||
<img src='/img/header/login.svg' width='36px' alt='login'>
|
||||
@endif
|
||||
|
||||
</button>
|
||||
|
||||
<ul class="dropdown-menu" aria-labelledby="dLabel">
|
||||
<ul class="dropdown-menu" aria-labelledby="Connexion">
|
||||
@if (App\Repositories\Shop\Customers::isConnected())
|
||||
<li class="dropdown-item">
|
||||
<a href="{{ route('Shop.Customers.profile') }}" title="Accèdez à vos factures, remises ..." rel="nofollow">
|
||||
|
||||
@@ -5,6 +5,18 @@
|
||||
@endpush
|
||||
@push('scripts')
|
||||
<script type="text/javascript" src="{{ asset('/assets/plugins/slick/slick.min.js') }}"></script>
|
||||
<script>
|
||||
function initSlick(sel = '.slider') {
|
||||
return $(sel).slick({
|
||||
lazyLoad: 'ondemand',
|
||||
slidesToShow: 5,
|
||||
slidesToScroll: 1,
|
||||
dots: false,
|
||||
autoplay: true,
|
||||
autoplaySpeed: 5000
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
@php(define('LOAD_SLICKJS', true))
|
||||
@endif
|
||||
7
routes/Admin/Shop/CustomerInvoices.php
Normal file
7
routes/Admin/Shop/CustomerInvoices.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
Route::prefix('CustomerInvoices')->name('CustomerInvoices.')->group(function () {
|
||||
Route::get('', 'CustomerInvoiceController@index')->name('index');
|
||||
Route::delete('destroy/{id?}', 'CustomerInvoiceController@destroy')->name('destroy');
|
||||
Route::get('view/{id?}', 'CustomerInvoiceController@view')->name('view');
|
||||
});
|
||||
7
routes/Admin/Shop/CustomerOrders.php
Normal file
7
routes/Admin/Shop/CustomerOrders.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
Route::prefix('CustomerOrders')->name('CustomerOrders.')->group(function () {
|
||||
Route::get('', 'CustomerOrderController@index')->name('index');
|
||||
Route::delete('destroy/{id?}', 'CustomerOrderController@destroy')->name('destroy');
|
||||
Route::get('view/{id?}', 'CustomerOrderController@edit')->name('edit');
|
||||
});
|
||||
@@ -8,6 +8,8 @@ Route::middleware('auth')->prefix('Shop')->namespace('Shop')->name('Shop.')->gro
|
||||
include_once __DIR__.'/Contents.php';
|
||||
include_once __DIR__.'/Customers.php';
|
||||
include_once __DIR__.'/CustomerAddresses.php';
|
||||
include_once __DIR__.'/CustomerInvoices.php';
|
||||
include_once __DIR__.'/CustomerOrders.php';
|
||||
include_once __DIR__.'/Deliveries.php';
|
||||
include_once __DIR__.'/DeliveryPackages.php';
|
||||
include_once __DIR__.'/DeliveryTypes.php';
|
||||
|
||||
Reference in New Issue
Block a user