<?php
require('classes/fpdf.php');
require('classes/db.class.php');

$db = new db();
$where_data = $_POST['where_data'];


$pdf = new FPDF();
$pdf->AliasNbPages();
$pdf->AddPage('l');

$pdf->SetFont('Arial', 'B', 20);
$pdf->Cell(200, 15, "FARMING REPORT ", 0, 1, 'C');
$pdf->Cell(10, 5, '', 0, 1, 'L');
$pdf->SetFont('Arial', '', 10);
// farms data
$farms_res = $db->query("SELECT DISTINCT(farm_id) FROM tasks WHERE $where_data");
while ($farms_tasks = $farms_res->fetch_assoc()) {
    // get farm name
    $farm_name_res = $db->query("SELECT farm_name FROM farms WHERE record_id = {$farms_tasks['farm_id']}");
    $farm_name = $farm_name_res->fetch_assoc();

    $pdf->SetFont('Arial', 'B', 15);
    $pdf->Cell(200, 15, "{$farm_name['farm_name']} farming types summary", 0, 1, 'C');
    $pdf->SetFont('Arial', '', 10);


    $farming_types_table = [38, 38, 38, 95];
    $pdf->Cell($farming_types_table[0], 8, "TYPE", 1, 0, 'L');
    $pdf->Cell($farming_types_table[1], 8, "TOTAL TASKS", 1, 0, 'L');
    $pdf->Cell($farming_types_table[2], 8, "TOTAL COMPELTED", 1, 0, 'L');
    $pdf->Cell($farming_types_table[3], 8, "BLOCKS DONE", 1, 1, 'L');
    // get distict farming_types in the tasks table from where data
    $farming_types_res = $db->query("SELECT DISTINCT(farming_type_id) FROM tasks WHERE $where_data AND farm_id = {$farms_tasks['farm_id']}");
    while ($farming_type = $farming_types_res->fetch_assoc()) {
        $farming_type_id = $farming_type['farming_type_id'];

        // get the farming type name
        $farming_type_name_res = $db->query("SELECT name FROM farming_types WHERE record_id = $farming_type_id");
        $farming_type_name = $farming_type_name_res->fetch_assoc();

        // get the count of the farming type
        $farming_type_count_res = $db->query("SELECT * FROM tasks WHERE $where_data AND farming_type_id = $farming_type_id AND farm_id = {$farms_tasks['farm_id']}");
        $farming_type_count = $farming_type_count_res->num_rows;

        // name
        $pdf->Cell($farming_types_table[0], 8, $farming_type_name['name'], 1, 0, 'L');

        // amount of tasks
        $pdf->Cell($farming_types_table[1], 8, $farming_type_count, 1, 0, 'L');

        // get the count of the farming types completed
        $farming_type_count_res = $db->query("SELECT * FROM tasks WHERE $where_data AND farming_type_id = $farming_type_id AND farm_id = {$farms_tasks['farm_id']} AND date_completed != ''");
        $farming_type_count = $farming_type_count_res->num_rows;
        $pdf->Cell($farming_types_table[1], 8, $farming_type_count, 1, 0, 'L');


        // get all blocks targeted
        $farming_type_blocks_res = $db->query("SELECT cluster_ids FROM tasks WHERE $where_data AND farming_type_id = $farming_type_id AND farm_id = {$farms_tasks['farm_id']}");
        $blocks = $blocks . "";
        while ($farming_type_block = $farming_type_blocks_res->fetch_assoc()) {
            $blocks = $blocks . $farming_type_block['cluster_ids'] . ",";
        }
        $pdf->Cell($farming_types_table[3], 8, $blocks, 1, 1, 'L');
        $blocks = "";
    }
}

function get_username($user_id)
{
    global $db;
    $user_res = $db->query("SELECT username FROM users WHERE record_id = $user_id");
    $user = $user_res->fetch_assoc();
    return $user['username'];
}
$pdf->AddPage('l');
$pdf->SetFont('Arial', 'B', 20);
$pdf->Cell(200, 15, "DETAILS ", 0, 1, 'C');
$pdf->Cell(10, 5, '', 0, 1, 'L');
$pdf->SetFont('Arial', '', 10);
$farms_res = $db->query("SELECT DISTINCT(farm_id) FROM tasks WHERE $where_data");
while ($farms_tasks = $farms_res->fetch_assoc()) {
    // get farm name
    $farm_name_res = $db->query("SELECT farm_name FROM farms WHERE record_id = {$farms_tasks['farm_id']}");
    $farm_name = $farm_name_res->fetch_assoc();

    $pdf->SetFont('Arial', 'B', 15);
    $pdf->Cell(200, 15, "{$farm_name['farm_name']}", 0, 1, 'C');
    $pdf->SetFont('Arial', '', 7);

    $farming_types_table = [15, 25, 25, 95, 30, 30, 25, 25, 25, 25];
    $pdf->Cell($farming_types_table[0], 6, "Farm", 1, 0, 'L');
    $pdf->Cell($farming_types_table[1], 6, "Type", 1, 0, 'L');
    $pdf->Cell($farming_types_table[2], 6, "Action", 1, 0, 'L');

    $pdf->Cell($farming_types_table[4], 6, "Assinged", 1, 0, 'L');
    $pdf->Cell($farming_types_table[5], 6, "Created", 1, 0, 'L');
    $pdf->Cell($farming_types_table[3], 6, "Blocks", 1, 1, 'L');

    // get distict farming_types in the tasks table from where data
    $task_res = $db->query("SELECT * FROM tasks WHERE $where_data AND farm_id = {$farms_tasks['farm_id']}");
    while ($task = $task_res->fetch_assoc()) {
        $pdf->Cell($farming_types_table[6], 3, "", 0, 1, 'L');


        $farming_type_id = $task['farming_type_id'];
        $farming_action_id = $task['farming_action_id'];

        $farming_type_name_res = $db->query("SELECT * FROM farming_types WHERE record_id = $farming_type_id");
        $farming_type_name = $farming_type_name_res->fetch_assoc();



        $farming_action_name_res = $db->query("SELECT * FROM farming_action WHERE record_id = $farming_action_id");
        $farming_action_name = $farming_action_name_res->fetch_assoc();

        $pdf->Cell($farming_types_table[0], 6, $farm_name['farm_name'], 1, 0, 'L');
        $pdf->Cell($farming_types_table[1], 6, $farming_type_name['name'], 1, 0, 'L');
        $pdf->Cell($farming_types_table[2], 6, $farming_action_name['name'], 1, 0, 'L');

        $pdf->Cell($farming_types_table[4], 6, get_username($task['user_id']), 1, 0, 'L');
        $pdf->Cell($farming_types_table[5], 6, get_username($task['user_id_created']), 1, 0, 'L');
        $pdf->Cell($farming_types_table[3], 6, $task['cluster_ids'], 1, 1, 'L');
        $pdf->Cell($farming_types_table[6], 6, "", 0, 1, 'L');
        $pdf->Cell($farming_types_table[6], 6, "Created", 1, 0, 'L');
        $pdf->Cell($farming_types_table[7], 6, "Completed", 1, 0, 'L');
        $pdf->Cell($farming_types_table[8], 6, "Action Date", 1, 1, 'L');
        $pdf->Cell($farming_types_table[6], 6, $task['date_created'], 1, 0, 'L');
        $pdf->Cell($farming_types_table[7], 6, $task['date_completed'], 1, 0, 'L');
        $pdf->Cell($farming_types_table[8], 6, $task['action_date'], 1, 1, 'L');
        $pdf->SetFont('Arial', '', 10);
        $pdf->Cell($farming_types_table[6], 6, "", 0, 1, 'L');

        $pdf->Cell(100, 6, "Instruction", 0, 1, 'L');
        $pdf->SetFont('Arial', '', 7);
        $pdf->multiCell(100, 6, $task['instruction'], 0, 'L');


        // Coments on that task
        $pdf->SetFont('Arial', '', 10);
        $pdf->Cell($farming_types_table[6], 6, "", 0, 1, 'L');

        $pdf->Cell(100, 6, "COMENTS / TIME LOG", 0, 1, 'L');
        $pdf->SetFont('Arial', '', 7);
        $coments_res = $db->query("SELECT * FROM comment_logs WHERE task_id = {$task['record_id']}");
        while ($coment = $coments_res->fetch_assoc()) {
            if ($coment['user_id'] == 0) {
                $username = "SYSTEM [data from before user was added to comments]";
            } else {
                $user_id_res = $db->exec_query("users", ['*'], '', '', '', '', "record_id = {$coment['user_id']}");
                $user_id_info = $user_id_res->fetch_assoc();
                $username = $user_id_info['username'];
            }

            $pdf->multiCell(100, 6, $coment['date_time'] . " : " . $coment['comments'] . " -> " . $username, 0, 'L');
        }


        $pdf->Cell(150, 8, "", "B", 1, 'L');
    }
}

$pdf->Output("I");
