<?php

namespace App\Http\Controllers\Network;

use App\Http\Controllers\Network\Classes\DirectIntegration as DirectIntegrationApi;
use Yajny\Member\Models\Network;
use Yajny\Member\Models\Sale;
use Yajny\Member\Models\SaleItem;

class DirectIntegration extends BaseNetwork implements HasSaleItems
{
    public function __construct(Network $network)
    {
        parent::__construct($network, new DirectIntegrationApi($network->api_key, $network->api_url));
    }

    function mapNetworkSaleToYajnySale($saleOrder): ?Sale
    {
        $sale = Sale::withoutGlobalScopes()->firstOrNew(['network_id' => $this->network->id, 'network_transaction_id' => $saleOrder->transaction_id]);

        if(!is_numeric($saleOrder->click_id))
            return null;

        if (!$sale->exists) {
            $sale->click_id = $saleOrder->click_id;
            $sale->order_id = $saleOrder->order_id;
            $sale->transaction_time = date('Y-m-d H:i:s', strtotime($saleOrder->transaction_time));
            $sale->currency = $saleOrder->order_currency;
            $sale->payment_method = $saleOrder->payment_method ?? null;
            $sale->payment_issuer = $saleOrder->payment_issuer ?? null;
        }
        $sale->local_order_amount = $saleOrder->order_amount;
        $sale->local_comission = $saleOrder->order_commission;
        $sale->network_status = $saleOrder->order_status;
        $sale->setStatus($this->network->sale_statuses);
        return $sale;
    }

    public function syncSaleItems(Sale $sale, $saleOrder)
    {
        if ($saleOrder->items && count($saleOrder->items)) {
            SaleItem::where('sale_id', $sale->id)->delete();
            foreach ($saleOrder->items as $item) {
                $saleItem = new SaleItem();
                $saleItem->sale_id = $sale->id;
                $saleItem->name = $item->name;
                $saleItem->sku = @$item->sku;
                $saleItem->category = @$item->category;
                $saleItem->brand = @$item->brand;
                $saleItem->unit_price = $item->unit_price;
                $saleItem->quantity = $item->quantity;
                $saleItem->save();
            }
        }
    }
}
