<?php

// ── Database Configuration ──────────────────────────────
$db_host     = "localhost";
$db_user     = "jk_fibre_2026";
$db_password = "^,JL&n6s1FZm";
$db_name     = "jk_fibre_2026";

// ── Secret Token ────────────────────────────────────────
$secret_token = "ankuragarwalonly@9414";

// ── Token Check ─────────────────────────────────────────
if (!isset($_GET['token']) || $_GET['token'] !== $secret_token) {
    http_response_code(404);
    ?>
    <!DOCTYPE html>
    <html>
    <head><title>404 Not Found</title></head>
    <body>
        <h1>Not Found</h1>
        <p>The requested URL was not found on this server.</p>
        <hr><small>Apache Server</small>
    </body>
    </html>
    <?php
    exit;
}

// ── Connect to Database ─────────────────────────────────
$conn = new mysqli($db_host, $db_user, $db_password, $db_name);

if ($conn->connect_error) {
    http_response_code(500);
    exit("Database connection failed.");
}

// ── Table Selection ─────────────────────────────────────
$table = $_GET['table'] ?? 'stock_lcgp';

$queries = [

    'stock_lcgp' => "
        SELECT
            s.rid AS `RID`,
            g.grp AS `Group`,
            p.product AS `Product`,
            s.product_code_pg AS `Product Code`,
            gd.name AS `Godown`,
            s.`in` AS `In`,
            s.`out` AS `Out`,
            s.balance AS `Balance`,
            s.packets AS `Packets`,
            s.packing_type_n AS `Packing Type`,
            s.lot_no AS `Lot No`,
            s.age AS `AGE`,
            b.name AS `Company`
        FROM stock_lcgp s
        LEFT JOIN grp g
            ON s.grp = g.id
        LEFT JOIN product p
            ON s.product = p.id
        LEFT JOIN godown_table gd
            ON s.godown = gd.id
        LEFT JOIN buyer_seller_view b
            ON s.company_id = b.id
    ",

    'partner_product_ref' => "
        SELECT
            `id`,
            `partner_type`,
            `partner`,
            `partner_ref`,
            `barcode`,
            `partner_code`,
            `spl_ins`,
            `grp`,
            `s_grp`,
            `product`,
            `rid`,
            `packing_type`,
            `product_type`,
            `unit`,
            `w`,
            `w_cm`,
            `l`,
            `l_cm`,
            `h`,
            `h_cm`,
            `shape`,
            `partner_size`,
            `sqm`,
            `sqm_a`,
            `srm2_a`,
            `srm4_a`,
            `cbm`,
            `batch_no`,
            `price`,
            `price_cs`,
            `currency`
        FROM partner_product_ref
    ",

    'ref' => "
        SELECT
            `id`,
            `grp`,
            `s_grp`,
            `product`,
            `product_type`,
            `packing_type`,
            `product_code`
        FROM ref
    ",

    'buyer' => "
        SELECT
            id,
            name
        FROM buyer
    ",
    
    'material_required_live' => "SELECT
    mrl.id,
    mrl.poid,

    gw.name AS `Weaving Works`,
    mrl.week AS `Order Week`,
    mrl.po,

    bs.name AS `Buyer`,

    g1.grp AS `Product Group`,
    p1.product AS `Product`,
    r1.product_code AS `Product Code`,

    mrl.quantity AS `Quantity`,
    mrl.size_wl AS `Size (WL)`,
    mrl.sqm AS `SQM`,

    g2.grp AS `Required Material Group`,
    pg1.product_group AS `Required Material Sub Group`,
    p2.product AS `Required Material Product`,
    r2.product_code AS `Required Material Final Product`,
    pt1.packing AS `Required Material Packing`,

    pt2.packing AS `Issue Material Packing`,
    g3.grp AS `Issue Material Group`,
    pg2.product_group AS `Issue Material Sub Group`,
    p3.product AS `Issue Material Product`,
    r3.product_code AS `Issue Material Final Product`,

    mrl.issue_material_qty AS `Issue Material Qty`,

    u.description AS `Unit`,

    mrl.material_qty AS `Material @`,

    mt.item AS `Method`,

    mrl.despatch_week AS `Despatch Week`,
    mrl.despatch_date AS `Despatch Date`,
    mrl.production_plan AS `Production Plan`,

    mrl.stock_online AS `Stock Live`

FROM material_required_live mrl

LEFT JOIN godown_table gw
    ON mrl.weaving_works = gw.id

LEFT JOIN buyer_seller_view bs
    ON mrl.buyer_id = bs.id

LEFT JOIN grp g1
    ON mrl.grp = g1.id

LEFT JOIN product p1
    ON mrl.product = p1.id

LEFT JOIN ref r1
    ON mrl.product_id = r1.id

LEFT JOIN grp g2
    ON mrl.req_material_grp = g2.id

LEFT JOIN product_group pg1
    ON mrl.req_material_sgrp = pg1.id

LEFT JOIN product p2
    ON mrl.req_material_product = p2.id

LEFT JOIN ref r2
    ON mrl.req_material_rid = r2.id

LEFT JOIN packing_type_table pt1
    ON mrl.req_material_packing = pt1.id

LEFT JOIN packing_type_table pt2
    ON mrl.issue_material_packing = pt2.id

LEFT JOIN grp g3
    ON mrl.issue_material_grp = g3.id

LEFT JOIN product_group pg2
    ON mrl.issue_material_sgrp = pg2.id

LEFT JOIN product p3
    ON mrl.issue_material_product = p3.id

LEFT JOIN ref r3
    ON mrl.issue_material_rid = r3.id

LEFT JOIN unit u
    ON mrl.unit = u.id

LEFT JOIN method mt
    ON mrl.method = mt.id;"

];

// ── Validate Table ──────────────────────────────────────
if (!isset($queries[$table])) {
    http_response_code(400);
    exit("Invalid table.");
}

// ── Run Query ───────────────────────────────────────────
$result = $conn->query($queries[$table]);

if (!$result) {
    http_response_code(500);
    exit("Query failed.");
}

// ── Output CSV ──────────────────────────────────────────

$output = fopen('php://output', 'w');

// Header Row
$fields = [];
foreach ($result->fetch_fields() as $field) {
    $fields[] = $field->name;
}
fputcsv($output, $fields);

// Data Rows
while ($row = $result->fetch_row()) {
    fputcsv($output, $row);
}

fclose($output);
$conn->close();
exit;