From 182ef26ac434c4c8024a4798146bbf92549aa8ee Mon Sep 17 00:00:00 2001 From: James Brooks Date: Thu, 9 May 2019 08:00:15 +0100 Subject: [PATCH] Fix issues with scheduled maintenance --- app/Composers/ScheduledComposer.php | 2 +- app/Models/Schedule.php | 41 ++++++++++++++++++++++------- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/app/Composers/ScheduledComposer.php b/app/Composers/ScheduledComposer.php index ab8cd380f3a3..0e65b4a89245 100644 --- a/app/Composers/ScheduledComposer.php +++ b/app/Composers/ScheduledComposer.php @@ -31,7 +31,7 @@ class ScheduledComposer */ public function compose(View $view) { - $scheduledMaintenance = Schedule::futureSchedules()->orderBy('scheduled_at')->get(); + $scheduledMaintenance = Schedule::uncompleted()->orderBy('scheduled_at')->get(); $view->withScheduledMaintenance($scheduledMaintenance); } diff --git a/app/Models/Schedule.php b/app/Models/Schedule.php index 6244820c3bb4..6120842666b1 100644 --- a/app/Models/Schedule.php +++ b/app/Models/Schedule.php @@ -22,11 +22,6 @@ use Illuminate\Database\Eloquent\SoftDeletes; use McCool\LaravelAutoPresenter\HasPresenter; -/** - * This is the schedule class. - * - * @author James Brooks - */ class Schedule extends Model implements HasPresenter { use HasMeta, @@ -148,6 +143,20 @@ public function components() return $this->hasMany(ScheduleComponent::class); } + /** + * Scope schedules that are uncompleted. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeUncompleted(Builder $query) + { + return $query->whereIn('status', [self::UPCOMING, self::IN_PROGRESS])->where(function (Builder $query) { + return $query->whereNull('completed_at'); + }); + } + /** * Scope schedules that are in progress. * @@ -158,7 +167,7 @@ public function components() public function scopeInProgress(Builder $query) { return $query->where('scheduled_at', '<=', Carbon::now())->where('status', '<>', self::COMPLETE)->where(function ($query) { - $query->whereNull('completed_at')->orWhere('completed_at', '>', Carbon::now()); + $query->whereNull('completed_at'); }); } @@ -169,21 +178,33 @@ public function scopeInProgress(Builder $query) * * @return \Illuminate\Database\Eloquent\Builder */ - public function scopeFutureSchedules($query) + public function scopeScheduledInFuture($query) { return $query->whereIn('status', [self::UPCOMING, self::IN_PROGRESS])->where('scheduled_at', '>=', Carbon::now()); } /** - * Scopes schedules to those in the past. + * Scopes schedules to those scheduled in the past. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeScheduledInPast($query) + { + return $query->whereIn('status', [self::UPCOMING, self::IN_PROGRESS])->where('scheduled_at', '<=', Carbon::now()); + } + + /** + * Scopes schedules to those completed in the past. * * @param \Illuminate\Database\Eloquent\Builder $query * * @return \Illuminate\Database\Eloquent\Builder */ - public function scopePastSchedules($query) + public function scopeCompletedInPast($query) { - return $query->where('status', '<', self::COMPLETE)->where('scheduled_at', '<=', Carbon::now()); + return $query->where('status', '=', self::COMPLETE)->where('completed_at', '<=', Carbon::now()); } /**