diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index f77695f6b35b..5ef319102309 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -77,10 +77,9 @@ class Kernel extends ConsoleKernel $schedule->job(new TaskScheduler())->daily()->withoutOverlapping(); $schedule->job(new SystemMaintenance)->weekly()->withoutOverlapping(); + if(Ninja::isSelfHost()) { - - $schedule->call(function () { Account::whereNotNull('id')->update(['is_scheduler_running' => true]); })->everyFiveMinutes(); diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php index 93a4cbee114b..e048291d7230 100644 --- a/app/Http/Controllers/BaseController.php +++ b/app/Http/Controllers/BaseController.php @@ -780,7 +780,10 @@ class BaseController extends Controller $this->buildCache(); - return response()->view('index.index', $data)->header('X-Frame-Options', 'SAMEORIGIN', false); + if(config('ninja.react_app_enabled')) + return response()->view('react.index', $data)->header('X-Frame-Options', 'SAMEORIGIN', false); + else + return response()->view('index.index', $data)->header('X-Frame-Options', 'SAMEORIGIN', false); } diff --git a/app/Http/Controllers/TaskSchedulerController.php b/app/Http/Controllers/TaskSchedulerController.php index 97652e7e61b0..1961db6db8bd 100644 --- a/app/Http/Controllers/TaskSchedulerController.php +++ b/app/Http/Controllers/TaskSchedulerController.php @@ -63,7 +63,6 @@ class TaskSchedulerController extends BaseController public function index() { - set_time_limit(45); $schedulers = Scheduler::where('company_id', auth()->user()->company()->id); diff --git a/app/Jobs/Ninja/TaskScheduler.php b/app/Jobs/Ninja/TaskScheduler.php index af7f74efaf17..20a819ecbd05 100644 --- a/app/Jobs/Ninja/TaskScheduler.php +++ b/app/Jobs/Ninja/TaskScheduler.php @@ -46,24 +46,35 @@ class TaskScheduler implements ShouldQueue */ public function handle() { - foreach (MultiDB::$dbs as $db) { + foreach (MultiDB::$dbs as $db) + { MultiDB::setDB($db); + $pending_schedulers = $this->fetchJobs(); - foreach ($pending_schedulers as $scheduler) { - $this->doJob($scheduler); - } + + Scheduler::with('company','job') + ->where('paused', false) + ->where('is_deleted', false) + ->whereDate('scheduled_run', '<=', Carbon::now()) + ->cursor() + ->each(function ($scheduler){ + $this->doJob($scheduler); + + }); + } + } private function doJob(Scheduler $scheduler) { $job = $scheduler->job; + $company = $scheduler->company; - $company = Company::find($job->company_id); - if (!$job || !$company) { + if (!$job) return; - } + $parameters = $job->parameters; @@ -120,10 +131,7 @@ class TaskScheduler implements ShouldQueue private function fetchJobs() { - return Scheduler::where('paused', false) - ->where('is_deleted', false) - ->whereDate('scheduled_run', '<=', Carbon::now()) - ->cursor(); + return ; } } diff --git a/app/Jobs/Report/SendToAdmin.php b/app/Jobs/Report/SendToAdmin.php index 8c2e779f9294..a2624eeaf9d2 100644 --- a/app/Jobs/Report/SendToAdmin.php +++ b/app/Jobs/Report/SendToAdmin.php @@ -48,6 +48,7 @@ class SendToAdmin implements ShouldQueue public function handle() { + MultiDB::setDb($this->company->db); $export = new $this->report_class($this->company, $this->request); $csv = $export->run(); diff --git a/app/Models/Scheduler.php b/app/Models/Scheduler.php index 38943cb709b3..bc279d293b5e 100644 --- a/app/Models/Scheduler.php +++ b/app/Models/Scheduler.php @@ -37,8 +37,8 @@ class Scheduler extends BaseModel 'paused', 'repeat_every', 'scheduled_run', - 'company_id' ]; + protected $casts = [ 'start_from' => 'timestamp', 'scheduled_run' => 'timestamp', diff --git a/app/Services/TaskScheduler/TaskSchedulerService.php b/app/Services/TaskScheduler/TaskSchedulerService.php index 4bce031574c6..1d5e9a614d10 100644 --- a/app/Services/TaskScheduler/TaskSchedulerService.php +++ b/app/Services/TaskScheduler/TaskSchedulerService.php @@ -56,6 +56,7 @@ class TaskSchedulerService $scheduler->scheduled_run = $request->get('start_from') ? Carbon::parse((int)$request->get('start_from')) : Carbon::now();; $scheduler->company_id = auth()->user()->company()->id; $scheduler->save(); + $this->createJob($request, $scheduler); } diff --git a/config/ninja.php b/config/ninja.php index 37b48bac0f1b..12b380991949 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -187,7 +187,7 @@ return [ 'ninja_apple_api_key' => env('APPLE_API_KEY', false), 'ninja_apple_private_key' => env('APPLE_PRIVATE_KEY', false), 'ninja_apple_bundle_id' => env('APPLE_BUNDLE_ID', false), - 'ninja_apple_issuer_id' => env('APPLE_ISSUER_ID', false) - + 'ninja_apple_issuer_id' => env('APPLE_ISSUER_ID', false), + 'react_app_enabled' => env('REACT_APP_ENABLED', false), ]; diff --git a/resources/views/react/index.blade.php b/resources/views/react/index.blade.php new file mode 100644 index 000000000000..d490313bc340 --- /dev/null +++ b/resources/views/react/index.blade.php @@ -0,0 +1,20 @@ + + + + + + + {{ config('ninja.app_name') }} + + + @include('react.head') + + + + + +
+ + + +