feat: send information via email when accept or reject account
This commit is contained in:
parent
63d01d90a2
commit
8cd1eb9c00
@ -5,6 +5,7 @@
|
|||||||
use App\Exports\CompanyExport;
|
use App\Exports\CompanyExport;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\CompanyRequest;
|
use App\Http\Requests\CompanyRequest;
|
||||||
|
use App\Mail\AccountVerification;
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Models\LoginHistory;
|
use App\Models\LoginHistory;
|
||||||
use App\Models\Role;
|
use App\Models\Role;
|
||||||
@ -12,6 +13,7 @@
|
|||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Mail;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
|
||||||
class CompanyController extends Controller
|
class CompanyController extends Controller
|
||||||
@ -227,6 +229,8 @@ public function processAcceptAction(Request $request, $id, $type, $category){
|
|||||||
$user->update([
|
$user->update([
|
||||||
'status' => '1'
|
'status' => '1'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
Mail::to($user->email)->send(new AccountVerification($user, 'accepted'));
|
||||||
}else if($category === 'edit-request' && $user->company->edit_status === '1'){
|
}else if($category === 'edit-request' && $user->company->edit_status === '1'){
|
||||||
$user->company->update([
|
$user->company->update([
|
||||||
'edit_status' => '2'
|
'edit_status' => '2'
|
||||||
@ -237,8 +241,6 @@ public function processAcceptAction(Request $request, $id, $type, $category){
|
|||||||
return response()->json([
|
return response()->json([
|
||||||
'message' => 'Berhasil menyetujui'.($category === 'edit-request' ? ' permohonan edit' : '').' perusahaan.'
|
'message' => 'Berhasil menyetujui'.($category === 'edit-request' ? ' permohonan edit' : '').' perusahaan.'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// return redirect()->back()->with('success-status', 'Berhasil menyetujui'.($category === 'edit-request' ? 'permohonan edit' : '').'perusahaan.');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function processRejectAction(Request $request, $id, $type, $category){
|
public function processRejectAction(Request $request, $id, $type, $category){
|
||||||
@ -264,6 +266,8 @@ public function processRejectAction(Request $request, $id, $type, $category){
|
|||||||
$user->company->update([
|
$user->company->update([
|
||||||
'rejection_reason' => $validatedData['rejection_reason']
|
'rejection_reason' => $validatedData['rejection_reason']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
Mail::to($user->email)->send(new AccountVerification($user, 'rejected', $validatedData['rejection_reason']));
|
||||||
}else if($category === 'edit-request' && $user->company->edit_status === '1'){
|
}else if($category === 'edit-request' && $user->company->edit_status === '1'){
|
||||||
$user->company->update([
|
$user->company->update([
|
||||||
'edit_status' => '3',
|
'edit_status' => '3',
|
||||||
|
|||||||
@ -7,11 +7,13 @@
|
|||||||
use App\Http\Requests\ChangePasswordRequest;
|
use App\Http\Requests\ChangePasswordRequest;
|
||||||
use App\Http\Requests\ResetPasswordRequest;
|
use App\Http\Requests\ResetPasswordRequest;
|
||||||
use App\Http\Requests\UserRequest;
|
use App\Http\Requests\UserRequest;
|
||||||
|
use App\Mail\AccountVerification;
|
||||||
use App\Models\LoginHistory;
|
use App\Models\LoginHistory;
|
||||||
use App\Models\Role;
|
use App\Models\Role;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Mail;
|
||||||
|
|
||||||
class UserController extends Controller
|
class UserController extends Controller
|
||||||
{
|
{
|
||||||
@ -223,6 +225,8 @@ public function statusAction(Request $request, $id, $action){
|
|||||||
'status' => '1'
|
'status' => '1'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
Mail::to($user->email)->send(new AccountVerification($user, 'accepted'));
|
||||||
|
|
||||||
return response()->json(['message' => 'Berhasil menyetujui pengguna.']);
|
return response()->json(['message' => 'Berhasil menyetujui pengguna.']);
|
||||||
}else if($action == 'reject'){
|
}else if($action == 'reject'){
|
||||||
|
|
||||||
@ -240,14 +244,13 @@ public function statusAction(Request $request, $id, $action){
|
|||||||
'rejection_reason' => $validatedData['rejection_reason']
|
'rejection_reason' => $validatedData['rejection_reason']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
Mail::to($user->email)->send(new AccountVerification($user, 'rejected', strip_tags($validatedData['rejection_reason'])));
|
||||||
|
|
||||||
return redirect()->back()->with('success-status', 'Berhasil menolak pengguna.');
|
return redirect()->back()->with('success-status', 'Berhasil menolak pengguna.');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// return redirect()->route('dashboard.users.index')->with('success-status', 'Berhasil menyetujui pengguna.');
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setting(){
|
public function setting(){
|
||||||
|
|||||||
59
app/Mail/AccountVerification.php
Normal file
59
app/Mail/AccountVerification.php
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Mail;
|
||||||
|
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Mail\Mailable;
|
||||||
|
use Illuminate\Mail\Mailables\Content;
|
||||||
|
use Illuminate\Mail\Mailables\Envelope;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class AccountVerification extends Mailable
|
||||||
|
{
|
||||||
|
use Queueable, SerializesModels;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new message instance.
|
||||||
|
*/
|
||||||
|
public $status;
|
||||||
|
public $reason;
|
||||||
|
public $user;
|
||||||
|
|
||||||
|
public function __construct($user, $status, $rejectionReason = null)
|
||||||
|
{
|
||||||
|
$this->user = $user;
|
||||||
|
$this->status = $status; // 'accepted' atau 'rejected'
|
||||||
|
$this->reason = $rejectionReason;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the message envelope.
|
||||||
|
*/
|
||||||
|
public function envelope(): Envelope
|
||||||
|
{
|
||||||
|
return new Envelope(
|
||||||
|
subject: $this->status === 'accepted' ? 'Akun Simedkom Anda Disetujui' : 'Akun Simedkom Anda Ditolak'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the message content definition.
|
||||||
|
*/
|
||||||
|
public function content(): Content
|
||||||
|
{
|
||||||
|
return new Content(
|
||||||
|
markdown: 'emails.account.verification',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the attachments for the message.
|
||||||
|
*
|
||||||
|
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
|
||||||
|
*/
|
||||||
|
public function attachments(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -113,6 +113,55 @@
|
|||||||
<span class="profile-ud-value">{{$user->company->profile ?? '-'}}</span>
|
<span class="profile-ud-value">{{$user->company->profile ?? '-'}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="profile-ud-item">
|
||||||
|
<div class="profile-ud wider">
|
||||||
|
<span class="profile-ud-label">Status</span>
|
||||||
|
<span class="profile-ud-value">
|
||||||
|
@switch($user->status)
|
||||||
|
@case(0)
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
|
||||||
|
@break
|
||||||
|
@case(1)
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-success">Diterima</span></span>
|
||||||
|
@break
|
||||||
|
@case(2)
|
||||||
|
<span class="profile-ud-value">
|
||||||
|
<span class="badge bg-danger">
|
||||||
|
<a href="javascript:void(0);" onclick="showDetail({{ json_encode(strip_tags($user->rejection_reason)) }})" class="text-light text-decoration-underline">Ditolak</a>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
@break
|
||||||
|
@default
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
|
||||||
|
@endswitch
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="profile-ud-item">
|
||||||
|
<div class="profile-ud wider">
|
||||||
|
<span class="profile-ud-label">Status Edit</span>
|
||||||
|
<span class="profile-ud-value">
|
||||||
|
@switch($user->company->edit_status)
|
||||||
|
@case(0)
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Ada</span></span>
|
||||||
|
@break
|
||||||
|
@case(1)
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
|
||||||
|
@break
|
||||||
|
@case(2)
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-primary">Diterima</span></span>
|
||||||
|
@break
|
||||||
|
@case(3)
|
||||||
|
<span class="badge bg-danger">
|
||||||
|
<a href="javascript:void(0);" onclick="showDetail({{ json_encode(strip_tags($user->company->edit_rejection_reason)) }})" class="text-light text-decoration-underline">Ditolak</a>
|
||||||
|
</span>
|
||||||
|
@break
|
||||||
|
@default
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
|
||||||
|
@endswitch
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div><!-- .profile-ud-list -->
|
</div><!-- .profile-ud-list -->
|
||||||
</div><!-- .nk-block -->
|
</div><!-- .nk-block -->
|
||||||
{{-- <div class="nk-divider divider md"></div> --}}
|
{{-- <div class="nk-divider divider md"></div> --}}
|
||||||
|
|||||||
@ -100,6 +100,57 @@
|
|||||||
<span class="profile-ud-value">{{$user->company->profile ?? '-'}}</span>
|
<span class="profile-ud-value">{{$user->company->profile ?? '-'}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="profile-ud-item">
|
||||||
|
<div class="profile-ud wider">
|
||||||
|
<span class="profile-ud-label">Status</span>
|
||||||
|
<span class="profile-ud-value">
|
||||||
|
@switch($user->status)
|
||||||
|
@case(0)
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
|
||||||
|
@break
|
||||||
|
@case(1)
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-success">Diterima</span></span>
|
||||||
|
@break
|
||||||
|
@case(2)
|
||||||
|
<span class="profile-ud-value">
|
||||||
|
<span class="badge bg-danger">
|
||||||
|
<a href="javascript:void(0);" onclick="showDetail({{ json_encode(strip_tags($user->rejection_reason)) }})" class="text-light text-decoration-underline">Ditolak</a>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
@break
|
||||||
|
@default
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
|
||||||
|
@endswitch
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="profile-ud-item">
|
||||||
|
<div class="profile-ud wider">
|
||||||
|
<span class="profile-ud-label">Status Edit</span>
|
||||||
|
<span class="profile-ud-value">
|
||||||
|
@switch($user->company->edit_status)
|
||||||
|
@case(0)
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Ada</span></span>
|
||||||
|
@break
|
||||||
|
@case(1)
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-warning">Menunggu</span></span>
|
||||||
|
@break
|
||||||
|
@case(2)
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-primary">Diterima</span></span>
|
||||||
|
@break
|
||||||
|
@case(3)
|
||||||
|
<span class="profile-ud-value">
|
||||||
|
<span class="badge bg-danger">
|
||||||
|
<a href="javascript:void(0);" onclick="showDetail({{ json_encode(strip_tags($user->company->edit_rejection_reason)) }})" class="text-light text-decoration-underline">Ditolak</a>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
@break
|
||||||
|
@default
|
||||||
|
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
|
||||||
|
@endswitch
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div><!-- .profile-ud-list -->
|
</div><!-- .profile-ud-list -->
|
||||||
</div><!-- .nk-block -->
|
</div><!-- .nk-block -->
|
||||||
{{-- <div class="nk-divider divider md"></div> --}}
|
{{-- <div class="nk-divider divider md"></div> --}}
|
||||||
|
|||||||
41
resources/views/emails/account/verification.blade.php
Normal file
41
resources/views/emails/account/verification.blade.php
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
@component('mail::message')
|
||||||
|
# 👋 Halo, {{ $user->name ?? 'Pengguna' }}
|
||||||
|
|
||||||
|
@switch($status)
|
||||||
|
@case('accepted')
|
||||||
|
## ✅ Akun Anda Telah Disetujui!
|
||||||
|
|
||||||
|
Selamat! Akun Anda telah **berhasil diverifikasi** oleh tim kami. Sekarang Anda sudah bisa mengakses seluruh fitur yang tersedia di platform kami.
|
||||||
|
|
||||||
|
@component('mail::button', ['url' => route('login')])
|
||||||
|
Masuk Sekarang
|
||||||
|
@endcomponent
|
||||||
|
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case('rejected')
|
||||||
|
## ❌ Akun Anda Ditolak
|
||||||
|
|
||||||
|
Mohon maaf, akun Anda belum dapat kami setujui saat ini.
|
||||||
|
|
||||||
|
@if ($reason)
|
||||||
|
### 📝 Alasan Penolakan:
|
||||||
|
> {{ $reason }}
|
||||||
|
@endif
|
||||||
|
|
||||||
|
Silakan periksa kembali data dan dokumen yang Anda unggah, lalu ajukan ulang jika diperlukan.
|
||||||
|
|
||||||
|
@component('mail::button', ['url' => route('auth.register')])
|
||||||
|
Ajukan Ulang
|
||||||
|
@endcomponent
|
||||||
|
|
||||||
|
@break
|
||||||
|
@endswitch
|
||||||
|
|
||||||
|
Terima kasih telah mendaftar di {{ config('app.name') }}.
|
||||||
|
Jika ada pertanyaan, jangan ragu untuk menghubungi kami.
|
||||||
|
|
||||||
|
Salam hangat,
|
||||||
|
{{ config('app.name') }}
|
||||||
|
|
||||||
|
@endcomponent
|
||||||
@ -33,11 +33,11 @@
|
|||||||
<div class="col-6 col-lg-2 col-sm-4 xs-mb-30px order-sm-4 order-lg-3">
|
<div class="col-6 col-lg-2 col-sm-4 xs-mb-30px order-sm-4 order-lg-3">
|
||||||
<span class="fs-17 fw-500 d-block text-white mb-5px">Tautan</span>
|
<span class="fs-17 fw-500 d-block text-white mb-5px">Tautan</span>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="javscript: void(0);">Beranda</a></li>
|
<li><a href="javascript: void(0);">Beranda</a></li>
|
||||||
<li><a href="javscript: void(0);">Berita</a></li>
|
<li><a href="javascript: void(0);">Berita</a></li>
|
||||||
<li><a href="javscript: void(0);">Pengumuman</a></li>
|
<li><a href="javascript: void(0);">Pengumuman</a></li>
|
||||||
<li><a href="javscript: void(0);">Tentang Kami</a></li>
|
<li><a href="javascript: void(0);">Tentang Kami</a></li>
|
||||||
<li><a href="javscript: void(0);">Kontak</a></li>
|
<li><a href="javascript: void(0);">Kontak</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- end footer column -->
|
<!-- end footer column -->
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user