<?php
$bp_dbp = array();
$bp_sbp = array();
$medical_date = array();

$sbp_new = array();
$dbp_new = array();


$query = "SELECT bp_sbp as sbp, date(appointment_date) as dat FROM employee_appointment 
where emp_id='$id'and bp_sbp != '' or bp_sbp !=0
UNION
SELECT cf.checkup_form_value as sbp ,date(c.checkup_date) as dat from 
checkup_form c left join checkup_form_key_value cf on 
c.checkup_id=cf.checkup_form_id left join checkup_parameter cp on 
cp.`column_name` = cf.checkup_form_key 
where c.emp_id='$id' and  (cp.key_health_map_name=(select key_param_id from key_health_reportable_parameter_master where key_param_name='sbp') or 
cp.key_health_map_name=(select key_param_id from key_health_reportable_parameter_master where key_param_name='sbp/dbp')) order by dat desc limit 25";

error_log("sbp query " . $query);
$result = @mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
    while ($row = @mysqli_fetch_array($result)) {
        array_push($medical_date, $row[1]);

        $bp_arr = explode("/", $row[0]);
        error_log("size " . count($bp_arr));
        if (count($bp_arr) > 1) {
            $bp_sbp['sbp'][$row[1]] = $bp_arr[0];
            // array_push($bp_sbp, $bp_arr[0]);
        } else {
            $bp_sbp['sbp'][$row[1]] = $bp_arr[0];
            // array_push($bp_sbp, $bp_arr[0]);
        }
    }
}

$query = "SELECT bp_dbp as dbp, date(appointment_date) as dat FROM employee_appointment 
where emp_id='$id'and bp_dbp != '' or bp_dbp !=0
UNION
SELECT cf.checkup_form_value as dbp ,date(c.checkup_date) as dat from 
checkup_form c left join checkup_form_key_value cf on 
c.checkup_id=cf.checkup_form_id left join checkup_parameter cp on 
cp.`column_name` = cf.checkup_form_key 
where c.emp_id='$id' and  (cp.key_health_map_name=(select key_param_id from key_health_reportable_parameter_master where key_param_name='dbp') or 
cp.key_health_map_name=(select key_param_id from key_health_reportable_parameter_master where key_param_name='sbp/dbp')) order by dat desc limit 25";

error_log("dbp query " . $query);
$result = @mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
    while ($row = @mysqli_fetch_array($result)) {
        array_push($medical_date, $row[1]);

        $bp_arr = explode("/", $row[0]);
        error_log("size " . count($bp_arr));

        if (count($bp_arr) > 1) {
            $bp_dbp['dbp'][$row[1]] = $bp_arr[1];
            // array_push($bp_dbp, $bp_arr[1]);
        } else {
            $bp_dbp['dbp'][$row[1]] = $bp_arr[0];
            // array_push($bp_dbp, $bp_arr[0]);
        }
    }
}
$medical_date = array_values(array_unique($medical_date));

for ($i = 0; $i < count($medical_date); $i++) {

    error_log("inside loop value" . $bp_sbp['sbp'][$medical_date[$i]]);
    error_log("inside loop value" . $bp_dbp['dbp'][$medical_date[$i]]);

    if ($bp_sbp['sbp'][$medical_date[$i]] == '') {
        array_push($sbp_new, 0);
    } else {
        array_push($sbp_new, $bp_sbp['sbp'][$medical_date[$i]]);
    }
    if ($bp_dbp['dbp'][$medical_date[$i]] == '') {
        array_push($dbp_new, 0);
    } else {
        array_push($dbp_new, $bp_dbp['dbp'][$medical_date[$i]]);
    }
}

error_log("final sbp " . print_r($sbp_new, true));
error_log("final dbp " . print_r($dbp_new, true));
?>


<script>
    var ctx = document.getElementById('patient_bp').getContext('2d');
    var bp_dbp = [<?php echo join(',', $dbp_new); ?>];
    var bp_sbp = [<?php echo join(',', $sbp_new); ?>];
    var xaxis = [<?php echo json_encode($medical_date); ?>];

    function formatDateBP(input) {
        var datePart = input.match(/\d+/g),
            year = datePart[0],
            month = datePart[1],
            day = datePart[2];
        return day + '-' + month + '-' + year;
    }
    for (let i = 0; i < xaxis[0].length; i++) {
        xaxis[0][i] = formatDateBP(xaxis[0][i]);
    }

    var myChart = new Chart(ctx, {
        type: 'line',
        options: {
            title: {
                display: true,
                text: "BP Graph"
            },
            legend: {
                position: "bottom"
            },
            scales: {
                yAxes: [{
                    ticks: {
                        precision: 0
                    }
                }]
            }
        },
        data: {
            labels: xaxis[0],
            datasets: [{
                data: bp_dbp,
                label: "DBP",
                borderColor: "#d45087",
                backgroundColor: "#d45087",
                fill: false,
                pointBackgroundColor: function(context) {
                    var index = context.dataIndex;
                    var value = context.dataset.data[index];
                    return value < 85 ? 'red' : // draw negative values in red
                        index % 2 ? 'blue' :
                        // else, alternate values in blue and green
                        'green';
                }
            }, {
                data: bp_sbp,
                label: "SBP",
                borderColor: "#ff7c43",
                backgroundColor: "#ffa500",
                fill: false,
                pointBackgroundColor: function(context) {
                    var index = context.dataIndex;
                    var value = context.dataset.data[index];
                    return value < 124 ? 'red' : // draw negative values in red
                        index % 2 ? 'blue' :
                        // else, alternate values in blue and green
                        'green';
                }
            }]
        },
    });
</script>