import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class YemekAnketi {

	private JLabel isimLabel;
	private JLabel yasLabel;
	private JLabel cinsiyetLabel;
	
    private JTextField fieldIsim;
    private JTextField fieldYas;
    
    private JRadioButton[] cinsiyetSecenekleri;
    private JRadioButton[][] soruSecenekleri;

    private String[] soruMetinleri = {
            "Menü seçimi ve yemek çeşitlerinin uygunluğu",
            "Yemeklerin sunuluş biçimi",
            "Yemeklerin lezzeti",
            "Yemeklerin sıcaklığı",
            "Yemeklerin miktarı",
            "Restoran personelinin davranışı",
            "Servisin kalitesi",
            "Temizlik ve hijyen kurallarına uyum",
            "Restoranımızı tavsiye eder misiniz?"
    };

    public YemekAnketi() {
    	
    	JFrame frame = new JFrame();
    	frame.setTitle("Restoran Müşteri Memnuniyet Anketi | Java Blaclboard [153]");
    	frame.setLayout(null);
        
    	JPanel anketPaneli = new JPanel();
    	anketPaneli.setLayout(null);
    	anketPaneli.setBackground(new Color(230, 225, 195));
    	anketPaneli.setBounds(30, 30, 1000, 540);
    	
        // Giriş formu bileşenleri
    	isimLabel = new JLabel("İsim:");
    	isimLabel.setBounds(20, 20, 100, 30);
    	
        fieldIsim = new JTextField();
        fieldIsim.setBounds(120, 20, 200, 30);
       
        yasLabel = new JLabel("Yaş:");
    	yasLabel.setBounds(20, 50, 100, 30);
    	
        fieldYas = new JTextField();
        fieldYas.setBounds(120, 50, 200, 30);
        
        cinsiyetLabel = new JLabel("Cinsiyet:");
        cinsiyetLabel.setBounds(20, 80, 100, 30);
        
        ButtonGroup cinsiyetGrubu = new ButtonGroup();
        cinsiyetSecenekleri = new JRadioButton[]{
                new JRadioButton("Erkek"),
                new JRadioButton("Kadın")
                
        };
        
        int cinsiyetX = 120;
        int cinsiyetIndex = 0;
        
        for (JRadioButton radio : cinsiyetSecenekleri) {
        	
        	cinsiyetGrubu.add(radio);
            cinsiyetSecenekleri[cinsiyetIndex].setBounds(cinsiyetX, 80, 100, 30);
            
            anketPaneli.add(radio);
            cinsiyetIndex++;
            cinsiyetX+=100;
        }

        // Anket formu bileşenleri
        soruSecenekleri = new JRadioButton[soruMetinleri.length][3];
        JLabel[] soruLabel = new JLabel[soruMetinleri.length];
        
        int soruY = 110;
        int soruFark = 30;
        
        for (int i = 0; i < soruMetinleri.length; i++) {
        	
        	soruLabel[i] = new JLabel((i + 1) + ". " + soruMetinleri[i]);
        	soruLabel[i].setBounds(20, soruY, 400, 30);
        	anketPaneli.add(soruLabel[i]);
        	
            ButtonGroup soruGrubu = new ButtonGroup();
            for (int j = 0; j < 3; j++) {
                soruSecenekleri[i][j] = new JRadioButton(getSecenekMetni(j));
                soruSecenekleri[i][j].setBounds(420+(100*j), soruY, 100, 30);
                
                soruGrubu.add(soruSecenekleri[i][j]);
                anketPaneli.add(soruSecenekleri[i][j]);
            }
            
            soruY+=soruFark;
        }

        // Bitir düğmesi
        JButton butonBitir = new JButton("Bitir");
        butonBitir.setBounds(20, soruY, 100, 30);
        
        butonBitir.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                anketiKaydet();
            }
        });
        
        anketPaneli.add(isimLabel);
        anketPaneli.add(fieldIsim);
        anketPaneli.add(yasLabel);
        anketPaneli.add(fieldYas);
        anketPaneli.add(cinsiyetLabel);
        
        anketPaneli.add(butonBitir);
        
        frame.add(anketPaneli);
    	
    	frame.setSize(1060, 622);
    	frame.setLocationRelativeTo(null);
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    private String getSecenekMetni(int indeks) {
        switch (indeks) {
            case 0:
                return "Çok İyi";
            case 1:
                return "İyi";
            case 2:
                return "Kötü";
            default:
                return "";
        }
    }

    private void anketiKaydet() {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("src/Anket.txt", true))) {
            
        	String isimYasCinsiyet = fieldIsim.getText() + "," + fieldYas.getText() + ","+ secilenCinsiyet();
        	String cevap = "";

            for (int i = 0; i < soruMetinleri.length; i++) {
            	 cevap = cevap + "," + secilenSoruCevabi(soruSecenekleri[i]);
            }
            
            writer.write(isimYasCinsiyet + cevap + "\n");
            
            JOptionPane.showMessageDialog(null, "Anket başarıyla kaydedildi!");
        } catch (IOException e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Anket kaydedilirken bir hata oluştu.");
        }
    }

    private String secilenCinsiyet() {
        for (JRadioButton radio : cinsiyetSecenekleri) {
            if (radio.isSelected()) {
                return radio.getText();
            }
        }
        return "Cinsiyet seçilmedi";
    }

    private String secilenSoruCevabi(JRadioButton[] secenekler) {
        for (JRadioButton radio : secenekler) {
            if (radio.isSelected()) {
                return radio.getText();
            }
        }
        return "-1";
    }
    
    public static void main (String[] args) {
    	new YemekAnketi();
    }
}

