EmailScheduledRecipient.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Factories\HasFactory;
  4. use Illuminate\Database\Eloquent\Model;
  5. class EmailScheduledRecipient extends Model
  6. {
  7. use HasFactory;
  8. protected $fillable = [
  9. 'email_scheduled_id',
  10. 'user_id',
  11. 'email_address',
  12. 'status',
  13. 'error_message',
  14. 'sent_at'
  15. ];
  16. protected $casts = [
  17. 'sent_at' => 'datetime',
  18. 'created_at' => 'datetime',
  19. 'updated_at' => 'datetime',
  20. ];
  21. public function scheduledEmail()
  22. {
  23. return $this->belongsTo(EmailScheduled::class, 'email_scheduled_id');
  24. }
  25. public function user()
  26. {
  27. return $this->belongsTo(User::class);
  28. }
  29. public function markAsSent()
  30. {
  31. $this->update([
  32. 'status' => 'sent',
  33. 'sent_at' => now()
  34. ]);
  35. }
  36. public function markAsFailed($errorMessage = null)
  37. {
  38. $this->update([
  39. 'status' => 'failed',
  40. 'error_message' => $errorMessage
  41. ]);
  42. }
  43. public function markAsBounced($errorMessage = null)
  44. {
  45. $this->update([
  46. 'status' => 'bounced',
  47. 'error_message' => $errorMessage
  48. ]);
  49. }
  50. }