35 lines
1.5 KiB
PHP
35 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\V2\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\MailDailyReport;
|
|
use App\Models\MailMessage;
|
|
use App\Models\MailQuotaBucket;
|
|
use App\Services\MailFlow\Settings;
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
class MailFlowController extends Controller
|
|
{
|
|
public function incoming(\Illuminate\Http\Request $request)
|
|
{
|
|
$data = $request->validate(['id' => 'required|integer|min:1']);
|
|
$message = MailMessage::where('direction', 'in')->findOrFail($data['id']);
|
|
return $this->success(['email' => $message->email, 'subject' => $message->subject, 'text' => $message->payload['text'] ?? '']);
|
|
}
|
|
|
|
public function status()
|
|
{
|
|
$ready = Schema::hasTable('v2_mail_messages') && Schema::hasTable('v2_mail_quota_buckets') && Schema::hasTable('v2_mail_daily_reports');
|
|
return $this->success([
|
|
'automatic_mail_level' => \App\Services\MailFlow\AutomaticMailPolicy::state()['level'] ?? null,
|
|
'settings' => Settings::publicSettings(), 'database_ready' => $ready,
|
|
'imap_available' => function_exists('imap_open'),
|
|
'quota' => $ready ? MailQuotaBucket::where('resets_at', '>', now())->get() : [],
|
|
'messages' => $ready ? MailMessage::whereIn('direction', ['in', 'out'])->latest('id')->limit(50)
|
|
->get(['id', 'direction', 'purpose', 'channel', 'email', 'status', 'error_code', 'fallback_reason', 'created_at']) : [],
|
|
'reports' => $ready ? MailDailyReport::latest('id')->limit(7)->get() : [],
|
|
]);
|
|
}
|
|
}
|