*/ protected $casts = [ 'status' => FormSubmissionStatus::class, 'review_status' => FormSubmissionReviewStatus::class, 'schema_snapshot' => 'array', 'is_test' => 'bool', 'submitted_at' => 'datetime', 'reviewed_at' => 'datetime', 'anonymised_at' => 'datetime', 'opened_at' => 'datetime', 'first_interacted_at' => 'datetime', 'public_submitter_ip_anonymised_at' => 'datetime', 'schema_version_at_open' => 'int', 'schema_version_at_submit' => 'int', 'submission_duration_seconds' => 'int', 'auto_save_count' => 'int', ]; public function schema(): BelongsTo { return $this->belongsTo(FormSchema::class, 'form_schema_id'); } public function subject(): MorphTo { return $this->morphTo(); } public function submittedBy(): BelongsTo { return $this->belongsTo(User::class, 'submitted_by_user_id'); } public function reviewedBy(): BelongsTo { return $this->belongsTo(User::class, 'reviewed_by_user_id'); } public function values(): HasMany { return $this->hasMany(FormValue::class); } public function sectionStatuses(): HasMany { return $this->hasMany(FormSubmissionSectionStatus::class); } public function delegations(): HasMany { return $this->hasMany(FormSubmissionDelegation::class); } }