<?php

namespace App\Http\Controllers\Network;

use App\Http\Controllers\Network\Classes\CakeApi;
use Carbon\Carbon;
use Yajny\Member\Models\Network;
use Yajny\Member\Models\Sale;


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

    /**
     * Mapping sales from 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->conversion_id]);

        if (!$sale->exists) {
            $sale->click_id = $saleOrder->subid_3;
            $sale->order_id = $saleOrder->order_id;
            $sale->campaign_id = $saleOrder->tracking_id;
            $sale->transaction_time = Carbon::parse($saleOrder->conversion_date)->toDateTimeString();
            $sale->currency = 'EGP';
        }
        $sale->local_order_amount = $saleOrder->order_total;
        $sale->local_comission = $saleOrder->price;
        $sale->network_status = $saleOrder->disposition;
        $sale->setStatus($this->network->sale_statuses);
        return $sale;
    }
}
