FROM php:8.2-apache

# Instalar dependências do sistema
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libwebp-dev \
    libzip-dev \
    unzip \
    curl \
    wget \
    git \
    imagemagick \
    libmagickwand-dev \
    ghostscript \
    poppler-utils \
    && rm -rf /var/lib/apt/lists/*

# Configurar e instalar extensões PHP
RUN docker-php-ext-configure gd \
    --with-freetype \
    --with-jpeg \
    --with-webp \
    && docker-php-ext-install -j$(nproc) \
    gd \
    zip \
    pdo \
    pdo_mysql \
    opcache

# Instalar ImageMagick para PHP
RUN pecl install imagick && \
    docker-php-ext-enable imagick

# Configurar Apache
RUN a2enmod rewrite headers

# Configurar PHP
RUN echo "memory_limit = 512M" >> /usr/local/etc/php/conf.d/custom.ini && \
    echo "upload_max_filesize = 100M" >> /usr/local/etc/php/conf.d/custom.ini && \
    echo "post_max_size = 100M" >> /usr/local/etc/php/conf.d/custom.ini && \
    echo "max_execution_time = 300" >> /usr/local/etc/php/conf.d/custom.ini && \
    echo "max_input_time = 300" >> /usr/local/etc/php/conf.d/custom.ini

# Configurar política do ImageMagick para permitir PDF
# Procurar e modificar o arquivo policy.xml em qualquer localização
RUN find /etc -name "policy.xml" -type f | while read file; do \
        sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' "$file" 2>/dev/null || true; \
    done || true

# Criar diretório da aplicação
WORKDIR /var/www/html

# Copiar arquivos da aplicação
COPY . /var/www/html/

# Criar diretórios necessários e ajustar permissões
RUN mkdir -p /var/www/html/temp && \
    mkdir -p /var/www/html/temp/cache && \
    mkdir -p /var/www/html/logs && \
    chown -R www-data:www-data /var/www/html && \
    chmod -R 755 /var/www/html && \
    chmod -R 777 /var/www/html/temp && \
    chmod -R 777 /var/www/html/logs

# Configurar Apache VirtualHost com suporte a PATH_INFO
RUN echo '<VirtualHost *:80>\n\
    ServerAdmin admin@localhost\n\
    DocumentRoot /var/www/html\n\
    \n\
    <Directory /var/www/html>\n\
        Options Indexes FollowSymLinks\n\
        AllowOverride All\n\
        Require all granted\n\
    </Directory>\n\
    \n\
    # Configurar PATH_INFO para API\n\
    <FilesMatch "\.php$">\n\
        SetHandler application/x-httpd-php\n\
    </FilesMatch>\n\
    \n\
    # Aceitar PATH_INFO\n\
    AcceptPathInfo On\n\
    \n\
    ErrorLog ${APACHE_LOG_DIR}/error.log\n\
    CustomLog ${APACHE_LOG_DIR}/access.log combined\n\
</VirtualHost>' > /etc/apache2/sites-available/000-default.conf

# Criar script de healthcheck
RUN echo '<?php\n\
header("Content-Type: application/json");\n\
\n\
$status = [\n\
    "status" => "healthy",\n\
    "timestamp" => date("c"),\n\
    "php_version" => PHP_VERSION,\n\
    "extensions" => [\n\
        "gd" => extension_loaded("gd"),\n\
        "imagick" => extension_loaded("imagick"),\n\
        "curl" => extension_loaded("curl"),\n\
        "zip" => extension_loaded("zip")\n\
    ],\n\
    "directories" => [\n\
        "temp" => is_writable("/var/www/html/temp"),\n\
        "logs" => is_writable("/var/www/html/logs")\n\
    ]\n\
];\n\
\n\
http_response_code(200);\n\
echo json_encode($status, JSON_PRETTY_PRINT);' > /var/www/html/health.php

# Copiar e configurar entrypoint
COPY entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh

# Expor porta 80 (será mapeada para 6061 no docker-compose)
EXPOSE 80

# Comando de inicialização
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]