Current File : /var/www/vinorea/modules/ipexportimport/classes/import/order/EIAMessage.php
<?php
/**
 *
 * NOTICE OF LICENSE
 *
 *  @author    SmartPresta <tehran.alishov@gmail.com>
 *  @copyright 2024 SmartPresta
 *  @license   Commercial License
 */

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

class EIAMessage
{

    public $id_cart;
    public $id_order;
    public $id_customer;
    public $baseOrderData;
    public $id_message;
    public $row;
    public $id_process;
    public $validateOnly; 

    public function __construct($id_order = null, $id_cart = null, $id_customer = null, $baseOrderData = null, $row = null, $id_process = null, $validateOnly = false)
    {
        $this->id_cart = (int) $id_cart;
        $this->id_order = (int) $id_order;
        $this->id_customer = (int) $id_customer;
        $this->baseOrderData = $baseOrderData;
        $this->row = $row;
        $this->id_process = $id_process;
        $this->validateOnly = $validateOnly;
    }

    public function save()
    {
        $id_message = $this->getIdMessage();
        $obj = new Message((int) $id_message);
        if (isset($this->baseOrderData['message'])) {
            $messages = explode(';;', $this->baseOrderData['message']);
            foreach ($messages as $message) {
                $mes_parts = explode('!', $message, 2);
                $obj->id_order = $this->id_order;
                $obj->id_customer = $this->id_customer;
                $obj->private = (int) trim($mes_parts[0]);
                if (isset($mes_parts[1])) {
                    $obj->message = ltrim($mes_parts[1]);
                } else {
                    $obj->private = 0;
                    $obj->message = trim($mes_parts[0]);
                }
                $obj->id_employee = 0;
                if (($error = $obj->validateFields(false, true)) !== true) {
                    throw new PrestaShopException("Error: $error. ID: $this->id_order. Row in file: $this->row.");
                }
                $this->validateOnly || $obj->save();
            }
        }
    }

    private function getIdMessage()
    {
        $sql = "
            SELECT *
            FROM " . _DB_PREFIX_ . "message as o
            WHERE o.id_order = " . (int) $this->id_order . "
            AND o.id_customer = " . (int) $this->id_customer;
        
        $message = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql);
        if (isset($message['id_message']) && $message['id_message']) {
            return $message['id_message'];
        }
        return false;
    }

}