Add stubs for various Laravel components and scaffolding

- Created stubs for JavaScript and SASS assets.
- Added stubs for channel, command, component, controller, event, factory, job, listener, mail, middleware, migration, model, notification, observer, policy, request, resource, route provider, seeder, and validation rule.
- Implemented scaffolding for configuration, service provider, and Vite integration.
- Included example views for module structure.
- Introduced a module loader for Vite to handle asset paths dynamically.
This commit is contained in:
baodev0
2026-05-29 09:28:08 +07:00
parent fccb0c353a
commit 6bb4a47bfb
89 changed files with 3355 additions and 4560 deletions
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api\Admin\Transaction;
use App\Enums\TransactionStatus;
use App\Http\Controllers\Controller;
use App\Mail\Customer\ManualDepositStatus;
use App\Models\Notification;
use App\Models\Log;
use App\Models\Transaction;
@@ -11,6 +12,7 @@ use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log as FacadesLog;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Storage;
class AdminTransactionController extends Controller
@@ -126,6 +128,28 @@ class AdminTransactionController extends Controller
]);
DB::commit();
try {
Mail::to($customer->email)->send(new ManualDepositStatus([
'customer_id' => $customer->id,
'customer_email' => $customer->email,
'customer_name' => $customer->fullname,
'transaction_code' => $transaction->public_code,
'amount' => $transaction->amount,
'status_label' => 'Đã duyệt',
'status_color' => '#15803d',
'status_bg' => '#f0fdf4',
'subject' => 'Yêu cầu nạp tiền đã được duyệt - ' . $transaction->public_code,
'status_message' => 'Yêu cầu nạp tiền của bạn đã được duyệt. Số tiền đã được cộng vào tài khoản và có thể sử dụng ngay.',
'deposit_date' => $transaction->created_at?->format('d/m/Y H:i:s') ?? now()->format('d/m/Y H:i:s'),
'processed_date' => now()->format('d/m/Y H:i:s'),
]));
} catch (\Throwable $e) {
FacadesLog::error('Không thể gửi email duyệt nạp tiền thủ công: ' . $e->getMessage(), [
'transaction_code' => $transaction->public_code,
'customer_email' => $customer->email,
]);
}
} catch (\Exception $e) {
DB::rollBack();
FacadesLog::error('AdminTransactionController::approve error: ' . $e->getMessage());
@@ -172,6 +196,28 @@ class AdminTransactionController extends Controller
]);
DB::commit();
try {
Mail::to($customer->email)->send(new ManualDepositStatus([
'customer_id' => $customer->id,
'customer_email' => $customer->email,
'customer_name' => $customer->fullname,
'transaction_code' => $transaction->public_code,
'amount' => $transaction->amount,
'status_label' => 'Không phù hợp',
'status_color' => '#b91c1c',
'status_bg' => '#fef2f2',
'subject' => 'Yêu cầu nạp tiền không phù hợp - ' . $transaction->public_code,
'status_message' => 'Yêu cầu nạp tiền của bạn chưa phù hợp để được duyệt. Vui lòng kiểm tra lại chứng từ hoặc liên hệ bộ phận hỗ trợ để được hướng dẫn thêm.',
'deposit_date' => $transaction->created_at?->format('d/m/Y H:i:s') ?? now()->format('d/m/Y H:i:s'),
'processed_date' => now()->format('d/m/Y H:i:s'),
]));
} catch (\Throwable $e) {
FacadesLog::error('Không thể gửi email từ chối nạp tiền thủ công: ' . $e->getMessage(), [
'transaction_code' => $transaction->public_code,
'customer_email' => $customer->email,
]);
}
} catch (\Exception $e) {
DB::rollBack();
FacadesLog::error('AdminTransactionController::reject error: ' . $e->getMessage());