diff --git a/backend/app/Console/Kernel.php b/backend/app/Console/Kernel.php index f8b423b..9056c7a 100644 --- a/backend/app/Console/Kernel.php +++ b/backend/app/Console/Kernel.php @@ -2,10 +2,12 @@ namespace App\Console; -use App\Jobs\NotifyUsersManualModeOn; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; + use App\Jobs\UpdateAvailabilityWithSchedulesJob; +use App\Jobs\NotifyUsersManualModeOn; +use App\Jobs\ResetAvailabilityMinutes; class Kernel extends ConsoleKernel { @@ -16,6 +18,7 @@ class Kernel extends ConsoleKernel { $schedule->job(new UpdateAvailabilityWithSchedulesJob)->everyThirtyMinutes(); $schedule->job(new NotifyUsersManualModeOn)->dailyAt('7:00'); + $schedule->job(new ResetAvailabilityMinutes)->monthlyOn(1, '0:00'); } /** diff --git a/backend/app/Jobs/ResetAvailabilityMinutes.php b/backend/app/Jobs/ResetAvailabilityMinutes.php new file mode 100644 index 0000000..ccad3b2 --- /dev/null +++ b/backend/app/Jobs/ResetAvailabilityMinutes.php @@ -0,0 +1,52 @@ +where("hidden", false) + ->get(); + + //Reset availability minutes + User::where("hidden", false) + ->update(['availability_minutes' => 0]); + + //Archive availability minutes + $year = date("Y"); + $month = date("m"); + foreach ($users as $user) { + $row = new AvailabilityMinutesArchive(); + $row->availability_minutes = $user->availability_minutes; + $row->year = $year; + $row->month = $month; + $row->user()->associate($user->id); + $row->save(); + } + } +} diff --git a/backend/app/Models/AvailabilityMinutesArchive.php b/backend/app/Models/AvailabilityMinutesArchive.php new file mode 100644 index 0000000..47d9e97 --- /dev/null +++ b/backend/app/Models/AvailabilityMinutesArchive.php @@ -0,0 +1,33 @@ + + */ + protected $fillable = [ + 'availability_minutes', + 'year', + 'month' + ]; + + /** + * Get the user. + */ + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } +} diff --git a/backend/database/migrations/2023_08_30_133936_create_availability_minutes_archives_table.php b/backend/database/migrations/2023_08_30_133936_create_availability_minutes_archives_table.php new file mode 100644 index 0000000..31d3c99 --- /dev/null +++ b/backend/database/migrations/2023_08_30_133936_create_availability_minutes_archives_table.php @@ -0,0 +1,31 @@ +id(); + $table->integer('availability_minutes'); + $table->integer('year'); + $table->integer('month'); + $table->unsignedBigInteger('user_id')->unsigned(); + $table->foreign('user_id')->references('id')->on('users')->cascadeOnDelete(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('availability_minutes_archives'); + } +};