<?php
$questions_file = file_get_contents('questions.json');
$questions = json_decode($questions_file, TRUE);

$counted_answer_names = [];
foreach($questions['questions'] AS $question) {
    if(isset($question['answers'])) {
        $counted_answer_names[] = $question['id'];
    }
}

$count_answer = [];
$answer_files = [];
foreach(scandir('.') AS $file_name) {
    if(str_contains($file_name, 'ans_')) {
        $answer_file = file_get_contents($file_name);
        $answer_files[] = $file_name;
        $answers = json_decode($answer_file, TRUE);
        foreach($answers AS $answer_name => $answer_value) {
            if(in_array($answer_name, $counted_answer_names)) {
                if(!array_key_exists($answer_name, $count_answer)) {
                    $count_answer[$answer_name] = [];
                }
                if(!array_key_exists($answer_value, $count_answer[$answer_name])) {
                    $count_answer[$answer_name][$answer_value] = 1;
                } else {
                    $count_answer[$answer_name][$answer_value] += 1;
                }
            }
        }
    }
}

function questionname($q, $qname) {
    foreach($q['questions'] AS $question) {
        if($question['id'] == $qname) {
            return $question['title'];
        }
    }
    return '';
}

function answerval($q, $aname, $aval) {
    foreach($q['questions'] AS $question) {
        if($question['id'] == $aname) {
            foreach($question['answers'] AS $answer) {
                if($answer['value'] == $aval) {
                    return $answer['name'];
                }
            }
        }
    }
    return '';
}

function answertest($q, $aname, $aval) {
    foreach($q['questions'] AS $question) {
        if($question['id'] == $aname) {
            $input_answer = false;

            if($question['require']) {
                if($aval == '') {
                    $input_answer = false;
                } else {
                    $input_answer = true;
                }
            } else {
                $input_answer = true;
            }
                
            if($question['type'] == 'select' || $question['type'] == 'radio') {
                $input_answer_val = false;
                foreach($question['answers'] AS $answer) {
                    if($answer['value'] == $aval) {
                        $input_answer_val = true;
                    }
                }
                if($input_answer_val) {
                    $input_answer = true;
                }else{
                    $input_answer = false;
                }
            }
            return $input_answer?'y':'e';
        }
    }
    return 'n';
}
$view = '';
if($_SERVER['REQUEST_METHOD'] == 'GET'):
    if(isset($_GET['action'])) {
        switch($_GET['action']) {
            case 'saved':
                $view = 'view/saved.php';
                break;
            case 'answers':
                $view = 'view/answers.php';
                break;
        }
    } else {
        $view = 'view/form.php';
    }
endif;
if($_SERVER['REQUEST_METHOD'] == 'POST' && $_GET['action'] == 'save'):
    $answer = [];
    $answer['date'] = time();
    $answer['id'] = uniqid();
    foreach($_POST AS $formname => $formvalue) {
        $test_result = answertest($questions, $formname, $formvalue);
        echo $formname . ' = '.  $formvalue.' - ' . $test_result .'<br>';
        if($test_result == 'y') {
             $answer[$formname] = $formvalue;
        }
    }
    file_put_contents('ans_'.$answer['id'], json_encode($answer));
    header("Location: index.php?action=saved");
    $view = 'view/saved.php';

endif;
include_once 'view/main.php';