<?php
// Add fields before order button
add_action( 'woocommerce_review_order_before_submit', 'custom_checkout_photo_signature_fields', 20 );
function custom_checkout_photo_signature_fields() {
    ?>
    <div class="custom-checkout-box">
        <h3>Upload Photo</h3>
        <input type="file" name="checkout_photo" accept="image/*" required>
    </div>

    <div class="custom-checkout-box">
        <h3>Signature</h3>
        <canvas id="signature-pad"></canvas>
        <input type="hidden" name="signature_image" id="signature_image">
        <button type="button" id="clear-signature">Clear</button>
    </div>

    <script>
        document.addEventListener("DOMContentLoaded", function () {
            var canvas = document.getElementById('signature-pad');
            var signaturePad = canvas.getContext('2d');
            var drawing = false;

            canvas.addEventListener('mousedown', function (e) {
                drawing = true;
                signaturePad.beginPath();
                signaturePad.moveTo(e.offsetX, e.offsetY);
            });
            canvas.addEventListener('mousemove', function (e) {
                if (drawing) {
                    signaturePad.lineTo(e.offsetX, e.offsetY);
                    signaturePad.stroke();
                }
            });
            canvas.addEventListener('mouseup', function () {
                drawing = false;
                document.getElementById('signature_image').value = canvas.toDataURL();
            });

            document.getElementById('clear-signature').addEventListener('click', function () {
                signaturePad.clearRect(0, 0, canvas.width, canvas.height);
                document.getElementById('signature_image').value = '';
            });
        });
    </script>
    <?php
}

// Save uploaded photo
add_action( 'woocommerce_checkout_create_order', 'save_checkout_photo_signature', 10, 2 );
function save_checkout_photo_signature( $order, $data ) {
    if ( isset( $_FILES['checkout_photo'] ) && !empty( $_FILES['checkout_photo']['name'] ) ) {
        require_once( ABSPATH . 'wp-admin/includes/file.php' );
        $uploaded = media_handle_upload( 'checkout_photo', 0 );
        if ( ! is_wp_error( $uploaded ) ) {
            $photo_url = wp_get_attachment_url( $uploaded );
            $order->update_meta_data( '_checkout_photo', $photo_url );
        }
    }

    if ( !empty( $_POST['signature_image'] ) ) {
        $order->update_meta_data( '_signature_image', $_POST['signature_image'] );
    }
}

// Display in admin
add_action( 'woocommerce_admin_order_data_after_billing_address', function( $order ) {
    $photo = $order->get_meta( '_checkout_photo' );
    $signature = $order->get_meta( '_signature_image' );
    if ( $photo ) {
        echo '<p><strong>Uploaded Photo:</strong><br><img src="' . esc_url( $photo ) . '" style="max-width:200px;"></p>';
    }
    if ( $signature ) {
        echo '<p><strong>Signature:</strong><br><img src="' . esc_url( $signature ) . '" style="max-width:200px;"></p>';
    }
});
