diff --git a/Modules/People/Config/.gitkeep b/Modules/People/Config/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Config/config.php b/Modules/People/Config/config.php new file mode 100644 index 00000000..5869c39e --- /dev/null +++ b/Modules/People/Config/config.php @@ -0,0 +1,5 @@ + 'People' +]; diff --git a/Modules/People/Console/.gitkeep b/Modules/People/Console/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Database/Migrations/.gitkeep b/Modules/People/Database/Migrations/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Database/Migrations/2021_07_29_165419_create_customers_table.php b/Modules/People/Database/Migrations/2021_07_29_165419_create_customers_table.php new file mode 100644 index 00000000..bf5dfbc6 --- /dev/null +++ b/Modules/People/Database/Migrations/2021_07_29_165419_create_customers_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('customer_name'); + $table->string('customer_email'); + $table->string('customer_phone'); + $table->string('city'); + $table->string('country'); + $table->text('address'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('customers'); + } +} diff --git a/Modules/People/Database/Migrations/2021_07_29_165440_create_suppliers_table.php b/Modules/People/Database/Migrations/2021_07_29_165440_create_suppliers_table.php new file mode 100644 index 00000000..1c141394 --- /dev/null +++ b/Modules/People/Database/Migrations/2021_07_29_165440_create_suppliers_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('supplier_name'); + $table->string('supplier_email'); + $table->string('supplier_phone'); + $table->string('city'); + $table->string('country'); + $table->text('address'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('suppliers'); + } +} diff --git a/Modules/People/Database/Seeders/.gitkeep b/Modules/People/Database/Seeders/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Database/Seeders/PeopleDatabaseSeeder.php b/Modules/People/Database/Seeders/PeopleDatabaseSeeder.php new file mode 100644 index 00000000..ccdd043a --- /dev/null +++ b/Modules/People/Database/Seeders/PeopleDatabaseSeeder.php @@ -0,0 +1,21 @@ +call("OthersTableSeeder"); + } +} diff --git a/Modules/People/Database/factories/.gitkeep b/Modules/People/Database/factories/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Entities/.gitkeep b/Modules/People/Entities/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Entities/Customer.php b/Modules/People/Entities/Customer.php new file mode 100644 index 00000000..1866e916 --- /dev/null +++ b/Modules/People/Entities/Customer.php @@ -0,0 +1,15 @@ +render('people::customers.index'); + } + + + public function create() { + abort_if(Gate::denies('create_customers'), 403); + + return view('people::customers.create'); + } + + + public function store(Request $request) { + abort_if(Gate::denies('create_customers'), 403); + + $request->validate([ + 'customer_name' => 'required|string|max:255', + 'customer_phone' => 'required|numeric', + 'customer_email' => 'required|email|max:255', + 'city' => 'required|string|max:255', + 'country' => 'required|string|max:255', + 'address' => 'required|string|max:500', + ]); + + Customer::create([ + 'customer_name' => $request->customer_name, + 'customer_phone' => $request->customer_phone, + 'customer_email' => $request->customer_email, + 'city' => $request->city, + 'country' => $request->country, + 'address' => $request->address + ]); + + toast('Customer Created!', 'success'); + + return redirect()->route('customers.index'); + } + + + public function show(Customer $customer) { + abort_if(Gate::denies('show_customers'), 403); + + return view('people::customers.show', compact('customer')); + } + + + public function edit(Customer $customer) { + abort_if(Gate::denies('edit_customers'), 403); + + return view('people::customers.edit', compact('customer')); + } + + + public function update(Request $request, Customer $customer) { + abort_if(Gate::denies('update_customers'), 403); + + $request->validate([ + 'customer_name' => 'required|string|max:255', + 'customer_phone' => 'required|numeric', + 'customer_email' => 'required|email|max:255', + 'city' => 'required|string|max:255', + 'country' => 'required|string|max:255', + 'address' => 'required|string|max:500', + ]); + + $customer->update([ + 'customer_name' => $request->customer_name, + 'customer_phone' => $request->customer_phone, + 'customer_email' => $request->customer_email, + 'city' => $request->city, + 'country' => $request->country, + 'address' => $request->address + ]); + + toast('Customer Updated!', 'info'); + + return redirect()->route('customers.index'); + } + + + public function destroy(Customer $customer) { + abort_if(Gate::denies('delete_customers'), 403); + + $customer->delete(); + + toast('Customer Deleted!', 'warning'); + + return redirect()->route('customers.index'); + } +} diff --git a/Modules/People/Http/Controllers/SuppliersController.php b/Modules/People/Http/Controllers/SuppliersController.php new file mode 100644 index 00000000..182342d3 --- /dev/null +++ b/Modules/People/Http/Controllers/SuppliersController.php @@ -0,0 +1,106 @@ +render('people::suppliers.index'); + } + + + public function create() { + abort_if(Gate::denies('create_suppliers'), 403); + + return view('people::suppliers.create'); + } + + + public function store(Request $request) { + abort_if(Gate::denies('create_suppliers'), 403); + + $request->validate([ + 'supplier_name' => 'required|string|max:255', + 'supplier_phone' => 'required|numeric', + 'supplier_email' => 'required|email|max:255', + 'city' => 'required|string|max:255', + 'country' => 'required|string|max:255', + 'address' => 'required|string|max:500', + ]); + + Supplier::create([ + 'supplier_name' => $request->supplier_name, + 'supplier_phone' => $request->supplier_phone, + 'supplier_email' => $request->supplier_email, + 'city' => $request->city, + 'country' => $request->country, + 'address' => $request->address + ]); + + toast('Supplier Created!', 'success'); + + return redirect()->route('suppliers.index'); + } + + + public function show(Supplier $supplier) { + abort_if(Gate::denies('show_suppliers'), 403); + + return view('people::suppliers.show', compact('supplier')); + } + + + public function edit(Supplier $supplier) { + abort_if(Gate::denies('edit_suppliers'), 403); + + return view('people::suppliers.edit', compact('supplier')); + } + + + public function update(Request $request, Supplier $supplier) { + abort_if(Gate::denies('edit_suppliers'), 403); + + $request->validate([ + 'supplier_name' => 'required|string|max:255', + 'supplier_phone' => 'required|numeric', + 'supplier_email' => 'required|email|max:255', + 'city' => 'required|string|max:255', + 'country' => 'required|string|max:255', + 'address' => 'required|string|max:500', + ]); + + $supplier->update([ + 'supplier_name' => $request->supplier_name, + 'supplier_phone' => $request->supplier_phone, + 'supplier_email' => $request->supplier_email, + 'city' => $request->city, + 'country' => $request->country, + 'address' => $request->address + ]); + + toast('Supplier Updated!', 'info'); + + return redirect()->route('suppliers.index'); + } + + + public function destroy(Supplier $supplier) { + abort_if(Gate::denies('delete_suppliers'), 403); + + $supplier->delete(); + + toast('Supplier Deleted!', 'warning'); + + return redirect()->route('suppliers.index'); + } +} diff --git a/Modules/People/Http/Middleware/.gitkeep b/Modules/People/Http/Middleware/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Http/Requests/.gitkeep b/Modules/People/Http/Requests/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Providers/.gitkeep b/Modules/People/Providers/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Providers/PeopleServiceProvider.php b/Modules/People/Providers/PeopleServiceProvider.php new file mode 100644 index 00000000..745382eb --- /dev/null +++ b/Modules/People/Providers/PeopleServiceProvider.php @@ -0,0 +1,112 @@ +registerTranslations(); + $this->registerConfig(); + $this->registerViews(); + $this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations')); + } + + /** + * Register the service provider. + * + * @return void + */ + public function register() + { + $this->app->register(RouteServiceProvider::class); + } + + /** + * Register config. + * + * @return void + */ + protected function registerConfig() + { + $this->publishes([ + module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'), + ], 'config'); + $this->mergeConfigFrom( + module_path($this->moduleName, 'Config/config.php'), $this->moduleNameLower + ); + } + + /** + * Register views. + * + * @return void + */ + public function registerViews() + { + $viewPath = resource_path('views/modules/' . $this->moduleNameLower); + + $sourcePath = module_path($this->moduleName, 'Resources/views'); + + $this->publishes([ + $sourcePath => $viewPath + ], ['views', $this->moduleNameLower . '-module-views']); + + $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower); + } + + /** + * Register translations. + * + * @return void + */ + public function registerTranslations() + { + $langPath = resource_path('lang/modules/' . $this->moduleNameLower); + + if (is_dir($langPath)) { + $this->loadTranslationsFrom($langPath, $this->moduleNameLower); + } else { + $this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower); + } + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return []; + } + + private function getPublishableViewPaths(): array + { + $paths = []; + foreach (\Config::get('view.paths') as $path) { + if (is_dir($path . '/modules/' . $this->moduleNameLower)) { + $paths[] = $path . '/modules/' . $this->moduleNameLower; + } + } + return $paths; + } +} diff --git a/Modules/People/Providers/RouteServiceProvider.php b/Modules/People/Providers/RouteServiceProvider.php new file mode 100644 index 00000000..e242d01b --- /dev/null +++ b/Modules/People/Providers/RouteServiceProvider.php @@ -0,0 +1,69 @@ +mapApiRoutes(); + + $this->mapWebRoutes(); + } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::middleware('web') + ->namespace($this->moduleNamespace) + ->group(module_path('People', '/Routes/web.php')); + } + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::prefix('api') + ->middleware('api') + ->namespace($this->moduleNamespace) + ->group(module_path('People', '/Routes/api.php')); + } +} diff --git a/Modules/People/Resources/assets/.gitkeep b/Modules/People/Resources/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Resources/assets/js/app.js b/Modules/People/Resources/assets/js/app.js new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Resources/assets/sass/app.scss b/Modules/People/Resources/assets/sass/app.scss new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Resources/lang/.gitkeep b/Modules/People/Resources/lang/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Resources/views/.gitkeep b/Modules/People/Resources/views/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Resources/views/customers/create.blade.php b/Modules/People/Resources/views/customers/create.blade.php new file mode 100644 index 00000000..577bb3c9 --- /dev/null +++ b/Modules/People/Resources/views/customers/create.blade.php @@ -0,0 +1,78 @@ +@extends('layouts.app') + +@section('title', 'Create Customer') + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+ @csrf +
+
+ @include('utils.alerts') +
+ +
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+@endsection + diff --git a/Modules/People/Resources/views/customers/edit.blade.php b/Modules/People/Resources/views/customers/edit.blade.php new file mode 100644 index 00000000..8573c4a3 --- /dev/null +++ b/Modules/People/Resources/views/customers/edit.blade.php @@ -0,0 +1,79 @@ +@extends('layouts.app') + +@section('title', 'Edit Customer') + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+ @csrf + @method('patch') +
+
+ @include('utils.alerts') +
+ +
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+@endsection + diff --git a/Modules/People/Resources/views/customers/index.blade.php b/Modules/People/Resources/views/customers/index.blade.php new file mode 100644 index 00000000..d604aa37 --- /dev/null +++ b/Modules/People/Resources/views/customers/index.blade.php @@ -0,0 +1,40 @@ +@extends('layouts.app') + +@section('title', 'Customers') + +@section('third_party_stylesheets') + +@endsection + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+
+
+
+ + Add Customer + + +
+ +
+ {!! $dataTable->table() !!} +
+
+
+
+
+
+@endsection + +@push('page_scripts') + {!! $dataTable->scripts() !!} +@endpush diff --git a/Modules/People/Resources/views/customers/partials/actions.blade.php b/Modules/People/Resources/views/customers/partials/actions.blade.php new file mode 100644 index 00000000..29a8fe39 --- /dev/null +++ b/Modules/People/Resources/views/customers/partials/actions.blade.php @@ -0,0 +1,24 @@ +@can('edit_customers') + + + +@endcan +@can('show_customers') + + + +@endcan +@can('delete_customers') + +@endcan diff --git a/Modules/People/Resources/views/customers/show.blade.php b/Modules/People/Resources/views/customers/show.blade.php new file mode 100644 index 00000000..a72a8b21 --- /dev/null +++ b/Modules/People/Resources/views/customers/show.blade.php @@ -0,0 +1,53 @@ +@extends('layouts.app') + +@section('title', 'Customer Details') + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Customer Name{{ $customer->customer_name }}
Customer Email{{ $customer->customer_email }}
Customer Phone{{ $customer->customer_phone }}
City{{ $customer->city }}
Country{{ $customer->country }}
Address{{ $customer->address }}
+
+
+
+
+
+
+@endsection + diff --git a/Modules/People/Resources/views/suppliers/create.blade.php b/Modules/People/Resources/views/suppliers/create.blade.php new file mode 100644 index 00000000..92c39b81 --- /dev/null +++ b/Modules/People/Resources/views/suppliers/create.blade.php @@ -0,0 +1,78 @@ +@extends('layouts.app') + +@section('title', 'Create Supplier') + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+ @csrf +
+
+ @include('utils.alerts') +
+ +
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+@endsection + diff --git a/Modules/People/Resources/views/suppliers/edit.blade.php b/Modules/People/Resources/views/suppliers/edit.blade.php new file mode 100644 index 00000000..3026a934 --- /dev/null +++ b/Modules/People/Resources/views/suppliers/edit.blade.php @@ -0,0 +1,79 @@ +@extends('layouts.app') + +@section('title', 'Update Supplier') + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+ @csrf + @method('patch') +
+
+ @include('utils.alerts') +
+ +
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+@endsection + diff --git a/Modules/People/Resources/views/suppliers/index.blade.php b/Modules/People/Resources/views/suppliers/index.blade.php new file mode 100644 index 00000000..ea01d0b0 --- /dev/null +++ b/Modules/People/Resources/views/suppliers/index.blade.php @@ -0,0 +1,40 @@ +@extends('layouts.app') + +@section('title', 'Suppliers') + +@section('third_party_stylesheets') + +@endsection + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+
+
+
+ + Add Supplier + + +
+ +
+ {!! $dataTable->table() !!} +
+
+
+
+
+
+@endsection + +@push('page_scripts') + {!! $dataTable->scripts() !!} +@endpush diff --git a/Modules/People/Resources/views/suppliers/partials/actions.blade.php b/Modules/People/Resources/views/suppliers/partials/actions.blade.php new file mode 100644 index 00000000..ec1989e7 --- /dev/null +++ b/Modules/People/Resources/views/suppliers/partials/actions.blade.php @@ -0,0 +1,24 @@ +@can('edit_suppliers') + + + +@endcan +@can('show_suppliers') + + + +@endcan +@can('delete_suppliers') + +@endcan diff --git a/Modules/People/Resources/views/suppliers/show.blade.php b/Modules/People/Resources/views/suppliers/show.blade.php new file mode 100644 index 00000000..240d5572 --- /dev/null +++ b/Modules/People/Resources/views/suppliers/show.blade.php @@ -0,0 +1,53 @@ +@extends('layouts.app') + +@section('title', 'Supplier Details') + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Supplier Name{{ $supplier->supplier_name }}
Supplier Email{{ $supplier->supplier_email }}
Supplier Phone{{ $supplier->supplier_phone }}
City{{ $supplier->city }}
Country{{ $supplier->country }}
Address{{ $supplier->address }}
+
+
+
+
+
+
+@endsection + diff --git a/Modules/People/Routes/.gitkeep b/Modules/People/Routes/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Routes/api.php b/Modules/People/Routes/api.php new file mode 100644 index 00000000..464dc1c3 --- /dev/null +++ b/Modules/People/Routes/api.php @@ -0,0 +1,18 @@ +get('/people', function (Request $request) { + return $request->user(); +}); \ No newline at end of file diff --git a/Modules/People/Routes/web.php b/Modules/People/Routes/web.php new file mode 100644 index 00000000..1a4751a7 --- /dev/null +++ b/Modules/People/Routes/web.php @@ -0,0 +1,21 @@ + 'auth'], function () { + + //Customers + Route::resource('customers', 'CustomersController'); + //Suppliers + Route::resource('suppliers', 'SuppliersController'); + +}); diff --git a/Modules/People/Tests/Feature/.gitkeep b/Modules/People/Tests/Feature/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/Tests/Unit/.gitkeep b/Modules/People/Tests/Unit/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Modules/People/composer.json b/Modules/People/composer.json new file mode 100644 index 00000000..1b7971f9 --- /dev/null +++ b/Modules/People/composer.json @@ -0,0 +1,23 @@ +{ + "name": "nwidart/people", + "description": "", + "authors": [ + { + "name": "Nicolas Widart", + "email": "n.widart@gmail.com" + } + ], + "extra": { + "laravel": { + "providers": [], + "aliases": { + + } + } + }, + "autoload": { + "psr-4": { + "Modules\\People\\": "" + } + } +} diff --git a/Modules/People/module.json b/Modules/People/module.json new file mode 100644 index 00000000..2f9396be --- /dev/null +++ b/Modules/People/module.json @@ -0,0 +1,13 @@ +{ + "name": "People", + "alias": "people", + "description": "", + "keywords": [], + "priority": 0, + "providers": [ + "Modules\\People\\Providers\\PeopleServiceProvider" + ], + "aliases": {}, + "files": [], + "requires": [] +} diff --git a/Modules/People/package.json b/Modules/People/package.json new file mode 100644 index 00000000..4599509f --- /dev/null +++ b/Modules/People/package.json @@ -0,0 +1,17 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch-poll": "npm run watch -- --watch-poll", + "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", + "prod": "npm run production", + "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" + }, + "devDependencies": { + "cross-env": "^7.0", + "laravel-mix": "^5.0.1", + "laravel-mix-merge-manifest": "^0.1.2" + } +} diff --git a/Modules/People/webpack.mix.js b/Modules/People/webpack.mix.js new file mode 100644 index 00000000..a5ad5bc2 --- /dev/null +++ b/Modules/People/webpack.mix.js @@ -0,0 +1,14 @@ +const dotenvExpand = require('dotenv-expand'); +dotenvExpand(require('dotenv').config({ path: '../../.env'/*, debug: true*/})); + +const mix = require('laravel-mix'); +require('laravel-mix-merge-manifest'); + +mix.setPublicPath('../../public').mergeManifest(); + +mix.js(__dirname + '/Resources/assets/js/app.js', 'js/people.js') + .sass( __dirname + '/Resources/assets/sass/app.scss', 'css/people.css'); + +if (mix.inProduction()) { + mix.version(); +} diff --git a/app/DataTables/CustomersDataTable.php b/app/DataTables/CustomersDataTable.php new file mode 100644 index 00000000..9680ab63 --- /dev/null +++ b/app/DataTables/CustomersDataTable.php @@ -0,0 +1,70 @@ +eloquent($query) + ->addColumn('action', function ($data) { + return view('people::customers.partials.actions', compact('data')); + }); + } + + public function query(Customer $model) { + return $model->newQuery(); + } + + public function html() { + return $this->builder() + ->setTableId('customers-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->dom("<'row'<'col-md-3'l><'col-md-5 mb-2'B><'col-md-4'f>> . + 'tr' . + <'row'<'col-md-5'i><'col-md-7 mt-2'p>>") + ->orderBy(1) + ->buttons( + Button::make('excel') + ->text(' Excel'), + Button::make('print') + ->text(' Print'), + Button::make('reset') + ->text(' Reset'), + Button::make('reload') + ->text(' Reload') + ); + } + + protected function getColumns() { + return [ + Column::make('customer_name') + ->className('text-center align-middle'), + + Column::make('customer_email') + ->className('text-center align-middle'), + + Column::make('customer_phone') + ->className('text-center align-middle'), + + Column::computed('action') + ->exportable(false) + ->printable(false) + ->className('text-center align-middle') + ]; + } + + protected function filename() { + return 'Customers_' . date('YmdHis'); + } +} diff --git a/app/DataTables/SuppliersDataTable.php b/app/DataTables/SuppliersDataTable.php new file mode 100644 index 00000000..3c15d229 --- /dev/null +++ b/app/DataTables/SuppliersDataTable.php @@ -0,0 +1,70 @@ +eloquent($query) + ->addColumn('action', function ($data) { + return view('people::suppliers.partials.actions', compact('data')); + }); + } + + public function query(Supplier $model) { + return $model->newQuery(); + } + + public function html() { + return $this->builder() + ->setTableId('suppliers-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->dom("<'row'<'col-md-3'l><'col-md-5 mb-2'B><'col-md-4'f>> . + 'tr' . + <'row'<'col-md-5'i><'col-md-7 mt-2'p>>") + ->orderBy(1) + ->buttons( + Button::make('excel') + ->text(' Excel'), + Button::make('print') + ->text(' Print'), + Button::make('reset') + ->text(' Reset'), + Button::make('reload') + ->text(' Reload') + ); + } + + protected function getColumns() { + return [ + Column::make('supplier_name') + ->className('text-center align-middle'), + + Column::make('supplier_email') + ->className('text-center align-middle'), + + Column::make('supplier_phone') + ->className('text-center align-middle'), + + Column::computed('action') + ->exportable(false) + ->printable(false) + ->className('text-center align-middle') + ]; + } + + protected function filename() { + return 'Suppliers_' . date('YmdHis'); + } +} diff --git a/modules_statuses.json b/modules_statuses.json index 760c4478..9b1e5eb0 100644 --- a/modules_statuses.json +++ b/modules_statuses.json @@ -3,5 +3,6 @@ "Upload": true, "User": true, "Adjustment": true, - "Expense": true + "Expense": true, + "People": true } \ No newline at end of file diff --git a/resources/views/layouts/menu.blade.php b/resources/views/layouts/menu.blade.php index 928fca44..d4753ff6 100644 --- a/resources/views/layouts/menu.blade.php +++ b/resources/views/layouts/menu.blade.php @@ -62,31 +62,6 @@ @endcan -@can('access_user_management') -
  • - - User Management - - -
  • -@endcan - @can('access_expenses')
  • @@ -115,3 +90,52 @@
  • @endcan + +@can('access_customers|access_suppliers') +
  • + + People + + +
  • +@endcan + +@can('access_user_management') +
  • + + User Management + + +
  • +@endcan