'datetime', ]; protected $fillable = [ 'name', 'path', 'week', 'year', 'end_date', 'status' ]; public static function getFilenameForYearAndWeek($year, $startWeekNumber) { return sprintf('week_%02d_%d.tif', $startWeekNumber, $year); } public static function getFilenameByPeriod(Carbon $endDate,int $offset) { return sprintf('Period_%s_%s.tif', $endDate->format('Y-m-d'), $endDate->copy()->subDays($offset)->format('Y-m-d')); } public function project() { return $this->belongsTo(Project::class); } public function getStartDateAttribute() { return $this->end_date->subDay($this->offset); } protected static function booted(): void { parent::booted(); static::updated(function (ProjectMosaic $projectMosaic) { event(new ProjectMosaicStatus($projectMosaic)); }); } }