ufutx.dma/app/Models/RegularActivity.php
2026-03-04 14:42:40 +08:00

69 lines
1.8 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class RegularActivity extends BaseModel
{
use HasFactory;
public $fillable = ['title', 'pic', 'date', 'background', "detail_qrcode", 'sign_qrcode', "sign_qrcode2", 'start_time', 'end_time', 'status','is_provide_food','is_need_hand'];
public const ACTIVE_STATUS = "active";
public const ONGOING_STATUS = "ongoing";
public const DONE_STATUS = "done";
public const ACTIVITY_ID = 31;
public const ALPHA_ACTIVITY_ID = 1;
public const DEFAULT_PIC = "https://images.health.ufutx.com/202404/01/cba001fb1709181a524a185183c4d038.jpeg";
public function members()
{
return $this->hasMany(RegularActivityMember::class, 'activity_id', 'id');
}
public function orders()
{
return $this->hasMany(RegularActivityOrder::class, 'activity_id', 'id');
}
public function scopeKeyword($query)
{
$keyword = request()->keyword;
if ($keyword) return $query->where("title", 'like', "%{$keyword}%");
return $query;
}
public function scopeDate($query)
{
$date = request()->date;
if ($date) return $query->where("date", 'like', $date);
return $query;
}
public function scopeValid($query)
{
$now = date("Y-m-d H:i:s");
return $query->where('end_time', '>', $now)->whereNotNull("pic");
}
public function lottery()
{
return $this->morphOne(Lottery::class, 'lotteryable');
}
public function activityQrcodes()
{
return $this->hasMany(RegularActivityQrcode::class, 'activity_id', 'id');
}
public function membersLogs()
{
return $this->hasMany(RegularActivityMemberLog::class, 'activity_id', 'id');
}
}