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')
+
+ - Home
+ - Customers
+ - Add
+
+@endsection
+
+@section('content')
+
+@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')
+
+ - Home
+ - Customers
+ - Edit
+
+@endsection
+
+@section('content')
+
+@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')
+
+ - Home
+ - Customers
+
+@endsection
+
+@section('content')
+
+@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')
+
+ - Home
+ - Customers
+ - Details
+
+@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')
+
+ - Home
+ - Suppliers
+ - Add
+
+@endsection
+
+@section('content')
+
+@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')
+
+ - Home
+ - Suppliers
+ - Edit
+
+@endsection
+
+@section('content')
+
+@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')
+
+ - Home
+ - Suppliers
+
+@endsection
+
+@section('content')
+
+@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')
+
+ - Home
+ - Suppliers
+ - Details
+
+@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')
-
-@endcan
-
@can('access_expenses')
@endcan
+
+@can('access_customers|access_suppliers')
+
+@endcan
+
+@can('access_user_management')
+
+@endcan