PHP 7.4.33
Preview: EmailLog.php Size: 2.66 KB
/var/www/multi-event-cfp.bitkit.dk/httpdocs/app/Models/EmailLog.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\AsArrayObject;

class EmailLog extends Model
{
    use HasFactory;

    protected $fillable = [
        'event_id',
        'email_type',
        'reference_id',
        'reference_table',
        'recipient',
        'subject',
        'body',
        'bcc',
        'status',
        'sent_at',
        'failed_at',
        'failure_reason',
        'failure_details',
        'retry_count',
        'max_retries',
        'sendgrid_message_id',
        'smtp_id',
        'sendgrid_response'
    ];

    protected $casts = [
        'bcc' => AsArrayObject::class,
        'failure_details' => AsArrayObject::class,
        'sendgrid_response' => AsArrayObject::class,
        'sent_at' => 'datetime',
        'failed_at' => 'datetime',
        'created_at' => 'date:Y-m-d H:i:s',
        'updated_at' => 'date:Y-m-d H:i:s'
    ];

    // Relationships
    public function event()
    {
        return $this->belongsTo(Event::class);
    }

    // Scopes
    public function scopeSuccess($query)
    {
        return $query->where('status', 'success');
    }

    public function scopeProcessing($query)
    {
        return $query->where('status', 'processing');
    }

    public function scopeFailed($query)
    {
        return $query->where('status', 'failed');
    }

    public function scopeCanRetry($query)
    {
        return $query->where('status', 'failed')
                    ->whereColumn('retry_count', '<', 'max_retries');
    }

    // Helper methods
    public static function logSuccess($data)
    {
        return self::create(array_merge($data, [
            'status' => 'success',
            'sent_at' => now()
        ]));
    }

    public static function logFailed($data, $reason, $details = null)
    {
        return self::create(array_merge($data, [
            'status' => 'failed',
            'failed_at' => now(),
            'failure_reason' => $reason,
            'failure_details' => $details
        ]));
    }

    public static function logProcessing($data)
    {
        return self::create(array_merge($data, [
            'status' => 'processing'
        ]));
    }

    public function canRetry()
    {
        return $this->status === 'failed' && $this->retry_count < $this->max_retries;
    }

    public function incrementRetry()
    {
        $this->increment('retry_count');
        $this->update([
            'status' => 'processing',
            'sendgrid_message_id' => null,
            'failed_at' => null,
            'failure_reason' => null,
            'failure_details' => null
        ]);
    }
}

Directory Contents

Dirs: 0 × Files: 26
Name Size Perms Modified Actions
2.71 KB lrw-r--r-- 2024-02-09 12:37:30
Edit Download
386 B lrw-r--r-- 2024-02-09 12:37:30
Edit Download
784 B lrw-rw-r-- 2025-04-21 06:11:52
Edit Download
737 B lrw-rw-r-- 2024-02-22 08:11:18
Edit Download
944 B lrw-r--r-- 2024-02-09 12:37:30
Edit Download
2.66 KB lrw-rw-r-- 2025-12-10 09:24:27
Edit Download
3.99 KB lrw-rw-r-- 2025-07-30 10:06:01
Edit Download
2.36 KB lrw-rw-r-- 2026-04-07 05:00:19
Edit Download
1.66 KB lrw-rw-r-- 2024-10-23 04:50:49
Edit Download
496 B lrw-r--r-- 2024-02-09 12:37:30
Edit Download
4.01 KB lrw-r--r-- 2024-02-09 12:37:30
Edit Download
881 B lrw-r--r-- 2024-02-09 12:37:30
Edit Download
1.13 KB lrw-r--r-- 2024-02-09 12:37:30
Edit Download
909 B lrw-r--r-- 2024-02-09 12:37:30
Edit Download
941 B lrw-r--r-- 2024-02-09 12:37:30
Edit Download
1.03 KB lrw-r--r-- 2025-07-28 09:14:47
Edit Download
835 B lrw-r--r-- 2024-02-09 12:37:30
Edit Download
889 B lrw-r--r-- 2024-02-09 12:37:30
Edit Download
2.78 KB lrw-rw-r-- 2026-04-22 04:31:30
Edit Download
945 B lrw-rw-r-- 2024-09-20 05:02:14
Edit Download
2.21 KB lrw-rw-r-- 2024-09-20 05:02:14
Edit Download
972 B lrw-rw-r-- 2024-09-20 05:02:14
Edit Download
893 B lrw-rw-r-- 2026-03-31 07:15:50
Edit Download
659 B lrw-r--r-- 2024-02-09 12:37:30
Edit Download
10.40 KB lrw-rw-r-- 2026-04-30 09:24:18
Edit Download
574 B lrw-rw-r-- 2024-12-03 04:36:57
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).