Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/app/code/Zendesk/Zendesk/Observer/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/app/code/Zendesk/Zendesk/Observer/CreditMemoSaveAfter.php
<?php
/**
 * @category    ClassyLlama
 * @copyright   Copyright (c) 2020 Classy Llama Studios, LLC
 */

namespace Zendesk\Zendesk\Observer;

use Magento\Framework\Event\Observer;
use Zendesk\Zendesk\Model\Config\ConfigProvider;
use Zendesk\Zendesk\Helper\Sunshine;

class CreditMemoSaveAfter extends Base
{

    /**
     * Event name: sales_order_creditmemo_save_after
     *
     * @param Observer $observer
     */
    public function execute(Observer $observer)
    {
        if (!$this->isEnabled(ConfigProvider::XML_PATH_EVENT_REFUND_STATUS)) {
            return;
        }
        $this->observer = $observer;

        // check if user was logged in
        if($this->observer->getCreditmemo()->getOrder()->getCustomerId() === null) {
            return;
        }

        try {
            $this->createEvent();
        } catch (\Exception $exception) {
            $this->logError($exception->getMessage());
            return;
        }
    }

    /**
     * @return array
     */
    protected function getSunshineEvent()
    {
        try {
            $items = $this->observer->getCreditmemo()->getItems();
            $itemsArray = $this->makeItemArray($items);
            return [
                'event' => [
                    'created_at' => date('c'),
                    'description' => 'refund created',
                    'properties' => [
                        'refund_line_items' => $itemsArray,
                        'total refunded' => $this->observer->getCreditmemo()->getGrandTotal()
                    ],
                    'source' => Sunshine::IDENTIFIER,
                    'type' => 'refund created'
                ],
                'profile' => [
                    'identifiers' => [
                        [
                            'type' => 'email',
                            'value' => $this->observer->getCreditmemo()->getOrder()->getCustomerEmail()
                        ],
                        [
                            'type' => 'id',
                            'value' => strval($this->observer->getCreditmemo()->getOrder()->getCustomerId())
                        ]
                    ],
                    'source' => Sunshine::IDENTIFIER,
                    'type' => Sunshine::PROFILE_TYPE
                ]
            ];
        } catch (\Exception $exception) {
            $this->logError($exception->getMessage());
            return [];
        }
    }

    /**
     * @param $items
     * @return array
     */
    protected function makeItemArray($items)
    {
        $itemArray = [];
        foreach ($items as $item) {
            $orderItemId = $item->getOrderItemId();
            $orderItems = $this->observer->getCreditmemo()->getOrder()->getitems();
            if (array_key_exists($orderItemId, $orderItems)) {
                $hasParent = $this->observer->getCreditmemo()->getOrder()->getitems()[$orderItemId]->getParentItem();
            } else {
                $hasParent = $item->getParentItem();
            }
            // Only add to array, if it doesn't have a parent product.
            if (!$hasParent) {
                $data = [
                    'name' => $item->getName(),
                    'qty' => number_format($item->getQtyRefunded() ?? $item->getQty(), 0, '.', ','),
                    'price' => number_format($item->getPriceInclTax(), 2, '.', ',')
                ];
                if ($data['qty']) {
                    $itemArray [] = $data;
                }
            }
        }

        return $itemArray;
    }
}

Spamworldpro Mini