Lead.php 873 B

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace App\Models;
  3. /*
  4. * Lead — заявка, поступившая с веб-формы.
  5. * Таблица: leads
  6. * Поле data — JSON-объект: {field_name: value, ...}
  7. * read_at — null = новая (непросмотренная) заявка
  8. */
  9. use Illuminate\Database\Eloquent\Model;
  10. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  11. class Lead extends Model
  12. {
  13. protected $fillable = ['form_id', 'data', 'ip'];
  14. protected $casts = [
  15. 'data' => 'array',
  16. 'read_at' => 'datetime',
  17. ];
  18. public function form(): BelongsTo
  19. {
  20. return $this->belongsTo(WebForm::class, 'form_id');
  21. }
  22. // Пометить заявку как просмотренную
  23. public function markAsRead(): void
  24. {
  25. if (! $this->read_at) {
  26. $this->update(['read_at' => now()]);
  27. }
  28. }
  29. }