<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use App\Http\Controllers\API\FoodicsOrderController;

class FetchOrdersWithModes extends Command
{
    protected $signature = 'fetch:orders-with-modes';
    protected $description = 'Fetch orders with dynamic modes from the API';

    protected $modes = [
        'list_orders',
        'extract_orders',
        'post_orders'
    ];

    public function handle()
    {
        $foodicsController = new FoodicsOrderController();
        Log::channel('orders_job')->info("starting orders job");

        foreach ($this->modes as $mode) {
            try {
                $response = $foodicsController->getOrdersFromFoodics($mode);

                if (!empty($response)) {
                    Log::channel('orders_job')->info("Order Job Status: Running", [
                        'mode' => $mode,
                        'response' => $response,
                    ]);
                }
                // else {
                //     Log::channel('orders_job')->error("Order Job Status: Failed", [
                //         'mode' => $mode,
                //         'response' => $response,
                //     ]);
                // }
            } catch (\Exception $e) {
                Log::channel('orders_job')->error("Error fetching orders for mode {$mode}: " . $e->getMessage());
            }
        }
    }

    // public function handlex()
    // {
    //     foreach ($this->modes as $mode) {
    //         try {
    //             $url = env('APP_URL') . "/api/tmp_orders?mode={$mode}";
    //             $response = Http::timeout(10)->get($url);

    //             if ($response) {
    //                 Log::channel('orders_job')->info("Order Job Status: Running", [
    //                     'mode' => $mode,
    //                     'response' => $response->body(),
    //                 ]);
    //             } else {
    //                 Log::channel('orders_job')->error("Order Job Status: Failed", [
    //                     'mode' => $mode,
    //                     'status_code' => $response->status(),
    //                     'response' => $response->body(),
    //                 ]);
    //             }
    //         } catch (\Exception $e) {
    //             Log::channel('orders')->error("Error fetching orders for mode {$mode}: " . $e->getMessage());
    //         }
    //     }
    // }
}
