mundipagg/magento2

View on GitHub
Helper/BuildChargeAddtionalInformationHelper.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php

namespace MundiPagg\MundiPagg\Helper;

use Mundipagg\Core\Kernel\Aggregates\Transaction;
use Mundipagg\Core\Kernel\ValueObjects\TransactionType;
use Mundipagg\Core\Kernel\Aggregates\Charge;

class BuildChargeAddtionalInformationHelper
{
    /**
     * @param string $paymentMethodPlatform
     * @param Charge[] $charges
     * @return array
     */
    public static function build($paymentMethodPlatform, array $charges)
    {
        /**
         * @var string contains method name, call dynamic
         */
        $methodName = str_replace(
            ['_', 'Mundipagg'],
            '',
            ucwords($paymentMethodPlatform, "_")
        );

        $methodName = "build{$methodName}";

        if (!method_exists(self::class, $methodName)) {
            return [];
        }

        return self::$methodName($charges);
    }

    /**
     * @param Charge[] $charges
     * @return array
     */
    private static function buildBilletCreditcard(array $charges)
    {
        $chargeInformation = [];
        foreach ($charges as $key => $charge) {
            /**
             * @var Transaction $billetTransaction
             */
            $billetTransaction = array_filter(
                $charge->getTransactions(),
                function (Transaction $transaction) {
                    return $transaction->getTransactionType()->equals(
                        TransactionType::boleto()
                    );
                }
            );

            if (empty($billetTransaction)) {
                $acquirerNsuCapturedAndAutorize =
                    $charge->getAcquirerTidCapturedAndAutorize();

                $chargeInformation[$key]["cc_tid"] =
                    $charge->getLastTransaction()->getAcquirerTid();

                $chargeInformation[$key]["cc_nsu_authorization"] =
                    $acquirerNsuCapturedAndAutorize['authorized'];

                $chargeInformation[$key]["cc_nsu_capture"] =
                    $acquirerNsuCapturedAndAutorize['captured'];

                continue;
            }

            $chargePostData = $billetTransaction[0]->getPostData();
            if (!empty($chargePostData->nosso_numero)) {
                $chargeInformation[$key]['billet_buyer_our_number'] =
                    $chargePostData->nosso_numero;
            }
        }

        return $chargeInformation;
    }

    /**
     * @param Charge[] $charges
     * @return array
     */
    private static function buildTwoCreditcard(array $charges)
    {
        $nameForTwoCards = ['_first', '_second'];

        $chargeInformation = [];
        foreach ($charges as $key => $charge) {
            $name = $nameForTwoCards[$key];

            $acquirerNsuCapturedAndAutorize =
                $charge->getAcquirerTidCapturedAndAutorize();

            $chargeInformation[$key]["cc_tid{$name}"] =
                $charge->getLastTransaction()->getAcquirerTid();

            $chargeInformation[$key]["cc_nsu_authorization{$name}"] =
                $acquirerNsuCapturedAndAutorize['authorized'];

            $chargeInformation[$key]["cc_nsu_capture{$name}"] =
                $acquirerNsuCapturedAndAutorize['captured'];
        }

        return $chargeInformation;
    }

    /**
     * @param Charge[] $charges
     * @return array
     */
    private static function buildCreditcard(array $charges)
    {
        $chargeInformation = [];
        foreach ($charges as $key => $charge) {
            $acquirerNsuCapturedAndAutorize =
                $charge->getAcquirerTidCapturedAndAutorize();

            $chargeInformation[$key]["cc_tid"] =
                $charge->getLastTransaction()->getAcquirerTid();

            $chargeInformation[$key]["cc_nsu_authorization"] =
                $acquirerNsuCapturedAndAutorize['authorized'];

            $chargeInformation[$key]["cc_nsu_capture"] =
                $acquirerNsuCapturedAndAutorize['captured'];
        }

        return $chargeInformation;
    }

    /**
     * @param Charge[] $charges
     * @return array
     */
    private static function buildBillet(array $charges)
    {
        $chargeInformation = [];
        foreach ($charges as $key => $charge) {
            $chargePostData = $charge->getLastTransaction()->getPostData();

            if (!empty($chargePostData->nosso_numero)) {
                $chargeInformation[$key]['billet_buyer_our_number'] =
                    $chargePostData->nosso_numero;
            }
        }

        return $chargeInformation;
    }
}