debug = $this->options()['d'] ?? 0; $this->restart = $this->options()['r'] ?? 0; $this->force = $this->options()['f'] ?? 0; switch ($this->getName()) { case 'grp:daily': $this->daily_grapper_nobreak(); break; default: // code... $grapperSelected = $this->select_grapper(); $this->set_base_dir($grapperSelected); switch ($grapperSelected) { case 'daily': $this->task_id = 1; $this->days_back = (int) $this->select_day(); $this->run_daily($grapperSelected); break; case 'range': $this->task_id = 3; $this->range_grapper_nobreak(); break; case 'settings': $this->settings_to_local(); break; case 'excel': $folder = $this->select_folder(); $this->import_to_excel($folder); break; case 'mail': $folder = $this->select_folder(); $this->send($folder); break; case 'clear': $folder = $this->select_folder(); $this->clear_folder($folder); break; case 'delete_orphants': $this->delete_imported_files_orphants(); break; } break; } } /** * Summary of daily_grapper_nobreak * * @return void */ protected function daily_grapper_nobreak() { $folder = 'daily'; $this->task_id = 1; $this->restart = 1; $this->set_base_dir($folder); $this->load_tournaments_requested($folder); $restart = $this->ask_restart(); switch ($restart) { case 'restart': $this->restart = 1; break; case 'clear': $this->restart = 1; $this->clear_folder($folder, 'all'); break; } /** * day 1 */ // $day = Carbon::now()->subDay()->format('Y-m-d'); // $this->grap_tournaments_for_day($day); // foreach ($this->tournaments_requested as $tournament) { // $this->get_event($day, $tournament); // } /** * day 5 */ // $day = Carbon::now()->subDays(5)->format('Y-m-d'); // $this->grap_tournaments_for_day($day); // foreach ($this->tournaments_requested as $tournament) { // $this->get_event($day, $tournament); // } /** * to excel day by day */ $this->import_to_excel($folder); /** * mail it */ $this->send($folder); } /** * Summary of run_daily */ protected function run_daily(string $grapperSelected) { $this->load_tournaments_requested($grapperSelected); $this->load_days($grapperSelected); if ($this->confirm($this->days[0], true)) { foreach ($this->days as $day) { $this->grap_tournaments_for_day($day); foreach ($this->tournaments_requested as $tournament) { $this->get_event($day, $tournament); } } if ($this->debug) { Notice::note('Day grapping compleated', 'g'); } } else { Notice::note('day grapping cancelled', 'r'); } } /** * Summary of run_range */ protected function range_grapper_nobreak() { $folder = 'range'; $this->task_id = 3; $this->set_base_dir($folder); $restart = $this->ask_restart(); switch ($restart) { case 'restart': $this->restart = 1; break; case 'clear': $this->restart = 1; $this->clear_folder($folder, 'all'); break; } $day_done = $this->days_done(); $this->load_tournaments_requested($folder); $this->load_days($folder); $count = \count($this->days); foreach ($this->days as $key => $day) { if ($this->debug) { $key++; Notice::note("$key/$count", 'br'); } if (in_array($day, $day_done)) { if ($this->debug) { Notice::note("$day Events allready grapped", 'br'); } } else { $this->grap_tournaments_for_day($day); foreach ($this->tournaments_requested as $tournament) { $this->get_event($day, $tournament); } } } $this->import_to_excel($folder); Notice::note('Done', 'g'); Mail::to('hermann.telser@gmail.com')->send(new SimpleMail('STATISTIKO', 'Grapping compleated')); } protected function days_done(): array { $directories = File::directories($this->data_dir); $arr = []; foreach ($directories as $directory) { $arr[] = substr(strrchr($directory, "/"), 1); } return $arr; } /** * Summary of select_grapper */ protected function select_grapper(): string { return select( label: 'What task should run?', scroll: 10, options: [ 'daily' => 'Select day back', 'range' => 'Range', 'rose' => 'Rose', 'player' => 'Player', 'settings' => 'Settings', 'excel' => 'Excel', 'mail' => 'Send Mail', 'clear' => 'Empty Folder', 'delete_orphants' => 'Delete Imported Orphants', ] ); } /** * Summary of select_folder */ protected function select_folder(): string { return select( label: 'What folder should be used?', scroll: 10, options: [ 'daily' => 'Daily', 'range' => 'Range', 'rose' => 'Rose', 'player' => 'Player', ] ); } protected function select_day(): string { return text( label: 'How many days back?', placeholder: 'z.B. 1', default: '1', ); } protected function ask_restart(): string { return select( label: 'Restart Grapper?', default: 'no', options: [ 'no' => 'No', 'restart' => 'Restart', 'clear' => 'Clear folder and restart', ] ); } protected function select_what_delete(): string { return select( label: 'What files?', scroll: 10, options: [ 'all' => 'All', 'data' => 'Data', ] ); } }