<?php

namespace App\Http\Controllers\Network;

use App\Http\Controllers\Network\Classes\Boostiny as BoostinyApi;
use Yajny\Member\Models\Network;
use Yajny\Member\Models\Sale;

class Boostiny extends BaseNetwork
{
    public function __construct(Network $network)
    {
        parent::__construct($network, new BoostinyApi($network->api_key));
    }

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

        if (!$sale->exists) {
            $sale->click_id = $saleOrder->sub1;
            $sale->order_id = $saleOrder->order_id;
            $sale->campaign_id = $saleOrder->campaign_id;
            $sale->transaction_time = $saleOrder->date;
            $sale->currency = 'USD';
            $sale->extras = [
                'automation' => $saleOrder->automation,
                'country' => $saleOrder->country,
                'customer_type' => $saleOrder->customer_type,
                'sub1' => $saleOrder->sub1,
                'sub2' => $saleOrder->sub2,
                'sub3' => $saleOrder->sub3,
                'sub4' => $saleOrder->sub4,
                'sub5' => $saleOrder->sub5,
                'boostiny_click_id' => $saleOrder->click_id
            ];
        }

        $sale->local_order_amount = $saleOrder->sales_amount_usd;
        $sale->local_comission = $saleOrder->revenue;
        $sale->network_status = 'pending';

        if ($this->isConfirmedTransaction($saleOrder)) {
            $sale->local_order_amount = $saleOrder->net_sales_amount_usd;
            $sale->local_comission = $saleOrder->net_revenue;
            $sale->network_status = 'confirmed';
        }

        $sale->setStatus($this->network->sale_statuses);
        return $sale;
    }

    private function isConfirmedTransaction($conversionData): bool
    {
        return $conversionData->net_revenue > 0;
    }
}
