77 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Console\Commands;
 | 
						|
 | 
						|
use Illuminate\Console\Command;
 | 
						|
use Illuminate\Support\Facades\Http;
 | 
						|
use App\Models\Regions;
 | 
						|
use App\Models\Seed;
 | 
						|
 | 
						|
class scraperAddRegion extends Command
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * The name and signature of the console command.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    protected $signature = 'scraper:add-region';
 | 
						|
 | 
						|
    /**
 | 
						|
     * The console command description.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    protected $description = 'Add new region to database.';
 | 
						|
 | 
						|
    /**
 | 
						|
     * Execute the console command.
 | 
						|
     */
 | 
						|
    public function handle()
 | 
						|
    {
 | 
						|
 | 
						|
        $name = $this->ask('Type in desired region');
 | 
						|
 | 
						|
        $suggestions = Http::get('https://www.e-domizil.ch/api/v2/autocomplete?q='.$name.'&limit=6');
 | 
						|
        $options = [];
 | 
						|
 | 
						|
        if($suggestions->successful()){
 | 
						|
 | 
						|
            $suggestionsArr = json_decode($suggestions->body(), 1);
 | 
						|
 | 
						|
                if(count($suggestionsArr['suggestions']) > 0){
 | 
						|
 | 
						|
                foreach ($suggestionsArr['suggestions'] as $suggestion) {
 | 
						|
                    $options[$suggestion['id']] = $suggestion['fullTitle'];
 | 
						|
                }
 | 
						|
 | 
						|
                $choice = $this->choice(
 | 
						|
                    'Choose desired region',
 | 
						|
                    $options
 | 
						|
                );
 | 
						|
 | 
						|
                $id = $choice;
 | 
						|
                $name = $options[$choice];
 | 
						|
            }
 | 
						|
        }
 | 
						|
        
 | 
						|
        $region = Regions::create([
 | 
						|
            'name' => $name
 | 
						|
        ]);
 | 
						|
 | 
						|
        $this->info('New Region created '.$region);
 | 
						|
 | 
						|
        if(count($options) > 0){
 | 
						|
 | 
						|
            $seed = Seed::create([
 | 
						|
                'uri' => 'https://www.e-domizil.ch/search/'.$id.'?_format=json',
 | 
						|
                'region_id' => $region['id']
 | 
						|
            ]);
 | 
						|
 | 
						|
            $this->info('New Seed added '.$seed);
 | 
						|
 | 
						|
        }
 | 
						|
        
 | 
						|
 | 
						|
    }
 | 
						|
}
 |