mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-04 01:57:31 -05: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