🌹🏠🌹？》《》？《》？<?php

namespace Imagenes_Documentacion\Classes;
use PDO;

// DTO integrado
class DocumentacionContactoComercialDTO
{
    public $id;
    public $rubro_empresa;
    public $tipo_presentacion;
    public $imagen_producto;
    public $almacenamiento_requerido;
    public $cantidad_almacenamiento_requerido;
    public $medio_ingreso;
    public $detallado_unidades;
    public $tiene_productos_codigo;
    public $ingreso_control_numero_serie;
    public $tipo_despacho_mes;
    public $unidades_despachos_mes;
    public $emision_remitos_operador;
    public $emision_cot_operador_logistico;
    public $emision_factura_operador;
    public $control_numero_serie_despacho;
    public $requerimiento_transporte;
    public $custodia_satelital;
    public $monitoreo_activo_seguridad;
    public $seguro_mercaderia;
    public $rendicion_remito_fisico;
    public $contacto_id;

    public function __construct(array $data)
    {
        foreach ($data as $key => $value) {
            if (property_exists($this, $key)) {
                $this->$key = $value;
            }
        }
    }
}

class EnvioDocumentacion{
    public $conexion;
    public $documentacion;

    public function __construct($documentacion_contacto_comercial)
    {
        $this->documentacion = $documentacion_contacto_comercial;
        $this->conexion = new PDO("sqlite:" . dirname(__DIR__) . "/cotizador_documentacion.db");
    }

    public function guardar()
    {
        if (!is_object($this->documentacion)) {
            return false;
        }

        $contacto = self::obtenerContactoComercialById($this->documentacion->contacto_id);
        if (!$contacto) {
            return false;
        }

        $insert = $this->conexion->prepare("INSERT INTO cotizador_contacto_comercial (
            id, rubro_empresa, tipo_presentacion, imagen_producto, almacenamiento_requerido, 
            cantidad_almacenamiento_requerido, medio_ingreso, detallado_unidades, tiene_productos_codigo, 
            ingreso_control_numero_serie, tipo_despacho_mes, unidades_despachos_mes, 
            emision_remitos_operador, emision_cot_operador_logistico, emision_factura_operador, 
            control_numero_serie_despacho, requerimiento_transporte, custodia_satelital, 
            monitoreo_activo_seguridad, seguro_mercaderia, rendicion_remito_fisico, contacto_id
        ) VALUES (
            :id, :rubro_empresa, :tipo_presentacion, :imagen_producto, :almacenamiento_requerido, 
            :cantidad_almacenamiento_requerido, :medio_ingreso, :detallado_unidades, :tiene_productos_codigo, 
            :ingreso_control_numero_serie, :tipo_despacho_mes, :unidades_despachos_mes, 
            :emision_remitos_operador, :emision_cot_operador_logistico, :emision_factura_operador, 
            :control_numero_serie_despacho, :requerimiento_transporte, :custodia_satelital, 
            :monitoreo_activo_seguridad, :seguro_mercaderia, :rendicion_remito_fisico, :contacto_id
        )");

        foreach (get_object_vars($this->documentacion) as $key => $value) {
            $insert->bindValue(":$key", $value);
        }

        return $insert->execute();
    }

    public static function obtenerContactoComercialById($id)
    {
        $conexion = new PDO("sqlite:" . dirname(__DIR__) . "/cotizador_documentacion.db");
        $query = $conexion->prepare("SELECT * FROM cotizador_contacto_comercial WHERE id = :id LIMIT 1;");
        $query->bindParam(":id", $id);
        $query->execute();
        return $query->fetch(PDO::FETCH_OBJ);
    }
}