File manager - Edit - /home/autoph/public_html/projects/aha-api/app/Models/Survey.php
Back
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use OwenIt\Auditing\Contracts\Auditable; use Illuminate\Database\Eloquent\SoftDeletes; use OwenIt\Auditing\Auditable as AuditableTrait; use Illuminate\Database\Eloquent\Factories\HasFactory; class Survey extends Model implements Auditable { use HasFactory, SoftDeletes, AuditableTrait; /** * The attributes that are NOT mass assignable. * */ protected $guarded = ['deleted_at']; /** * The attributes that should be cast. * * @var array<string, string> */ protected $casts = [ 'settings' => 'array', 'isActive' => 'boolean', ]; /** * The survey sections. * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function sections() { return $this->hasMany(SurveySection::class); } /** * The survey questions. * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function questions() { return $this->hasMany(SurveyQuestion::class); } /** * The survey entries. * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function entries() { return $this->hasMany(SurveyEntry::class); } /** * Check if survey accepts guest entries. * * @return bool */ public function acceptsGuestEntries() { return $this->settings['accept-guest-entries'] ?? false; } /** * The maximum number of entries a customer may submit. * * @return int|null */ public function limitPerCustomer() { $limit = $this->settings['limit-per-customer'] ?? 1; return $limit !== -1 ? $limit : null; } /** * Survey entries by a customer. * * @param Model $customer * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function entriesFrom(Model $customer) { return $this->entries()->where('customer_id', $customer->id); } /** * Last survey entry by a customer. * * @param Model $customer * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function lastEntry(Model $customer) { return $this->entriesFrom($customer)->first(); } /** * Check if a customer is eligible to submit the survey. * * @param Model|null $model * @return bool */ public function isEligible(Model $customer) { if ($this->limitPerCustomer() === null) { return true; } return $this->limitPerCustomer() > $this->entriesFrom($customer)->count(); } /** * Combined validation rules of the survey. * * @return mixed */ public function getRulesAttribute() { return $this->questions->mapWithKeys(function ($question) { return [$question->key => $question->rules]; })->all(); } public function scopeActive($query) { return $query->where('isActive', true); } }
| ver. 1.4 |
.
| PHP 8.1.32 | Generation time: 0 |
proxy
|
phpinfo
|
Settings