vindi/vindi-woocommerce

View on GitHub
src/services/WebhooksHelpers.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace VindiPaymentGateways;

use DateTime;
use WC_Order;
use Exception;

class WebhooksHelpers
{
    private $vindiWebhooks;

    public function __construct(VindiWebhooks $vindiWebhooks)
    {
        $this->vindiWebhooks = $vindiWebhooks;
    }

    public function handle_subscription_renewal($renewInfos, $data)
    {
        $vindiId = $renewInfos['vindi_subscription_id'];
        $cycle = $renewInfos['cycle'];
        $hasOrder = $this->vindiWebhooks->subscription_has_order_in_cycle($vindiId, $cycle);
        if (!$hasOrder) {
            $this->vindiWebhooks->subscription_renew($renewInfos);
            $this->vindiWebhooks->update_next_payment($data);
            return true;
        }
        return false;
    }

    public function handle_trial_period($subscriptionId)
    {
        $cleanSubscriptionId = $this->vindiWebhooks->find_subscription_by_id($subscriptionId);
        $subscription = wcs_get_subscription($cleanSubscriptionId);
        $now = new DateTime();
        $endTrial = new DateTime();
        $endTrial->setTimestamp($subscription->get_time('trial_end'));
        if ($endTrial > $now && $subscription->get_status() == "active") {
            $parentId = $subscription->get_parent_id();
            $order = new WC_Order($parentId);
            $order->update_status('pending', 'PerĂ­odo de teste vencido');
            $subscription->update_status('on-hold');
            return true;
        }
        return false;
    }
}