<?php
namespace App\Console\Commands;
use App\Imports\PriceImport;
use App\Models\ED\Comodity;
use App\Models\ED\Price;
use App\Models\ED\Station;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;
class GetPrices extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'ed:prices';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
// public function handle()
// {
// $url = "https://eddb.io/archive/v6/listings.csv";
// $this->info("Start downloading listings...");
// // $content = Http::withoutVerifying()->withHeaders([
// // 'Accept-Encoding' => 'gzip, deflate, sdch'
// // ])->get($url);
// // Storage::put('eddb/listings.csv', $content->body());
// $this->info("Finished downloading listings!");
// $this->info("Seeding table [listings]...");
// $this->output->title('Starting import');
// (new PriceImport)->withOutput($this->output)->import('eddb/listings.csv', 'local', \Maatwebsite\Excel\Excel::CSV);
// // (new PriceImport)->withOutput($this->output)->import('eddb/listings.csv', 'local', \Maatwebsite\Excel\Excel::CSV);
// $this->output->success('Import successful');
// return 0;
// }
public function handle()
{
$url = "https://eddb.io/archive/v6/listings.csv";
$this->info("Start downloading listings...");
// $content = Http::withoutVerifying()->withHeaders([
// 'Accept-Encoding' => 'gzip, deflate, sdch'
// ])->get($url);
// Storage::put('eddb/listings.csv', $content->body());
$this->info("Finished downloading listings!");
$this->info("Seeding table [listings]...");
$this->output->title('Starting import');
// ебет разбираться как выяснить кол-во строк в файле
$bar = $this->output->createProgressBar(6899862);
$bar->start();
if (($handle = fopen(Storage::path('eddb/listings.csv'), "r")) !== FALSE) {
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
$station = Station::where('external_id', $row[1])->first();
$commodity = Comodity::where('external_id', $row[2])->first();
if ($station !== null && $commodity !== null) {
Price::create([
"station_id" => $station->id,
"commodity_id" => $commodity->id,
"buy_price" => intval($row[5]),
"sell_price" => intval($row[6])
]);
$bar->advance();
}
}
fclose($handle);
}
$bar->finish();
// (new PriceImport)->withOutput($this->output)->import('eddb/listings.csv', 'local', \Maatwebsite\Excel\Excel::CSV);
// (new PriceImport)->withOutput($this->output)->import('eddb/listings.csv', 'local', \Maatwebsite\Excel\Excel::CSV);
$this->output->success('Import successful');
return 0;
}
}