add setting destination email

twopenny
ajikamaludin 2 years ago
parent ecb336ffec
commit 4e225157ef
Signed by: ajikamaludin
GPG Key ID: 476C9A2B4B794EBB

@ -0,0 +1,27 @@
<?php
namespace App\Http\Controllers;
use App\Models\Setting;
use Illuminate\Http\Request;
class SettingController extends Controller
{
public function index()
{
return inertia('Setting/Index', [
'settings' => Setting::all(),
]);
}
public function update(Request $request)
{
$request->validate([
'email' => 'required|email',
]);
Setting::where('key', 'DESTINATION_MAIL')->update([
'value' => $request->email,
]);
}
}

@ -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());
}
}

@ -8,4 +8,9 @@ use Illuminate\Database\Eloquent\Model;
class Setting extends Model
{
use HasFactory;
protected $fillable = [
'key',
'value'
];
}

@ -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'
]);
}
}

@ -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 }) {

@ -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 (
<AuthenticatedLayout
auth={props.auth}
errors={props.errors}
flash={props.flash}
notify={props.notify}
>
<Head title="Setting" />
<div className="flex flex-col w-full sm:px-6 lg:px-8 space-y-2">
<div className="card bg-base-100 w-full">
<div className="card-body">
<div className="form-control">
<label className="label">
<span className="label-text font-semibold">Email</span>
</label>
<input
type="text"
placeholder="email"
className={`input input-bordered ${
errors.email && 'input-error'
}`}
name="email"
value={data.email}
onChange={handleOnChange}
/>
<label className="label">
<span className="label-text-alt text-red-600">{errors.email}</span>
</label>
</div>
<div
onClick={handleSubmit}
className="btn btn-primary"
disabled={processing}
>
Simpan
</div>
</div>
</div>
</div>
</AuthenticatedLayout>
);
}

@ -5,6 +5,7 @@ use App\Http\Controllers\DocumentController;
use App\Http\Controllers\GeneralController;
use App\Http\Controllers\NotificationController;
use App\Http\Controllers\RoleController;
use App\Http\Controllers\SettingController;
use App\Http\Controllers\TypeController;
use Illuminate\Foundation\Application;
use Illuminate\Support\Facades\Route;
@ -50,16 +51,16 @@ Route::middleware(['auth'])->group(function () {
Route::delete('/categories/{category}', [CategoryController::class, 'destroy'])->name('categories.destroy');
Route::get('/docs', [DocumentController::class, 'index'])->name('docs.index');
Route::get('/docs/export', [DocumentController::class, 'export'])->name('docs.export');
Route::get('/docs/create', [DocumentController::class, 'create'])->name('docs.create');
Route::post('/docs', [DocumentController::class, 'store'])->name('docs.store');
Route::delete('/docs/{doc}', [DocumentController::class, 'destroy'])->name('docs.destroy');
Route::get('/docs/{doc}', [DocumentController::class, 'edit'])->name('docs.edit');
Route::post('/docs/{doc}', [DocumentController::class, 'update'])->name('docs.update');
Route::get('/docs/{doc}/show', [DocumentController::class, 'show'])->name('docs.show');
Route::post('/docs/{doc}/share', [DocumentController::class, 'share'])->name('docs.share');
Route::get('/notification/{notification}', [NotificationController::class, 'redirect'])->name('notification.redirect');
Route::get('/setting', [SettingController::class, 'index'])->name('setting.index');
Route::post('/setting', [SettingController::class, 'update'])->name('setting.update');
});
require __DIR__.'/auth.php';

Loading…
Cancel
Save