diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php
new file mode 100644
index 0000000..4bf85f0
--- /dev/null
+++ b/app/Http/Controllers/SettingController.php
@@ -0,0 +1,27 @@
+ Setting::all(),
+ ]);
+ }
+
+ public function update(Request $request)
+ {
+ $request->validate([
+ 'email' => 'required|email',
+ ]);
+
+ Setting::where('key', 'DESTINATION_MAIL')->update([
+ 'value' => $request->email,
+ ]);
+ }
+}
diff --git a/app/Jobs/DocumentReminder.php b/app/Jobs/DocumentReminder.php
index 358fa5a..6929353 100644
--- a/app/Jobs/DocumentReminder.php
+++ b/app/Jobs/DocumentReminder.php
@@ -3,6 +3,7 @@
namespace App\Jobs;
use App\Mail\DocumentNotification;
+use App\Models\Setting;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
@@ -32,6 +33,7 @@ class DocumentReminder implements ShouldQueue
*/
public function handle()
{
- Mail::to('aji19kamaludin@gmail.com')->send(new DocumentNotification());
+ $email = Setting::where('key', 'DESTINATION_MAIL')->first();
+ Mail::to($email->value)->send(new DocumentNotification());
}
}
diff --git a/app/Models/Setting.php b/app/Models/Setting.php
index 0fe60af..f6d06a3 100644
--- a/app/Models/Setting.php
+++ b/app/Models/Setting.php
@@ -8,4 +8,9 @@ use Illuminate\Database\Eloquent\Model;
class Setting extends Model
{
use HasFactory;
+
+ protected $fillable = [
+ 'key',
+ 'value'
+ ];
}
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index 5605739..2fa9e9e 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -6,6 +6,7 @@ namespace Database\Seeders;
use App\Models\Department;
use App\Models\Permission;
+use App\Models\Setting;
use App\Models\TypeDoc;
use App\Models\User;
use Illuminate\Database\Seeder;
@@ -56,6 +57,7 @@ class DatabaseSeeder extends Seeder
['name' => 'update-user', 'label' => 'Edit User'],
['name' => 'create-user', 'label' => 'Buat User'],
['name' => 'delete-user', 'label' => 'Hapus User'],
+ ['name' => 'view-setting', 'label' => 'Setting'],
];
foreach ($permissions as $permission) {
@@ -71,5 +73,10 @@ class DatabaseSeeder extends Seeder
'password' => bcrypt('password'),
'is_admin' => 1, // admin user
]);
+
+ Setting::create([
+ 'key' => 'DESTINATION_MAIL',
+ 'value' => 'aji19kamaludin@gmail.com'
+ ]);
}
}
diff --git a/resources/js/Layouts/AuthenticatedLayout.jsx b/resources/js/Layouts/AuthenticatedLayout.jsx
index f2dca7c..1da3492 100644
--- a/resources/js/Layouts/AuthenticatedLayout.jsx
+++ b/resources/js/Layouts/AuthenticatedLayout.jsx
@@ -17,6 +17,7 @@ const rs = [
{name:"User", route: "users.index", show: true, permission: 'view-user'},
{name:"Role", route: "roles.index", show: true, permission: 'view-role'},
]},
+ {name: "Setting", route: "setting.index", show: true, permission: 'view-setting'},
]
export default function Authenticated({ auth, children, flash, notify }) {
diff --git a/resources/js/Pages/Setting/Index.jsx b/resources/js/Pages/Setting/Index.jsx
new file mode 100644
index 0000000..80dba88
--- /dev/null
+++ b/resources/js/Pages/Setting/Index.jsx
@@ -0,0 +1,68 @@
+import React from 'react';
+import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout';
+import { Head, useForm } from '@inertiajs/react';
+import { toast } from 'react-toastify';
+
+export default function Dashboard(props) {
+ const { settings } = props
+ const setting = settings.find(s => s.key === 'DESTINATION_MAIL' )
+ const { data, setData, post, processing, errors } = useForm({
+ email: setting.value,
+ })
+
+ const handleOnChange = (event) => {
+ setData(event.target.name, event.target.type === 'checkbox' ? event.target.checked : event.target.value);
+ }
+
+ const handleSubmit = () => {
+ post(route('setting.update'), {
+ onSuccess: () =>
+ Promise.all([
+ toast.success('The Data has been saved'),
+ ]),
+ })
+ }
+
+ return (
+