diff --git a/laravel_app/app/Models/ProjectReport.php b/laravel_app/app/Models/ProjectReport.php index 45f950b..1fde684 100644 --- a/laravel_app/app/Models/ProjectReport.php +++ b/laravel_app/app/Models/ProjectReport.php @@ -15,7 +15,8 @@ class ProjectReport extends Model { use HasStatus; - protected $fillable = ['name', 'path', 'week', 'year','status']; + protected $casts = [ 'end_date' => 'datetime']; + protected $fillable = ['name', 'path', 'week', 'year','status', 'end_date']; @@ -24,19 +25,10 @@ public function project() return $this->belongsTo(Project::class); } - public function weeksAgo() - { - return $this->weeksAgoForYearAndWeek($this->year, $this->week); - } - - public static function weeksAgoForYearAndWeek($year, $week) - { - return (now()->week - now()->setISODate($year, $week)->week); - } public function getFileName() { - return 'week_'.$this->week.'_'.$this->year; + return 'Period_'.$this->end_date->copy()->subDays($this->offset).'_'.$this->end_date; } public function getFullPathName() @@ -46,6 +38,7 @@ public function getFullPathName() public function getReportDate() { + // TODO remove year and week return self::getReportDateForYearAndWeek( $this->project, $this->year, diff --git a/laravel_app/database/migrations/2024_06_18_082255_update_year_and_week_columns_to_end_date_and_offset_project_reports_table.php b/laravel_app/database/migrations/2024_06_18_082255_update_year_and_week_columns_to_end_date_and_offset_project_reports_table.php new file mode 100644 index 0000000..e08ba4d --- /dev/null +++ b/laravel_app/database/migrations/2024_06_18_082255_update_year_and_week_columns_to_end_date_and_offset_project_reports_table.php @@ -0,0 +1,57 @@ +date('end_date')->nullable(); + $table->integer('offset')->default(7); + }); + ProjectReport::all()->each(function (ProjectReport $project_report) { + $end_date = Carbon::parse(sprintf('%s-W%02d',$project_report->year,$project_report->week))->addDay(Carbon::THURSDAY); + $project_report->update(['end_date' => $end_date]); + }); + Schema::table('project_reports', function (Blueprint $table) { + $table->dropColumn('week'); + $table->dropColumn('year'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('project_reports', function (Blueprint $table) { + // Add back year and week columns + $table->integer('year'); + $table->integer('week'); + }); + + // Extract year and week from end_date (assuming logic applied in up() is reversible) + ProjectReport::all()->each(function (ProjectReport $project_report) { + if (!$project_report->end_date) { + return; // Skip if end_date is null + } + $project_report->update(['year' => $project_report->end_date->format('Y'), 'week' => $project_report->end_date->format('W')]); + }); + + Schema::table('project_reports', function (Blueprint $table) { + // Drop end_date and offset columns + $table->dropColumn('end_date'); + $table->dropColumn('offset'); + }); + } + +};