<?php

namespace App\Http\Controllers\Network;

use App\Http\Controllers\Network\Classes\Admitad as AdmitadApi;
use Yajny\Member\Models\Network;
use Yajny\Member\Models\Sale;


class Admitad extends BaseNetwork
{
    /**
     * Create a new network instance.
     *
     * @param Network $network
     */
    public function __construct(Network $network)
    {
        parent::__construct($network, new AdmitadApi($network->api_key, $network->private_key, $network->website_id));
    }

    /**
     * Mapping sales from Admitad network for saving.
     *
     * @param array|object $saleOrder the network sale order
     *
     * @return Sale Sale object saved on Database.
     * @throws Exception If issue happened on saving sales
     *
     */
    public function mapNetworkSaleToYajnySale($saleOrder): ?Sale
    {
        $sale = Sale::withoutGlobalScopes()->firstOrNew(['network_id' => $this->network->id, 'network_transaction_id' => $saleOrder->action_id]);

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

        if (!$sale->exists) {
            $sale->click_id = $saleOrder->subid;
            $sale->order_id = $saleOrder->order_id;
            $sale->campaign_id = $saleOrder->advcampaign_id;
            $sale->transaction_time = $saleOrder->action_date;
            $sale->currency = $saleOrder->currency;
        }
        $sale->local_order_amount = $saleOrder->cart;
        $sale->local_comission = $saleOrder->payment;
        $sale->network_status = $saleOrder->status;
        $sale->setStatus($this->network->sale_statuses);
        return $sale;
    }
}
