<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request as GuzzleRequest;

class FoodicsOrderToken extends Model
{
    use HasFactory;

    protected $table = 'foodics_order_tokens';

    protected $fillable = [
        'brand_id',
        'access_token',
        'status'
    ];

    public static function getAccessToken($queryParam = false, $column = null, $value = null)
    {
        $client = new Client();
        $url = env('CHEFADMIN_URL') . '/api/foodics/tokens';

        $queryParams = [
            'status' => 1,
            'sync_with_foodics' => 'is_allowed'
        ];

        if ($queryParam === true) {
            if ($column && $value) {
                $queryParams[$column] = $value;
            }
            $url .= '?' . http_build_query($queryParams);
        }

        try {
            $request = new GuzzleRequest('GET', $url);
            $res = $client->sendAsync($request)->wait();
            return json_decode($res->getBody(), true);
        } catch (\Exception $e) {
            return ['error' => $e->getMessage()];
        }
    }

    public static function deleteBrandToken($brandId)
    {
        $client = new Client();
        $url = env('CHEFADMIN_URL') . '/api/foodics/tokens/' . $brandId;

        $request = new GuzzleRequest('DELETE', $url);
        $res = $client->sendAsync($request)->wait();
        $body = $res->getBody();
        return json_decode($body, true);
    }
}
