import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MailHesap {

	public static String isim;
	public static String soyad;
	
	public static String password;
	public static int passwordLength = 8;
	
	public static String departman;
	public static JComboBox departmanCombo;
	
	public static int mailBoxKapasitesi;
	public static String alternatifMail;
	public static String sirketMailOnEk;
	public static String sirketMailUzantisi = "kesinbisirket.com";
	
	public static JComboBox mailBoxKotaCombo;
	public static JTextField sirketMailTextField;
	public static JTextField sirketMailKotaTextField;
	
	public static JPanel anaPanel = new JPanel();
	
	public static String[] sonucPanelGoster = new String[7];
	
	public MailHesap() {
		
		JFrame frame = new JFrame("Şirket İçi Mail Hesabı Oluşturma | Java Blackboard [132]");
		frame.setLayout(null);
		
		anaPanel.setLayout(null);
		anaPanel.setBackground(new Color(217, 217, 217));
		anaPanel.setBounds(50, 50, 900, 500);
		
		sonucPanelGoster[0] = "mailBekleniyor.jpg";
        sonucPanelGoster[1] = "İsim Soyad";
        sonucPanelGoster[2] = "Departman";
        sonucPanelGoster[3] = "Şirket mail";
        sonucPanelGoster[4] = " 0 MB";
        sonucPanelGoster[5] = "Şifre";
        sonucPanelGoster[6] = "Alternatif mail";
		
		anaPanel.add(infoPanel());
		anaPanel.add(sonucPanel(sonucPanelGoster));
		
		frame.add(anaPanel);

		frame.setSize(1000, 622);
		frame.setLocationRelativeTo(null);
		frame.getContentPane().setBackground(new Color(217, 185, 91));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		
	}
	
	public static JPanel logoPanel() {
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(new Color(140, 28, 3));
		
		ImageIcon icon = new ImageIcon("src/images/sirketLogo.jpg");
		JLabel logoLabel = new JLabel();
		logoLabel.setIcon(icon);
		logoLabel.setBounds(0, 0, 350, 100);
		
		panel.add(logoLabel);
		
		panel.setBounds(25, 25, 350, 100);
		
		return panel;
		
	}
	
	public static JPanel mailOlusturulduPanel(String dosyaIsmi) {
		
		// iki tane dosyamiz var bunlar da duruma gore degisecek
		// 1) mailBekleniyor.jpg  
		// 2) mailOlusturuldu.jpg
				
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(new Color(140, 28, 3));
		
		ImageIcon iconMail = new ImageIcon("src/images/" + dosyaIsmi);
		JLabel mailLabel = new JLabel();
		mailLabel.setIcon(iconMail);
		mailLabel.setBounds(0, 0, 350, 100);
		
		panel.add(mailLabel);
		
		panel.setBounds(25, 25, 350, 100);
		
		return panel;
		
	}
	
	public static JPanel infoPanel() {
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(new Color(169, 203, 217));
		
		panel.add(logoPanel());
		
		int xStart = 10;
		int x = xStart;
		int y = 150;
		int xFark = 100;
		int yFark = 30;
		
		int labelGenislik = 150;
		int textFieldGenislik = 280;
		int ortakYukseklik = 30;
		
		
		JLabel isimLabel = new JLabel("İsim : ");
		isimLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		JTextField isimTextField = new JTextField();
		isimTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart;
		y = y + yFark;
		
		JLabel soyadLabel = new JLabel("Soyad : ");
		soyadLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		JTextField soyadTextField = new JTextField();
		soyadTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart;
		y = y + yFark;
		
		JLabel passwordLabel = new JLabel("Password : ");
		passwordLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		password = randomPassword();
		JTextField passwordTextField = new JTextField(password);
		passwordTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart;
		y = y + yFark;
		
		JLabel departmanLabel = new JLabel("Departman : ");
		departmanLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		String[] departmanIsim = {"Seçiniz", "Satış Pazarlama", "Teknoloji", 
						"Muhasebe", "Güvenlik", "Yiyecek/İçecek", "Müşteri İlişkileri", "Ön Büro"};
		
		departmanCombo = new JComboBox(departmanIsim);
		departmanCombo.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart;
		y = y + yFark;
		
		JLabel mailBoxKotasiLabel = new JLabel("Mailbox Kotası : ");
		mailBoxKotasiLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		String[] mailBoxKota = {"Kota Seçiniz", "500 MB", "1 GB", 
						"3 GB", "5 GB", "10 GB"};
		mailBoxKotaCombo = new JComboBox(mailBoxKota);
		mailBoxKotaCombo.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart;
		y = y + yFark;
		
		JLabel alternatifMailLabel = new JLabel("Alternatif Mail : ");
		alternatifMailLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		JTextField alternatifMailTextField = new JTextField();
		alternatifMailTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart + xFark;
		y = y + (yFark*2);
		
		JButton mailOusturButon = new JButton("Şirket Maili Oluştur");
		mailOusturButon.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		
		mailOusturButon.addActionListener(new ActionListener() {
		    public void actionPerformed(ActionEvent e) {
		    	
		    	anaPanel.removeAll();
		    	
		        // Formdan alınan bilgileri kullanarak mail oluşturma işlemi burada yapılabilir.
		        // Örnek olarak:
		        isim = isimTextField.getText();
		        soyad = soyadTextField.getText();
		        departman = (String) departmanCombo.getSelectedItem();
		        int departmanInteger = (int) departmanCombo.getSelectedIndex();
		        
		        switch (departmanInteger) {
		        
		        case 0: sirketMailOnEk = "free";
		        break;
		        case 1: sirketMailOnEk = "sale";
		        break;
		        case 2: sirketMailOnEk = "tech";
		        break;
		        case 3: sirketMailOnEk = "acc";
		        break;
		        case 4: sirketMailOnEk = "sec";
		        break;
		        case 5: sirketMailOnEk = "fb";
		        break;
		        case 6: sirketMailOnEk = "cr";
		        break;
		        case 7: sirketMailOnEk = "fof";
		        break;
		        
		        }
		        
		        int mailBoxKapasitesiInteger = (int) mailBoxKotaCombo.getSelectedIndex();

		        switch (mailBoxKapasitesiInteger) {
		        
		        case 0 : mailBoxKapasitesi = 0;
		        break;
		        case 1 : mailBoxKapasitesi = 500;
		        break;
		        case 2 : mailBoxKapasitesi = 1024;
		        break;
		        case 3 : mailBoxKapasitesi = 3072;
		        break;
		        case 4 : mailBoxKapasitesi = 5120;
		        break;
		        case 5 : mailBoxKapasitesi = 10240;
		        break;
		        }
		  
		        alternatifMail = alternatifMailTextField.getText();

		        // Şirket içi mail oluşturma ve sonuçları gösterme işlemi burada yapılabilir.
		        // Örnek olarak:
		        String sirketMail = isim.toLowerCase() + "." + soyad.toLowerCase() + 
		        								"@" + sirketMailOnEk + "." +sirketMailUzantisi;
		        String sirketMailKota = "" + mailBoxKapasitesi;
		        
		        System.out.println("isim		= " + isim);
		        System.out.println("soyad		= " + soyad);
		        System.out.println("departman 	= " + departman);
		        System.out.println("Mail Kota 	= " + mailBoxKapasitesi);
		        System.out.println("Sirket Mail	= " + sirketMail);
		        System.out.println("Mail Kota	= " + sirketMailKota);
		        System.out.println("Alternatif 	= " + alternatifMail);
		        
		        // Mail formundan geen bilgileri
		        // sonuç paneline gonderiyoruz.
		        sonucPanelGoster[0] = "mailOlusturuldu.jpg";
		        sonucPanelGoster[1] = isim + " " + soyad;  // isim soyad text field.
		        sonucPanelGoster[2] = departman;
		        sonucPanelGoster[3] = sirketMail;
		        sonucPanelGoster[4] = "" + sirketMailKota + " MB";
		        sonucPanelGoster[5] = password;
		        sonucPanelGoster[6] = alternatifMail;
		        
		        anaPanel.add(infoPanel());
		        anaPanel.add(sonucPanel(sonucPanelGoster));
		        
		        anaPanel.revalidate();
		        anaPanel.repaint();
		        
		    }
		});

		
		
		
		panel.add(isimLabel);
		panel.add(isimTextField);
		
		panel.add(soyadLabel);
		panel.add(soyadTextField);
		
		panel.add(passwordLabel);
		panel.add(passwordTextField);
		
		panel.add(departmanLabel);
		panel.add(departmanCombo);
		
		panel.add(mailBoxKotasiLabel);
		panel.add(mailBoxKotaCombo);
		
		panel.add(alternatifMailLabel);
		panel.add(alternatifMailTextField);
		
		panel.add(mailOusturButon);
		
		
		panel.setBounds(25, 25, 400, 450);
		
		return panel;
	}
	
	public static JPanel sonucPanel(String[] sonucPanelInfo) {
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(new Color(169, 203, 217));
		
		panel.add(mailOlusturulduPanel(sonucPanelInfo[0]));
		
		int xStart = 10;
		int x = xStart;
		int y = 150;
		int xFark = 100;
		int yFark = 30;
		
		int labelGenislik = 150;
		int textFieldGenislik = 280;
		int ortakYukseklik = 30;
		
		
		JLabel isimLabel = new JLabel("İsim : ");
		isimLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		JTextField isimTextFieldSonuc = new JTextField(sonucPanelInfo[1]);
		isimTextFieldSonuc.setEditable(false);
		isimTextFieldSonuc.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart;
		y = y + yFark;
		
		JLabel departmanLabel = new JLabel("Departman : ");
		departmanLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		JTextField departmanTextField = new JTextField(sonucPanelInfo[2]);
		departmanTextField.setEditable(false);
		departmanTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart;
		y = y + yFark;
		
		JLabel sirketMailLabel = new JLabel("Sirket Mail : ");
		sirketMailLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		sirketMailTextField = new JTextField(sonucPanelInfo[3]);
		sirketMailTextField.setEditable(false);
		sirketMailTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart;
		y = y + yFark;
		
		JLabel sirketMailKotaLabel = new JLabel("Mail Kotasi : ");
		sirketMailKotaLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		sirketMailKotaTextField = new JTextField(sonucPanelInfo[4]);
		sirketMailKotaTextField.setEditable(false);
		sirketMailKotaTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart;
		y = y + yFark;
		
		JLabel passwordLabel = new JLabel("Password : ");
		passwordLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		JTextField passwordTextField = new JTextField(sonucPanelInfo[5]);
		passwordTextField.setEditable(false);
		passwordTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart;
		y = y + yFark;
		
		JLabel alternatifMailLabel = new JLabel("Alternatif Mail : ");
		alternatifMailLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
		x = x + xFark;
		
		JTextField alternatifMailTextField = new JTextField(sonucPanelInfo[6]);
		alternatifMailTextField.setEditable(false);
		alternatifMailTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		x = xStart + xFark;
		y = y + (yFark*2);
		
		JButton mailFormTemizleButon = new JButton("Mail Formunu Temizle");
		mailFormTemizleButon.setBounds(x, y, textFieldGenislik, ortakYukseklik);
		
		mailFormTemizleButon.addActionListener(new ActionListener() {
		    public void actionPerformed(ActionEvent e) {
		        
		    	anaPanel.removeAll();
		    	
		    	// Formdaki tüm JTextField'ların içeriğini temizliyoruz.
		    	sonucPanelGoster[0] = "mailBekleniyor.jpg";
		        sonucPanelGoster[1] = "İsim Soyad";
		        sonucPanelGoster[2] = "Departman";
		        sonucPanelGoster[3] = "Şirket mail";
		        sonucPanelGoster[4] = " 0 MB";
		        sonucPanelGoster[5] = "Şifre";
		        sonucPanelGoster[6] = "Alternatif mail";
		        
		        anaPanel.add(infoPanel());
		        anaPanel.add(sonucPanel(sonucPanelGoster));
		        
		        anaPanel.revalidate();
		        anaPanel.repaint();
		    }
		});

		
		
		panel.add(isimLabel);
		panel.add(isimTextFieldSonuc);
		
		panel.add(departmanLabel);
		panel.add(departmanTextField);
		
		panel.add(sirketMailLabel);
		panel.add(sirketMailTextField);
		
		panel.add(sirketMailKotaLabel);
		panel.add(sirketMailKotaTextField);
		
		panel.add(passwordLabel);
		panel.add(passwordTextField);
		
		panel.add(alternatifMailLabel);
		panel.add(alternatifMailTextField);
		
		panel.add(mailFormTemizleButon);
		
		panel.setBounds(475, 25, 400, 450);
		
		return panel;
	}
	
	public static String randomPassword() {
		
		String passwordSet = "QWERTYUIOPASDFGHJKLZXCVBNM0123456789!#$%&*";
		char[] password = new char[passwordLength];
		for (int i=0 ; i<passwordLength ; i++) {
			int rastgele = (int) (Math.random() * passwordSet.length());
			password[i] = passwordSet.charAt(rastgele);
		}
		
		String pass = new String(password);
		
		return pass;
	}

	public static void main(String[] args) {
		
		new MailHesap();

	}

}