JEMBOT MAWOT Bypass Shell

Current Path : /home/cinepatreb/billetterie/modules/mollie/src/Service/
Upload File :
Current File : /home/cinepatreb/billetterie/modules/mollie/src/Service/CustomerService.php

<?php
/**
 * Mollie       https://www.mollie.nl
 *
 * @author      Mollie B.V. <info@mollie.nl>
 * @copyright   Mollie B.V.
 * @license     https://github.com/mollie/PrestaShop/blob/master/LICENSE.md
 *
 * @see        https://github.com/mollie/PrestaShop
 * @codingStandardsIgnoreStart
 */

namespace Mollie\Service;

use MolCustomer;
use Mollie;
use Mollie\Exception\MollieException;
use Mollie\Repository\MolCustomerRepository;
use Mollie\Utility\CustomerUtility;

if (!defined('_PS_VERSION_')) {
    exit;
}

class CustomerService
{
    /**
     * @var Mollie
     */
    private $mollie;

    /**
     * @var MolCustomerRepository
     */
    private $customerRepository;

    public function __construct(Mollie $mollie, MolCustomerRepository $customerRepository)
    {
        $this->mollie = $mollie;
        $this->customerRepository = $customerRepository;
    }

    /**
     * @return MolCustomer|null
     *
     * @throws MollieException
     * @throws \PrestaShopDatabaseException
     * @throws \PrestaShopException
     */
    public function processCustomerCreation(int $customerId)
    {
        $customer = new \Customer($customerId);

        $fullName = CustomerUtility::getCustomerFullName($customer->id);
        /** @var MolCustomer|null $molCustomer */
        $molCustomer = $this->getCustomer($customerId);

        if ($molCustomer) {
            return $molCustomer;
        }

        $mollieCustomer = $this->createCustomer($fullName, $customer->email);

        $molCustomer = new MolCustomer();
        $molCustomer->name = $fullName;
        $molCustomer->email = $customer->email;
        $molCustomer->customer_id = $mollieCustomer->id;
        $molCustomer->created_at = $mollieCustomer->createdAt;

        $molCustomer->add();

        return $molCustomer;
    }

    /**
     * @return \MolCustomer|null
     *
     * @throws \PrestaShopException
     */
    public function getCustomer(int $customerId)
    {
        $customer = new \Customer($customerId);

        $fullName = CustomerUtility::getCustomerFullName($customer->id);

        /* @var MolCustomer|null $molCustomer */
        return $this->customerRepository->findOneBy(/* @phpstan-ignore-line */
            [
                'name' => $fullName,
                'email' => $customer->email,
            ]
        );
    }

    public function createCustomer($name, $email)
    {
        try {
            return $this->mollie->getApiClient()->customers->create(
                [
                    'name' => $name,
                    'email' => $email,
                ]
            );
        } catch (\Exception $e) {
            throw new MollieException('Failed to create Mollie customer', MollieException::CUSTOMER_EXCEPTION, $e);
        }
    }
}

xxxxx1.0, XXX xxxx