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/vendor/extmag/shiplab/Controller/Rma/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/extmag/shiplab/Controller/Rma/Save.php
<?php
/**
 * Copyright © Extmag. All rights reserved.
 */

namespace Extmag\Shiplab\Controller\Rma;

use Extmag\Shiplab\Controller\Rma;
use Exception;
use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface;
use Magento\Framework\App\Area;
use Magento\Sales\Api\Data\OrderItemInterface;
use Magento\Sales\Model\Order;
use Magento\Store\Model\Store;

class Save extends Rma implements HttpPostActionInterface
{
    public function execute()
    {
        try {
            /**
             * @var Order $order
             */
            $order = $this->orderRepository->get($this->getRequest()->getParam('order_id'));
            if ($order) {
                $carrierCode = $this->getCarrierCode($order);
                if (!empty($carrierCode)
                    && $this->manager->getConfig(
                        $carrierCode . '_refund/customer/allow_create',
                        $order->getStoreId(),
                        'refund',
                        $order->getShippingAddress()->getCountryId()
                    ) == 1
                ) {
                    $productsQty = $this->getRequest()->getPost('product', []);
                    $comment = $this->getRequest()->getPost('comment');
                    if (!empty($productsQty) && is_array($productsQty)) {
                        $products = [];
                        foreach ($productsQty as $key => $value) {
                            if (is_numeric($value) && $value > 0) {
                                /**
                                 * @var OrderItemInterface $orderProduct
                                 */
                                $orderProduct = $order->getItemById($key);
                                if ($orderProduct) {
                                    $productQuantity = $orderProduct->getQtyShipped() > 0 ? $orderProduct->getQtyShipped() : $orderProduct->getQtyOrdered();
                                    if ($productQuantity - $orderProduct->getQtyRefunded() >= (int)$value) {
                                        $orderProduct->setQtyOrdered($value);
                                        $products[] = $orderProduct;
                                    } else {
                                        $this->messageManager->addErrorMessage(
                                            __('Product %1 has wrong quantity', $orderProduct->getName())
                                        );
                                        unset($products);
                                        break;
                                    }
                                } else {
                                    $this->messageManager->addErrorMessage(__('Product is not found'));
                                    unset($products);
                                    break;
                                }
                            }
                        }

                        if (!empty($products)) {
                            $helperLabel = $this->helperLabel->create();
                            $savedLabels = $helperLabel->makeDataAndSaveLabel(
                                $carrierCode,
                                [$order->getId()],
                                'order',
                                'refund',
                                'customer',
                                $products,
                                ['comment' => $comment]
                            );
                            if (!empty($savedLabels['success'])) {
                                $this->sendEmail($carrierCode, $order, $savedLabels['success'], $comment);
                                $this->messageManager->addSuccessMessage(
                                    __('Labels were created for %1 shipment(s)', count($savedLabels['success']))
                                );
                            }

                            if (!empty($savedLabels['error'])) {
                                $this->messageManager->addErrorMessage(
                                    __('Labels were not created for %1 shipment(s)', count($savedLabels['error']))
                                );
                            }
                        } else {
                            $this->messageManager->addErrorMessage(__('Carrier is wrong'));
                        }
                    } else {
                        $this->messageManager->addErrorMessage(__('Post data is wrong'));
                    }
                } else {
                    $this->messageManager->addErrorMessage(__('Access denied'));
                }
            } else {
                $this->messageManager->addErrorMessage(__('Order is not found'));
            }
        } catch (Exception $e) {
            $this->logger->error($e->getMessage());
            $this->logger->error($e->getTraceAsString());
            $this->messageManager->addErrorMessage(__('Unknown error'));
        }

        $result = $this->resultRedirectFactory->create();
        $result->setPath('sales/order/view', ['order_id' => $this->getRequest()->getParam('order_id')]);
        return $result;
    }

    private function sendEmail($carrierCode, $order, $labels, $comment)
    {
        $trackingNumbers = [];
        foreach ($labels as $label){
            $trackingNumbers = array_merge($trackingNumbers, $this->labelRepository->getById((int)$label)->getTrackingNumbers());
        }
        $to = $this->senderResolver->resolve(
            $this->manager->getConfig(
                $carrierCode . '_refund/general/email_recipient',
                $order->getStoreId(),
                'refund',
                $order->getShippingAddress()->getCountryId()
            )
        );
        $this->state->suspend();
        $transport = $this->transportBuilder
            ->setTemplateIdentifier(
                $this->manager->getConfig(
                    $carrierCode . '_refund/general/email_template',
                    $order->getStoreId(),
                    'refund',
                    $order->getShippingAddress()->getCountryId()
                )
            )
            ->setTemplateOptions([
                'area' => Area::AREA_FRONTEND,
                'store' => Store::DEFAULT_STORE_ID,
            ])
            ->setTemplateVars(
                [
                    'order_id' => $order->getIncrementId(),
                    'tracking_number' => implode(", ", $trackingNumbers),
                    'date' => date('Y-m-d H:i:s'),
                    'customer_name' => $order->getBillingAddress()->getFirstName()
                        . ' ' . $order->getBillingAddress()->getLastName(),
                    'comment' => $comment,
                ]
            )
            ->setFromByScope(
                $this->manager->getConfig(
                    $carrierCode . '_refund/general/email_recipient',
                    $order->getStoreId(),
                    'refund',
                    $order->getShippingAddress()->getCountryId()
                )
            )
            ->addTo($to['email'], $to['name']);
        $transport = $transport->getTransport();
        $transport->sendMessage();
        $this->state->resume();
    }
}

Spamworldpro Mini