package com.example.maposv2;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.navigation.fragment.NavHostFragment;

import android.view.Menu;
import android.view.MenuInflater;
import android.widget.TextView;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.view.LayoutInflater;
import android.view.ViewGroup;

import android.widget.Toast;

public class FragmentDotaznik extends Fragment {

    private TextView questionText;
    private RadioButton answer1, answer2, answer3, answer4, answer5;
    private RadioGroup answerGroup;
    private Button nextButton;
    private int questionNumber = 0;
    private int score = 0;
    private String[] questions = {
            "1. Říkají o tobě druzí něco ošklivého?",
            "2. Posmívají se ti ostatní nebo si dělají legraci z tvého vzhledu, chování, národnosti či víry?",
            "3. Cítíš se odstrčený/á ve škole, doma nebo jinde?",
            "4. Šíří o tobě ostatní pomluvy nebo nepravdivé informace?",
            "5. Bojíš se někdy jít do školy nebo na místa, kde se cítíš odstrčený/á?",
            "6. Ubližují ti ostatní fyzicky nebo ničí tvé věci?",
            "7. Obtěžuje tě někdo na internetu nebo o tobě ostatní píší ošklivé věci?",
            "8. Cítíš úzkost nebo ti je nepříjemně, když se musíš bavit s člověkem, který ti ubližuje?",
            "9. Bolí tě hlava nebo žaludek předtím, než se musíš setkat s osobou, která ti ubližuje?",
            "10. Bojíš se mluvit o nepříjemných věcech co ti ostatní dělají ve škole, na internetu, doma nebo jinde?",
            "11. Předstíráš často, že jsi\n nemocný/á, abys nemusel/a do školy?",
            "12. Cítíš se bezmocně anebo že se nemáš na koho obrátit?"
    };
    private String[][] answers = {
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"},
            {"Nikdy", "Spíše ne", "Občas", "Často", "Vždy"}
    };
    private int[][] values = {
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100},
            {0, 25, 50, 75, 100}
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_dotaznik, container, false);
        setHasOptionsMenu(true);
        questionText = view.findViewById(R.id.questionTextView);
        answer1 = view.findViewById(R.id.answerRadioButton1);
        answer2 = view.findViewById(R.id.answerRadioButton2);
        answer3 = view.findViewById(R.id.answerRadioButton3);
        answer4 = view.findViewById(R.id.answerRadioButton4);
        answer5 = view.findViewById(R.id.answerRadioButton5);
        answerGroup = view.findViewById(R.id.answerRadioGroup);
        nextButton = view.findViewById(R.id.submitAnswerArrow);

        if(questionNumber < questions.length) {
            showQuestion();
        }

        nextButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int selectedAnswer = answerGroup.getCheckedRadioButtonId();
                if (selectedAnswer == -1) {
                    Toast.makeText(getActivity(), "Prosím, vyber si jednu z odpovědí", Toast.LENGTH_SHORT).show();
                } else if (questionNumber < questions.length){
                    int value = values[questionNumber][answerGroup.indexOfChild(answerGroup.findViewById(selectedAnswer))];
                    score += value;
                    questionNumber++;
                    if (questionNumber < questions.length) {
                        questionText.setText(questions[questionNumber]);
                        answer1.setText(answers[questionNumber][0]);
                        answer2.setText(answers[questionNumber][1]);
                        answer3.setText(answers[questionNumber][2]);
                        answer4.setText(answers[questionNumber][3]);
                        answer5.setText(answers[questionNumber][4]);
                        answerGroup.clearCheck();
                    } else {
                        int finalScore = score / questionNumber;
                        Bundle args = new Bundle();
                        args.putInt("score", finalScore);
                        NavHostFragment.findNavController(FragmentDotaznik.this)
                                .navigate(R.id.action_FragmentDotaznik_to_FragmentVysledek, args);
                    }
                }
            }
        });


        return view;
    }

    private void showQuestion() {
        questionText.setText(questions[questionNumber]);
        answer1.setText(answers[questionNumber][0]);
        answer2.setText(answers[questionNumber][1]);
        answer3.setText(answers[questionNumber][2]);
        answer4.setText(answers[questionNumber][3]);
        answer5.setText(answers[questionNumber][4]);
        answerGroup.clearCheck();
    }
    @Override
    public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
        // hide the options menu in this fragment
        menu.findItem(R.id.action_settings).setVisible(false);
        super.onCreateOptionsMenu(menu, inflater);
    }

    @Override
    public void onPrepareOptionsMenu(@NonNull Menu menu) {
        super.onPrepareOptionsMenu(menu);
        menu.findItem(R.id.action_settings).setVisible(false);
    }

}
