mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 07:27:32 -04:00 
			
		
		
		
	INA-5 | New way of setting next scheduled run date
This commit is contained in:
		
							parent
							
								
									99dc9ac65a
								
							
						
					
					
						commit
						fbb64effec
					
				| @ -111,31 +111,10 @@ class TaskScheduler implements ShouldQueue | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         $amount_of_days_until_next_run = $this->getAmountOfDays($scheduler->repeat_every); | ||||
|         $scheduler->scheduled_run = Carbon::now()->addDays($amount_of_days_until_next_run); | ||||
|         $scheduler->scheduled_run = $scheduler->nextScheduledDate(); | ||||
|         $scheduler->save(); | ||||
|     } | ||||
| 
 | ||||
|     private function getAmountOfDays(string $repeat_every): int | ||||
|     { | ||||
|         switch ($repeat_every) { | ||||
|             case Scheduler::DAILY: | ||||
|                 return 1; | ||||
|                 break; | ||||
|             case Scheduler::MONTHLY: | ||||
|                 return 30; | ||||
|                 break; | ||||
|             case Scheduler::WEEKLY: | ||||
|                 return 7; | ||||
|                 break; | ||||
|             case Scheduler::QUARTERLY: | ||||
|                 return 90; | ||||
|                 break; | ||||
|             case Scheduler::ANNUALLY: | ||||
|                 return 365; | ||||
|                 break; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private function fetchJobs() | ||||
|     { | ||||
|  | ||||
| @ -14,6 +14,7 @@ namespace App\Models; | ||||
| use App\Services\TaskScheduler\TaskSchedulerService; | ||||
| use Illuminate\Database\Eloquent\Factories\HasFactory; | ||||
| use Illuminate\Database\Eloquent\Model; | ||||
| use Illuminate\Support\Carbon; | ||||
| 
 | ||||
| /** | ||||
|  * @property boolean paused | ||||
| @ -61,4 +62,29 @@ class Scheduler extends Model | ||||
|     { | ||||
|         return $this->hasOne(ScheduledJob::class, 'scheduler_id', 'id'); | ||||
|     } | ||||
| 
 | ||||
|     public function nextScheduledDate() :?Carbon | ||||
|     { | ||||
| 
 | ||||
|         /* | ||||
|         As we are firing at UTC+0 if our offset is negative it is technically firing the day before so we always need | ||||
|         to add ON a day - a day = 86400 seconds | ||||
|         */ | ||||
|             $offset = 86400; | ||||
| 
 | ||||
|         switch ($this->repeat_every) { | ||||
|             case self::DAILY: | ||||
|                 return Carbon::parse($this->scheduled_run)->startOfDay()->addDay()->addSeconds($offset); | ||||
|             case self::WEEKLY: | ||||
|                 return Carbon::parse($this->scheduled_run)->startOfDay()->addWeek()->addSeconds($offset); | ||||
|             case self::MONTHLY: | ||||
|                 return Carbon::parse($this->scheduled_run)->startOfDay()->addMonth()->addSeconds($offset); | ||||
|             case self::QUARTERLY: | ||||
|                 return Carbon::parse($this->scheduled_run)->startOfDay()->addMonths(3)->addSeconds($offset); | ||||
|             case self::ANNUALLY: | ||||
|                 return Carbon::parse($this->scheduled_run)->startOfDay()->addYear()->addSeconds($offset); | ||||
|             default: | ||||
|                 return null; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user