You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace App\Support;
|
|
|
|
|
|
|
|
|
|
|
|
use Carbon\Carbon;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 课程/活动进度:1 未开始 / 2 进行中 / 3 已结束
|
|
|
|
|
|
* 仅按开课/活动起止日期判定;报名窗口不影响进度(报名中由展示层单独处理)
|
|
|
|
|
|
*/
|
|
|
|
|
|
class ScheduleProgressStatus
|
|
|
|
|
|
{
|
|
|
|
|
|
public static function resolve(
|
|
|
|
|
|
?string $periodStart,
|
|
|
|
|
|
?string $periodEnd,
|
|
|
|
|
|
?string $signupStart = null,
|
|
|
|
|
|
?string $signupEnd = null,
|
|
|
|
|
|
): int {
|
|
|
|
|
|
$today = now()->startOfDay();
|
|
|
|
|
|
|
|
|
|
|
|
if ($periodEnd) {
|
|
|
|
|
|
$endDate = Carbon::parse($periodEnd)->startOfDay();
|
|
|
|
|
|
if ($today->gt($endDate)) {
|
|
|
|
|
|
return 3;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ($periodStart) {
|
|
|
|
|
|
$startDate = Carbon::parse($periodStart)->startOfDay();
|
|
|
|
|
|
if ($today->lt($startDate)) {
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (! $periodEnd || $today->lte(Carbon::parse($periodEnd)->startOfDay())) {
|
|
|
|
|
|
return 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|