. */ namespace Poniverse\Ponyfm\Console\Commands; use Illuminate\Console\Command; use Illuminate\Foundation\Bus\DispatchesJobs; use Poniverse\Ponyfm\Jobs\EncodeTrackFile; use Poniverse\Ponyfm\Models\Track; class RebuildTrack extends Command { use DispatchesJobs; /** * The name and signature of the console command. * * @var string */ protected $signature = 'rebuild:track {trackId : ID of the track to rebuild} {--upload : Include this option to use the uploaded file as the encode source instead of the master file}'; /** * The console command description. * * @var string */ protected $description = 'Re-encodes a track\'s files'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { /** @var Track $track */ $track = Track::with('trackFiles')->find((int) $this->argument('trackId')); if($this->option('upload')) { foreach($track->trackFiles as $trackFile) { $this->info("Re-encoding this track's {$trackFile->format} file..."); $this->dispatch(new EncodeTrackFile($trackFile, false, true, false)); } } else { foreach ($track->trackFiles as $trackFile) { if (!$trackFile->is_master) { $this->info("Re-encoding this track's {$trackFile->format} file..."); $this->dispatch(new EncodeTrackFile($trackFile, true)); } } } } }