diff --git a/app/Datatables/Admin/Shop/CustomerAddressesDataTable.php b/app/Datatables/Admin/Shop/CustomerAddressesDataTable.php index 21527d37..43e2ae8f 100644 --- a/app/Datatables/Admin/Shop/CustomerAddressesDataTable.php +++ b/app/Datatables/Admin/Shop/CustomerAddressesDataTable.php @@ -17,9 +17,19 @@ class CustomerAddressesDataTable extends DataTable public function query(CustomerAddress $model) { + $model = self::filterByCustomer($model); + return $this->buildQuery($model); } + public static function filterByCustomer($model, $customerId = false) + { + $customerId = $customerId ? $customerId : self::isFilteredByField('customer_id'); + + return $customerId ? $model->byCustomer($customerId) : $model; + } + + protected function getColumns() { return [ diff --git a/app/Http/Controllers/Admin/Core/Mail/MailLogController.php b/app/Http/Controllers/Admin/Core/Mail/MailLogController.php new file mode 100644 index 00000000..3cacdbef --- /dev/null +++ b/app/Http/Controllers/Admin/Core/Mail/MailLogController.php @@ -0,0 +1,26 @@ +middleware('ability:admin'); + } + + public function index(MailLogsDataTable $dataTable) + { + return $dataTable->render('admin.Core.Mail.MailLog.index', $data ?? []); + } + + public function show($id) + { + $data['message'] = MailLogs::getParsed($id); + + return view('admin.Core.Mail.MailLog.modal', $data); + } +} diff --git a/app/Http/Controllers/Admin/Shop/CustomerAddressController.php b/app/Http/Controllers/Admin/Shop/CustomerAddressController.php index 9ec9f730..96c92dc8 100644 --- a/app/Http/Controllers/Admin/Shop/CustomerAddressController.php +++ b/app/Http/Controllers/Admin/Shop/CustomerAddressController.php @@ -10,7 +10,7 @@ class CustomerAddressController extends Controller { public function index(CustomerAddressesDataTable $dataTable) { - return $dataTable->render('Admin.Shop.Customers.list'); + return $dataTable->render('Admin.Shop.CustomerAddresses.list'); } public function create() diff --git a/app/Http/Controllers/Admin/Shop/DashboardController.php b/app/Http/Controllers/Admin/Shop/DashboardController.php new file mode 100644 index 00000000..a0a2290d --- /dev/null +++ b/app/Http/Controllers/Admin/Shop/DashboardController.php @@ -0,0 +1,24 @@ +middleware('auth'); + } + + public function index(Request $request) + { + $data = $request->all(); + $data = Dashboards::getStats($data); + dump($data); + + return view('Admin.Shop.Dashboard.index', $data); + } +} diff --git a/app/Http/Controllers/Admin/Shop/PriceListValueController.php b/app/Http/Controllers/Admin/Shop/PriceListValueController.php new file mode 100644 index 00000000..966b04a7 --- /dev/null +++ b/app/Http/Controllers/Admin/Shop/PriceListValueController.php @@ -0,0 +1,75 @@ +render('Admin.Shop.PriceListValues.list', $data); + } + + public function create() + { + $data['unities'] = Unities::getOptions(); + $data['taxes_options'] = Taxes::getOptions(); + $data['categories'] = PriceListValueCategories::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(); + + return view('Admin.Shop.PriceListValues.edit', $data); + } + + public function store(Request $request) + { + $ret = PriceListValues::store($request->all()); + + return redirect()->route('Admin.Shop.PriceListValues.index'); + } + + public function show($id) + { + $data = PriceListValues::get($id); + + return view('Admin.Shop.PriceListValues.view', $data); + } + + public function destroy($id) + { + return PriceListValues::destroy($id); + } + + public function getPrice($id) + { + $data['generic'] = PriceListValues::getFull($id); + + return view('Admin.Shop.PriceListValues.partials.table-prices', $data); + } + + public function addPrice($index) + { + $data['index'] = $index; + + return view('Admin.Shop.PriceListValues.partials.row_price', $data); + } +} diff --git a/app/Http/Controllers/Shop/Auth/RegisterController.php b/app/Http/Controllers/Shop/Auth/RegisterController.php index 66d5e59f..15839173 100644 --- a/app/Http/Controllers/Shop/Auth/RegisterController.php +++ b/app/Http/Controllers/Shop/Auth/RegisterController.php @@ -3,24 +3,35 @@ namespace App\Http\Controllers\Shop\Auth; use App\Http\Controllers\Controller; +use App\Http\Requests\Shop\RegisterCustomer; use App\Repositories\Shop\CustomerAddresses; use App\Repositories\Shop\Customers; use Illuminate\Foundation\Auth\EmailVerificationRequest; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Sebastienheyd\Boilerplate\Rules\Password; + class RegisterController extends Controller { protected $redirectTo; - public function showRegistrationForm() + public function showRegistrationForm(Request $request) { - return view('Shop.auth.register'); + return view('Shop.auth.register', ['customer' => $request->old()]); } - public function register(Request $request) + public function register(RegisterCustomer $request) { + $validatedData = $request->validateWithBag('Errors', [ + 'last_name' => 'required|max:255', + 'first_name' => 'required|max:255', + 'email' => 'required|email|max:255|unique:shop_customers,email,NULL,id,deleted_at,NULL', + 'password' => ['required', 'confirmed', new Password()], + + ]); + $user = $this->create($request->all()); $this->guard()->login($user); @@ -34,7 +45,7 @@ class RegisterController extends Controller return $request->wantsJson() ? new JsonResponse([], 201) - : redirect($this->redirectPath()); + : redirect('home'); } public function emailVerify() diff --git a/app/Repositories/Core/Auth/Users.php b/app/Repositories/Core/Auth/Users.php index 8941a0c4..9c2e263a 100644 --- a/app/Repositories/Core/Auth/Users.php +++ b/app/Repositories/Core/Auth/Users.php @@ -10,7 +10,6 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; -use LangleyFoxall\LaravelNISTPasswordRules\PasswordRules; use Laratrust\Traits\LaratrustUserTrait; class Users @@ -113,32 +112,6 @@ class Users return $user ? $user->hasRole($role) : false; } - public static function hasPermission($permission, $user = false) - { - if (self::isAdmin()) { - return true; - } - $user = $user ? $user : self::getUser(); - $permissions = self::getPermissions($user); - - return $user ? self::checkPermission($permissions, $permission) : false; - } - - public static function checkPermission($permissions, $permission) - { - if (! strpos($permission, '*')) { - return in_array($permission, $permissions); - } - $permission = str_replace('*', '', $permission); - foreach ($permissions as $item) { - if (stripos($item, $permission) !== false) { - return true; - } - } - - return false; - } - public static function getRoles($user = false) { $user = $user ? $user : self::getUser(); @@ -146,33 +119,6 @@ class Users return $user ? $user->roles->pluck('name')->toArray() : false; } - public static function getRolesToEdit() - { - return Roles::getListByRights(); - } - - public static function getPermissions($user = false) - { - $user = $user ? $user : self::getUser(); - - return $user ? $user->allPermissions()->pluck('name')->toArray() : false; - } - - public static function getByTeam($id) - { - return User::byTeam($id)->get(); - } - - public static function getByUniqueTeam($id) - { - return User::byTeam($id)->byUniqueTeam()->get(); - } - - public static function destroyByUniqueTeam($id) - { - return User::byTeam($id)->byUniqueTeam()->delete(); - } - public static function getAvatar($user_id) { $avatar = self::get($user_id)->avatar; @@ -224,11 +170,6 @@ class Users return User::find($id)->update(['password' => $password]); } - public static function validate($username, $field = 'current_password') - { - return PasswordRules::changePassword($username, $field); - } - public static function getModel() { return User::query(); diff --git a/resources/views/Admin/Shop/CustomerAddresses/list.blade.php b/resources/views/Admin/Shop/CustomerAddresses/list.blade.php index a7206e77..23e014d1 100644 --- a/resources/views/Admin/Shop/CustomerAddresses/list.blade.php +++ b/resources/views/Admin/Shop/CustomerAddresses/list.blade.php @@ -1,6 +1,11 @@ -@component('components.card') + @include('components.datatable', [ 'route' => route('Admin.Shop.CustomerAddresses.index'), 'model' => 'customer_addresses', + 'with_print' => false, + 'with_filters' => false, ]) -@endcomponent + + @include('Admin.Shop.CustomerAddresses.partials.filters', ['model' => 'customer_addresses']) + + diff --git a/resources/views/Admin/Shop/CustomerAddresses/partials/filters.blade.php b/resources/views/Admin/Shop/CustomerAddresses/partials/filters.blade.php new file mode 100644 index 00000000..06f11853 --- /dev/null +++ b/resources/views/Admin/Shop/CustomerAddresses/partials/filters.blade.php @@ -0,0 +1,3 @@ +
+ +
diff --git a/resources/views/Admin/Shop/Customers/form.blade.php b/resources/views/Admin/Shop/Customers/form.blade.php index 626543ab..54cce750 100644 --- a/resources/views/Admin/Shop/Customers/form.blade.php +++ b/resources/views/Admin/Shop/Customers/form.blade.php @@ -1,8 +1,7 @@ -f{{ Form::open(['route' => 'Admin.Shop.Customers.store', 'id' => 'customer-form', 'autocomplete' => 'off']) }} - -
+ {{ Form::open(['route' => 'Admin.Shop.Customers.store', 'id' => 'customer-form', 'autocomplete' => 'off']) }} +
@@ -113,13 +112,13 @@ f{{ Form::open(['route' => 'Admin.Shop.Customers.store', 'id' => 'customer-form'
+
@include('Admin.Shop.CustomerAddresses.list', ['dataTable' => $customer_addresses])
- diff --git a/resources/views/Admin/Shop/Customers/list.blade.php b/resources/views/Admin/Shop/Customers/list.blade.php index 8e506ba8..6c638084 100644 --- a/resources/views/Admin/Shop/Customers/list.blade.php +++ b/resources/views/Admin/Shop/Customers/list.blade.php @@ -10,6 +10,7 @@ 'route' => route('Admin.Shop.Customers.index'), 'model' => 'customers', 'with_filters' => true, + 'with_print' => false, ]) @include('Admin.Shop.Customers.partials.filters', ['model' => 'customers']) diff --git a/resources/views/Shop/Customers/partials/registration.blade.php b/resources/views/Shop/Customers/partials/registration.blade.php index cf42b361..2e6557b3 100644 --- a/resources/views/Shop/Customers/partials/registration.blade.php +++ b/resources/views/Shop/Customers/partials/registration.blade.php @@ -1,9 +1,20 @@ +@if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+@endif +
@include('components.form.input', [ 'name' => 'first_name', 'value' => $customer['first_name'] ?? '', 'label' => 'Prénom', + 'required' => true, ])
@@ -11,6 +22,7 @@ 'name' => 'last_name', 'value' => $customer['last_name'] ?? '', 'label' => 'Nom', + 'required' => true, ])
diff --git a/resources/views/Shop/auth/partials/register.blade.php b/resources/views/Shop/auth/partials/register.blade.php index d124aced..62a74698 100644 --- a/resources/views/Shop/auth/partials/register.blade.php +++ b/resources/views/Shop/auth/partials/register.blade.php @@ -1,58 +1,66 @@ -{!! Form::open(['route' => 'Shop.register.post', 'method' => 'post', 'autocomplete'=> 'off']) !!} -
-
- +{!! Form::open(['route' => 'Shop.register.post', 'method' => 'post', 'autocomplete' => 'off']) !!} +
+
+ - @include('Shop.Customers.partials.registration') + @include('Shop.Customers.partials.registration') -
-
-
- - {{ Form::password('password', ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.password'), 'required']) }} - {!! $errors->first('password','

:message

') !!} -
-
-
- -
- {{ Form::password('password_confirmation', ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.password_confirm'), 'required']) }} - {!! $errors->first('password_confirmation','

:message

') !!} -
+
+
+
+ + {{ Form::password('password', [ + 'class' => 'form-control', + 'placeholder' => __('boilerplate::auth.fields.password'), + 'required', + ]) }} + {!! $errors->first('password', '

:message

') !!}
- -
-
- @include('components.form.checkboxes.icheck', [ - 'name' => 'use_for_delivery', - 'value' => false, - 'label' => 'Utiliser une autre adresse pour la livraison', - ]) +
+ +
+ {{ Form::password('password_confirmation', [ + 'class' => 'form-control', + 'placeholder' => __('boilerplate::auth.fields.password_confirm'), + 'required', + ]) }} + {!! $errors->first('password_confirmation', '

:message

') !!}
- -
-
- @include('Shop.Customers.partials.address', [ - 'label' => 'Adresse de livraison', - 'prefix' => 'delivery_' - ]) -
-
- - - -
-
- -
+
+
+ @include('components.form.checkboxes.icheck', [ + 'name' => 'use_for_delivery', + 'value' => false, + 'label' => 'Utiliser une autre adresse pour la livraison', + ]) +
+
+ +
+
+ @include('Shop.Customers.partials.address', [ + 'label' => 'Adresse de livraison', + 'prefix' => 'delivery_', + ]) +
+
+ + + +
+
+ +
+
+
@push('js') @@ -61,4 +69,4 @@ $('#address_delivery').toggleClass('d-none'); }) -@endpush \ No newline at end of file +@endpush diff --git a/resources/views/components/datatables/buttons.blade.php b/resources/views/components/datatables/buttons.blade.php index 5317cda9..94f2e2a9 100644 --- a/resources/views/components/datatables/buttons.blade.php +++ b/resources/views/components/datatables/buttons.blade.php @@ -1,27 +1,32 @@
- @if (!isset($with_print) || $with_print) - @include('components.datatables.buttons.print') - @endif + @if (!isset($with_print) || $with_print) + @include('components.datatables.buttons.print') + @endif - @if (isset($with_exports) && $with_exports) - @include('components.datatables.buttons.excel') - @endif + @if (isset($with_exports) && $with_exports) + @include('components.datatables.buttons.excel') + @endif - @if (isset($with_mailing) && $with_mailing) - @include('components.datatables.buttons.mail') - @endif + @if (isset($with_mailing) && $with_mailing) + @include('components.datatables.buttons.mail') + @endif - @if (isset($with_buttons)) - @foreach ($with_buttons as $button) - @include($button) - @endforeach - @endif + @if (isset($with_buttons)) + @foreach ($with_buttons as $button) + @include($button) + @endforeach + @endif + + @if (isset($left_buttons)) + @foreach ($left_buttons as $button) + @include('components.form.button', [ + 'class' => $button['class'] ?? null, + 'icon' => $button['icon'] ?? null, + 'txt' => $button['txt'] ?? null, + 'id' => $button['id'] ?? null, + ]) + @endforeach + @endif - @if (isset($left_buttons)) - @foreach ($left_buttons as $button) - @include('components.form.button', ['class' => $button['class'] ?? null, 'icon' => $button['icon'] ?? null, 'txt' => $button['txt'] ?? null, 'id' => $button['id'] ?? null ]) - @endforeach - @endif -
diff --git a/resources/views/components/datatables/header.blade.php b/resources/views/components/datatables/header.blade.php index a3e9b7da..b5815e3d 100644 --- a/resources/views/components/datatables/header.blade.php +++ b/resources/views/components/datatables/header.blade.php @@ -1,26 +1,31 @@
-
- @include('components.datatables.search') -
-
- @include('components.datatables.buttons') - @if (isset($add_buttons)) - @include($add_buttons) - @endif -
-
- @if (isset($right_buttons)) - @foreach ($right_buttons as $button) - @include('components.form.button', ['class' => $button['class'] ?? null, 'icon' => $button['icon'] ?? null, 'txt' => $button['txt'] ?? null, 'id' => $button['id'] ?? null ]) - @endforeach - @endif - - @if (isset($right_content)) - {!! $right_content !!} - @endif +
+ @include('components.datatables.search') +
+
+ @include('components.datatables.buttons') + @if (isset($add_buttons)) + @include($add_buttons) + @endif +
+
+ @if (isset($right_buttons)) + @foreach ($right_buttons as $button) + @include('components.form.button', [ + 'class' => $button['class'] ?? null, + 'icon' => $button['icon'] ?? null, + 'txt' => $button['txt'] ?? null, + 'id' => $button['id'] ?? null, + ]) + @endforeach + @endif - @if (!(isset($with_add) && (!$with_add))) - @include('components.datatables.buttons.add') - @endif -
-
\ No newline at end of file + @if (isset($right_content)) + {!! $right_content !!} + @endif + + @if (!(isset($with_add) && !$with_add)) + @include('components.datatables.buttons.add') + @endif +
+
diff --git a/resources/views/components/datatables/js/datatable.blade.php b/resources/views/components/datatables/js/datatable.blade.php index 02de67cc..4e253eb6 100644 --- a/resources/views/components/datatables/js/datatable.blade.php +++ b/resources/views/components/datatables/js/datatable.blade.php @@ -1,78 +1,57 @@ - diff --git a/resources/views/components/form/input.blade.php b/resources/views/components/form/input.blade.php index 7c53d4e3..3c148875 100644 --- a/resources/views/components/form/input.blade.php +++ b/resources/views/components/form/input.blade.php @@ -1,21 +1,30 @@ @include('components.form.label') @if (($disabled ?? false) || ($readonly ?? false)) - @include('components.form.input', ['type' => 'hidden', 'label' => false, 'disabled' => false, 'readonly' => false]) + @include('components.form.input', [ + 'type' => 'hidden', + 'label' => false, + 'disabled' => false, + 'readonly' => false, + ]) @endif - + + +@error($name) + + {{ $message }} + +@enderror diff --git a/resources/views/load/datatables.blade.php b/resources/views/load/datatables.blade.php index dd4dd118..cc019975 100644 --- a/resources/views/load/datatables.blade.php +++ b/resources/views/load/datatables.blade.php @@ -1,131 +1,130 @@ -@if(!defined('LOAD_DATATABLES')) - @push('css') - - @endpush +@if (!defined('LOAD_DATATABLES')) + @push('css') + + @endpush - @push('scripts') - @include('boilerplate::load.moment') - - + @push('scripts') + @include('boilerplate::load.moment') + + - - @endpush + searchType.string = function(data) { + return !data ? '' : typeof data === 'string' ? removeAccents(data) : data; + }; - @php(define('LOAD_DATATABLES', true)) + searchType.html = function(data) { + return !data ? '' : typeof data === 'string' ? removeAccents(data.replace(/<.*?>/g, '')) : data; + }; + }); + + @endpush + + @php(define('LOAD_DATATABLES', true)) @endif @push('scripts') - @if ($dataTable) - {{ $dataTable->scripts() }} - @endif -@endpush \ No newline at end of file + @if ($dataTable) + {{ $dataTable->scripts() }} + @endif +@endpush