Added "auto_mailer" to mail profile so user can select which profiles are appropriate for auto mails to cliens through activities
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -26,7 +26,7 @@ public function index(): Response
|
||||
->orderBy('priority')
|
||||
->orderBy('id')
|
||||
->get([
|
||||
'id', 'name', 'active', 'host', 'port', 'username', 'from_name', 'encryption', 'from_address', 'priority', 'signature', 'last_success_at', 'last_error_at', 'last_error_message', 'test_status', 'test_checked_at',
|
||||
'id', 'name', 'active', 'auto_mailer', 'host', 'port', 'username', 'from_name', 'encryption', 'from_address', 'priority', 'signature', 'last_success_at', 'last_error_at', 'last_error_message', 'test_status', 'test_checked_at',
|
||||
]);
|
||||
|
||||
return Inertia::render('Admin/MailProfiles/Index', [
|
||||
@@ -76,6 +76,15 @@ public function toggle(Request $request, MailProfile $mailProfile)
|
||||
return back()->with('success', 'Status updated');
|
||||
}
|
||||
|
||||
public function toggleAutoMailer(Request $request, MailProfile $mailProfile)
|
||||
{
|
||||
$this->authorize('update', $mailProfile);
|
||||
$mailProfile->auto_mailer = ! $mailProfile->auto_mailer;
|
||||
$mailProfile->save();
|
||||
|
||||
return back()->with('success', 'Auto-mailer updated');
|
||||
}
|
||||
|
||||
public function test(Request $request, MailProfile $mailProfile)
|
||||
{
|
||||
$this->authorize('test', $mailProfile);
|
||||
|
||||
@@ -28,6 +28,7 @@ public function rules(): array
|
||||
'max_daily_quota' => ['nullable', 'integer', 'min:0'],
|
||||
'signature' => ['nullable', 'array'],
|
||||
'signature.*' => ['nullable', 'string', 'max:1000'],
|
||||
'auto_mailer' => ['nullable', 'boolean'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ public function rules(): array
|
||||
'active' => ['nullable', 'boolean'],
|
||||
'signature' => ['nullable', 'array'],
|
||||
'signature.*' => ['nullable', 'string', 'max:1000'],
|
||||
'auto_mailer' => ['nullable', 'boolean'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,13 +10,14 @@ class MailProfile extends Model
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'name', 'active', 'host', 'port', 'encryption', 'username', 'from_address', 'from_name',
|
||||
'name', 'active', 'auto_mailer', 'host', 'port', 'encryption', 'username', 'from_address', 'from_name',
|
||||
'reply_to_address', 'reply_to_name', 'priority', 'signature', 'max_daily_quota', 'emails_sent_today',
|
||||
'last_success_at', 'last_error_at', 'last_error_message', 'failover_to_id', 'test_status', 'test_checked_at',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'active' => 'boolean',
|
||||
'auto_mailer' => 'boolean',
|
||||
'signature' => 'array',
|
||||
'last_success_at' => 'datetime',
|
||||
'last_error_at' => 'datetime',
|
||||
|
||||
@@ -100,6 +100,12 @@ public function maybeQueue(Activity $activity, bool $sendFlag = true, array $opt
|
||||
$mailProfile = isset($options['mail_profile_id'])
|
||||
? MailProfile::query()->find($options['mail_profile_id'])
|
||||
: null;
|
||||
$mailProfile ??= MailProfile::query()
|
||||
->where('active', true)
|
||||
->where('auto_mailer', true)
|
||||
->orderBy('priority')
|
||||
->orderBy('id')
|
||||
->first();
|
||||
$mailProfile ??= MailProfile::query()
|
||||
->where('active', true)
|
||||
->orderBy('priority')
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('mail_profiles', function (Blueprint $table): void {
|
||||
$table->boolean('auto_mailer')->default(false)->after('active');
|
||||
});
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('mail_profiles', function (Blueprint $table): void {
|
||||
$table->dropColumn('auto_mailer');
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -99,6 +99,7 @@ const form = useForm({
|
||||
from_address: "",
|
||||
from_name: "",
|
||||
priority: 10,
|
||||
auto_mailer: false,
|
||||
});
|
||||
|
||||
function openCreate() {
|
||||
@@ -120,6 +121,7 @@ function openEdit(p) {
|
||||
form.from_address = p.from_address || "";
|
||||
form.from_name = p.from_name || "";
|
||||
form.priority = p.priority ?? 10;
|
||||
form.auto_mailer = p.auto_mailer ?? false;
|
||||
editTarget.value = p;
|
||||
signatureItems.value = signatureFromObject(p.signature);
|
||||
editOpen.value = true;
|
||||
@@ -159,6 +161,7 @@ function submitEdit() {
|
||||
from_address: form.from_address,
|
||||
from_name: form.from_name || null,
|
||||
priority: form.priority,
|
||||
auto_mailer: form.auto_mailer,
|
||||
signature: signatureToObject(),
|
||||
};
|
||||
if (form.password && form.password.trim() !== "") {
|
||||
@@ -181,6 +184,12 @@ function toggleActive(p) {
|
||||
.then(() => window.location.reload());
|
||||
}
|
||||
|
||||
function toggleAutoMailer(p) {
|
||||
window.axios
|
||||
.post(route("admin.mail-profiles.toggle-auto-mailer", p.id))
|
||||
.then(() => window.location.reload());
|
||||
}
|
||||
|
||||
function testConnection(p) {
|
||||
window.axios
|
||||
.post(route("admin.mail-profiles.test", p.id))
|
||||
@@ -238,6 +247,7 @@ const statusClass = (p) => {
|
||||
<TableHead class="text-center">Port</TableHead>
|
||||
<TableHead class="text-center">Enc</TableHead>
|
||||
<TableHead class="text-center">Aktivno</TableHead>
|
||||
<TableHead class="text-center">Auto-mailer</TableHead>
|
||||
<TableHead class="text-center">Status</TableHead>
|
||||
<TableHead>Zadnji uspeh</TableHead>
|
||||
<TableHead>Napaka</TableHead>
|
||||
@@ -261,6 +271,12 @@ const statusClass = (p) => {
|
||||
@update:model-value="() => toggleActive(p)"
|
||||
/>
|
||||
</TableCell>
|
||||
<TableCell class="text-center">
|
||||
<Switch
|
||||
:default-value="p.auto_mailer"
|
||||
@update:model-value="() => toggleAutoMailer(p)"
|
||||
/>
|
||||
</TableCell>
|
||||
<TableCell class="text-center">
|
||||
<Badge
|
||||
v-if="p.test_status === 'success'"
|
||||
@@ -382,6 +398,14 @@ const statusClass = (p) => {
|
||||
<Label for="create-priority">Prioriteta</Label>
|
||||
<Input id="create-priority" v-model.number="form.priority" type="number" />
|
||||
</div>
|
||||
<div class="flex items-center gap-3">
|
||||
<Switch
|
||||
id="create-auto-mailer"
|
||||
:model-value="form.auto_mailer"
|
||||
@update:model-value="(val) => (form.auto_mailer = val)"
|
||||
/>
|
||||
<Label for="create-auto-mailer">Auto-mailer</Label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="space-y-2">
|
||||
@@ -487,6 +511,14 @@ const statusClass = (p) => {
|
||||
<Label for="edit-priority">Prioriteta</Label>
|
||||
<Input id="edit-priority" v-model.number="form.priority" type="number" />
|
||||
</div>
|
||||
<div class="flex items-center gap-3">
|
||||
<Switch
|
||||
id="edit-auto-mailer"
|
||||
:model-value="form.auto_mailer"
|
||||
@update:model-value="(val) => (form.auto_mailer = val)"
|
||||
/>
|
||||
<Label for="edit-auto-mailer">Auto-mailer</Label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="space-y-2">
|
||||
|
||||
@@ -114,6 +114,7 @@
|
||||
Route::post('mail-profiles', [\App\Http\Controllers\Admin\MailProfileController::class, 'store'])->name('mail-profiles.store');
|
||||
Route::put('mail-profiles/{mailProfile}', [\App\Http\Controllers\Admin\MailProfileController::class, 'update'])->name('mail-profiles.update');
|
||||
Route::post('mail-profiles/{mailProfile}/toggle', [\App\Http\Controllers\Admin\MailProfileController::class, 'toggle'])->name('mail-profiles.toggle');
|
||||
Route::post('mail-profiles/{mailProfile}/toggle-auto-mailer', [\App\Http\Controllers\Admin\MailProfileController::class, 'toggleAutoMailer'])->name('mail-profiles.toggle-auto-mailer');
|
||||
Route::post('mail-profiles/{mailProfile}/test', [\App\Http\Controllers\Admin\MailProfileController::class, 'test'])->name('mail-profiles.test');
|
||||
Route::post('mail-profiles/{mailProfile}/send-test', [\App\Http\Controllers\Admin\MailProfileController::class, 'sendTest'])->name('mail-profiles.send-test');
|
||||
Route::delete('mail-profiles/{mailProfile}', [\App\Http\Controllers\Admin\MailProfileController::class, 'destroy'])->name('mail-profiles.destroy');
|
||||
|
||||
Reference in New Issue
Block a user