<?php

namespace App\Http\Controllers\StoreAPI;

use App\Http\Requests\DraftOrderRequest;
use App\Models\Customer;
use App\Services\Shopify\OrdersService as ShopifyOrdersService;
use Illuminate\Routing\Controller as BaseController;

class DraftOrdersController extends BaseController
{
    /**
     * Controller endpoint for frontend proxied requests for draft order creation
     *
     * @param ShopifyOrdersService $service
     * @param DraftOrderRequest $request
     * @return array
     */
    public function createDraftOrder(ShopifyOrdersService $service, DraftOrderRequest $request)
    {
        $customerId = $request->get('logged_in_customer_id');
        if (!$customerId) {
            return [
                'success' => false,
                'error' => 'Customer not logged'
            ];
        }
        $customer = Customer::where('shopify_gid', "gid://shopify/Customer/$customerId")->first();
        if (!$customer) {
            return [
                'success' => false,
                'error' => 'Customer not found ' . $customerId
            ];
        }

        $company = $customer->company;

        $data = $request->validated();
        $orderGid = $service->createDraftOrder($company, $customer, $data);

        $success = false;
        if ($orderGid) {
            $success = $service->invoiceDraftOrder($orderGid, $customer->email);
        }

        return ['success' => $success];
    }
}
