12-cactus/espinoso

View on GitHub
app/Handlers/TrainHandler.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
 
namespace App\Handlers;
 
use App\Facades\GuzzleClient;
use Spatie\Emoji\Emoji;
use Exception;
 
class TrainHandler extends BaseCommand
{
protected $pattern = "((tren)\s+)(?'branch'\w+)\s+(?'station'.+)$";
protected $signature = "espi tren <ramal> <estación>";
protected $description = "Hago futurología con el horario del tren. Por ahora solo habilitado ramal roca";
/*Posibles ramales:
- roca
- sarmiento
- sanmartin
- mitre
- belgranosur";
*/
 
public function handle(): void
{
/*
$crawler = GuzzleClient::request('GET', config('espinoso.url.train').'/static')->getBody()->getContents();
$jsonStatic = collect(json_decode($crawler));
 
$queryBranch = $this->matches['queryBranch'];
$ramal = collect($jsonStatic)->filter(function ($value, $key, $queryRamal){
return ($key='id' && $value=$queryBranch);
});
*/
$emojiTrain = Emoji::CHARACTER_TRAIN;
//try {
$crawler = GuzzleClient::request('GET', config('espinoso.url.train').'data/11')
->getBody()->getContents();
//} catch (Exception $e) {
// $this->espinoso->reply("El servicio este anda para la mierda\n\n".$e->getMessage());
//}
 
$jsonStatic = collect(json_decode($crawler));
 
$station = trim($this->matches['station']);
$jsonStatic = $jsonStatic->get('response');
$arrivals = collect($jsonStatic)->get('arrivals');
$arrival = collect($arrivals)->where('nombre', $station);
$arrival = collect($arrival)->first();
$laPlata = $this->getText($arrival->minutos_1);
$const = $this->getText($arrival->minutos_3);
$this->espinoso->reply($emojiTrain." *TRENES CONST-LA PLATA*
\nEstación: {$station}
\nA La Plata => {$laPlata}\nA Const. => {$const}");
}
 
private function getText($number)
{
if ($number < 0) {
return "Ni puta idea cuando llega";
} elseif ($number === 0) {
return "En andén";
} elseif ($number === 1) {
return "llega en 1 minuto";
}
return "llega en {$number} minutos";
}
}