package biblioteka_gui;

import javax.swing.*;

import java.awt.event.*;
//import biblioteka.*;

/**
 * Klasa dziedziczaca po klasie JFrame, implementujaca interfejs ActionListener
 * <br>Pobiera Id czytelnika wypozyczajacego ksiazke oraz Id ksiazki, jesli ktores z nich nie istnieje wyswietla komunikat, oraz zamyka okno
 * <br>W przypadku gdy Id czytelnika oraz Id ksiazki zostaly odnalezione w odpowiednich bazach danych, wyswietla dane o czytelniku oraz o ksiazce
 * @author w21826
 *
 */
public class JFrWypozyczKsiazke extends JFrame implements ActionListener
{	
	int pozycja_czytelnik=-1;
	int pozycja_ksiazka=-1;
	String Sid_czytelnika;
	String Snr_ksiazki;
	JLabel etykieta_id_czytelnika;
	JTextField id_czytelnika;
	JLabel etykieta_imie;
	JTextField imie;
	JLabel etykieta_nazwisko;
	JTextField nazwisko;
	JLabel etykieta_ulica;
	JTextField ulica;
	JLabel etykieta_nr_domu;
	JTextField nr_domu;
	JLabel etykieta_nr_mieszkania;
	JTextField nr_mieszkania;
	JLabel etykieta_kod_pocztowy;
	JTextField kod_pocztowy;
	JLabel etykieta_miasto;
	JTextField miasto;
	
	String Sid_ksiazki="";
	JLabel etykieta_autor;
	JLabel etykieta_imie_autora;
	JTextField imie_autora;
	JLabel etykieta_nazwisko_autora;
	JTextField nazwisko_autora;
	JLabel etykieta_tytul;
	JTextField tytul;
	JLabel etykieta_rok_wydania;
	JTextField rok_wydania;
	JLabel etykieta_wydawnictwo;
	JTextField wydawnictwo;
	JLabel etykieta_nr_katalogowy;
	JTextField nr_katalogowy;
	
	
	JButton przycisk_dodaj;
	JButton przycisk_anuluj;

	
	   public JFrWypozyczKsiazke()
	   {
		   JFrGlowne.log.info("Wypożyczanie książki");
			this.setLayout(null);
			this.setTitle("Wypożycz książkę");
			Sid_czytelnika=JOptionPane.showInputDialog("ID czytelnika");
			if(JFrGlowne.czytelnicy.size() != 0)
			{
				for(int i=0;i<JFrGlowne.czytelnicy.size();i++)
				{
					if(("" + JFrGlowne.czytelnicy.get(i).nr_karty).compareTo(Sid_czytelnika) == 0)
					{
						if(JFrGlowne.czytelnicy.get(i).wypożyczone.size() < 10)
						{
						JOptionPane.showMessageDialog(this,"Znaleziona osoba\n" + JFrGlowne.czytelnicy.get(i).nr_karty + "\n" + JFrGlowne.czytelnicy.get(i).imie + " " + JFrGlowne.czytelnicy.get(i).nazwisko + "\n" + JFrGlowne.czytelnicy.get(i).ulica + " " +JFrGlowne.czytelnicy.get(i).nr_domu + " " + JFrGlowne.czytelnicy.get(i).nr_mieszkania + "\n" + JFrGlowne.czytelnicy.get(i).kod + " " + JFrGlowne.czytelnicy.get(i).miejscowosc,"Znaleziony",JOptionPane.INFORMATION_MESSAGE);
						pozycja_czytelnik=i;
						//System.err.println(Sid_czytelnika);
						etykieta_id_czytelnika = new JLabel("Id czytelnika");
						etykieta_id_czytelnika.setSize(100,30);
						etykieta_id_czytelnika.setLocation(20,20);
						this.add(etykieta_id_czytelnika);
						id_czytelnika = new JTextField();
						id_czytelnika.setText("" + JFrGlowne.czytelnicy.get(pozycja_czytelnik).nr_karty);
						id_czytelnika.setEditable(false);
						id_czytelnika.setSize(100,30);
						id_czytelnika.setLocation(120,20);
						this.add(id_czytelnika);
						etykieta_imie = new JLabel("Imię:");
						etykieta_imie.setSize(100,30);
						etykieta_imie.setLocation(20,50);
						this.add(etykieta_imie);
						imie = new JTextField();
						imie.setText(JFrGlowne.czytelnicy.get(pozycja_czytelnik).imie);
						imie.setEditable(false);
						imie.setSize(100,30);
						imie.setLocation(120,50);
						this.add(imie);
						etykieta_nazwisko = new JLabel("Nazwisko");
						etykieta_nazwisko.setSize(100,30);
						etykieta_nazwisko.setLocation(220,50);
						this.add(etykieta_nazwisko);
						nazwisko = new JTextField();
						nazwisko.setText(JFrGlowne.czytelnicy.get(pozycja_czytelnik).nazwisko);
						nazwisko.setEditable(false);
						nazwisko.setSize(100,30);
						nazwisko.setLocation(320,50);
						this.add(nazwisko);
						etykieta_ulica = new JLabel("Ulica:");
						etykieta_ulica.setSize(100,30);
						etykieta_ulica.setLocation(20,80);
						this.add(etykieta_ulica);
						ulica = new JTextField();
						ulica.setText(JFrGlowne.czytelnicy.get(pozycja_czytelnik).ulica);
						ulica.setEditable(false);
						ulica.setSize(100,30);
						ulica.setLocation(120,80);
						this.add(ulica);
						etykieta_nr_domu = new JLabel("Nr domu:");
						etykieta_nr_domu.setSize(100,30);
						etykieta_nr_domu.setLocation(220,80);
						this.add(etykieta_nr_domu);
						nr_domu = new JTextField();
						nr_domu.setText(JFrGlowne.czytelnicy.get(pozycja_czytelnik).nr_domu);
						nr_domu.setEditable(false);
						nr_domu.setSize(100,30);
						nr_domu.setLocation(320,80);
						this.add(nr_domu);
						etykieta_nr_mieszkania = new JLabel("Nr mieszkania:");
						etykieta_nr_mieszkania.setSize(100,30);
						etykieta_nr_mieszkania.setLocation(420,80);
						this.add(etykieta_nr_mieszkania);
						nr_mieszkania = new JTextField();
						nr_mieszkania.setText(JFrGlowne.czytelnicy.get(pozycja_czytelnik).nr_mieszkania);
						nr_mieszkania.setEditable(false);
						nr_mieszkania.setSize(100,30);
						nr_mieszkania.setLocation(520,80);
						this.add(nr_mieszkania);
						etykieta_kod_pocztowy = new JLabel("Kod pocztowy:");
						etykieta_kod_pocztowy.setSize(100,30);
						etykieta_kod_pocztowy.setLocation(20,110);
						this.add(etykieta_kod_pocztowy);
						kod_pocztowy = new JTextField();
						kod_pocztowy.setText(JFrGlowne.czytelnicy.get(pozycja_czytelnik).kod);
						kod_pocztowy.setEditable(false);
						kod_pocztowy.setSize(100,30);
						kod_pocztowy.setLocation(120,110);
						this.add(kod_pocztowy);
						etykieta_miasto = new JLabel("Miasto");
						etykieta_miasto.setSize(100,30);
						etykieta_miasto.setLocation(220,110);
						this.add(etykieta_miasto);
						miasto = new JTextField();
						miasto.setText(JFrGlowne.czytelnicy.get(pozycja_czytelnik).miejscowosc);
						miasto.setEditable(false);
						miasto.setSize(100,30);
						miasto.setLocation(320,110);
						this.add(miasto);
						JFrGlowne.log.info("Znaleziono czytelnika o ID "+ Sid_czytelnika);
						}
						else 
						{
							JOptionPane.showMessageDialog(this,"Podana osoba o Id: " + Sid_czytelnika + " ma wypożyczoną maksymalną ilość książek!","Błąd",JOptionPane.ERROR_MESSAGE);
							JFrGlowne.log.info("Czytelnik o ID "+ Sid_czytelnika + " ma wypożyczoną maksymalną ilość książek");
							pozycja_czytelnik=-2;
							this.dispose();
						}
						
					}

				}
				//System.out.println(pozycja_czytelnik);
				if( pozycja_czytelnik == -1)
				{
					JOptionPane.showMessageDialog(this,"Nie znaleziono osoby o ID: " + Sid_czytelnika,"Błąd",JOptionPane.ERROR_MESSAGE);
					JFrGlowne.log.warning("Nie znaleziono osoby o ID: " + Sid_czytelnika);
					this.dispose();
				}
					
			}
			else
			{
				JOptionPane.showMessageDialog(this,"Brak czytelników w bazie danych","Błąd",JOptionPane.ERROR_MESSAGE);
				JFrGlowne.log.warning("Brak czytelników w bazie danych");
				dispose();
			}
			Sid_ksiazki=JOptionPane.showInputDialog("ID książki");
			if(JFrGlowne.ksiazki.size() != 0)
			{
				for(int i=0;i<JFrGlowne.ksiazki.size();i++)
				{
					if(("" + JFrGlowne.ksiazki.get(i).numer_katalogowy).compareTo(Sid_ksiazki) == 0)
					{
						if(JFrGlowne.ksiazki.get(i).wypozyczona == false)
						{
						//System.out.println(JFrGlowne.ksiazki.get(i).wypozyczona);
						JOptionPane.showMessageDialog(this,"Znaleziona książka\n" + JFrGlowne.ksiazki.get(i).numer_katalogowy + "\n" + JFrGlowne.ksiazki.get(i).autor.imie + " " + JFrGlowne.ksiazki.get(i).autor.nazwisko + "\n" + JFrGlowne.ksiazki.get(i).tytul + "\n" + JFrGlowne.ksiazki.get(i).wydanie + " " +JFrGlowne.ksiazki.get(i).wydawnictwo,"Znaleziony",JOptionPane.INFORMATION_MESSAGE);
						pozycja_ksiazka=i;	
						etykieta_nr_katalogowy = new JLabel("Id książki:");
						etykieta_nr_katalogowy.setSize(100,30);
						etykieta_nr_katalogowy.setLocation(20,150);
						this.add(etykieta_nr_katalogowy);
						nr_katalogowy = new JTextField();
						nr_katalogowy.setText(JFrGlowne.ksiazki.get(pozycja_ksiazka).numer_katalogowy);
						nr_katalogowy.setEditable(false);
						nr_katalogowy.setSize(100,30);
						nr_katalogowy.setLocation(120,150);
						etykieta_imie_autora = new JLabel("Imię autora:");
						etykieta_imie_autora.setSize(100,30);
						etykieta_imie_autora.setLocation(20,180);
						this.add(etykieta_imie_autora);
						imie_autora = new JTextField();
						imie_autora.setText(JFrGlowne.ksiazki.get(pozycja_ksiazka).autor.imie);
						imie_autora.setEditable(false);
						imie_autora.setSize(100,30);
						imie_autora.setLocation(120,180);
						this.add(imie_autora);
						etykieta_nazwisko_autora = new JLabel("Nazwisko autora:");
						etykieta_nazwisko_autora.setSize(100,30);
						etykieta_nazwisko_autora.setLocation(220,180);
						this.add(etykieta_nazwisko_autora);
						nazwisko_autora = new JTextField();
						nazwisko_autora.setText(JFrGlowne.ksiazki.get(pozycja_ksiazka).autor.nazwisko);
						nazwisko_autora.setEditable(false);
						nazwisko_autora.setSize(100,30);
						nazwisko_autora.setLocation(320,180);
						this.add(nazwisko_autora);
						etykieta_tytul = new JLabel("Tytuł:");
						etykieta_tytul.setSize(100,30);
						etykieta_tytul.setLocation(20,210);
						this.add(etykieta_tytul);
						tytul = new JTextField();
						tytul.setText(JFrGlowne.ksiazki.get(pozycja_ksiazka).tytul);
						tytul.setEditable(false);
						tytul.setSize(100,30);
						tytul.setLocation(120,210);
						this.add(tytul);
						this.add(nr_katalogowy);
						etykieta_rok_wydania = new JLabel("Rok wydania:");
						etykieta_rok_wydania.setSize(100,30);
						etykieta_rok_wydania.setLocation(20,240);
						this.add(etykieta_rok_wydania);
						rok_wydania = new JTextField();
						rok_wydania.setText(JFrGlowne.ksiazki.get(pozycja_ksiazka).wydanie);
						rok_wydania.setEditable(false);
						rok_wydania.setSize(100,30);
						rok_wydania.setLocation(120,240);
						this.add(rok_wydania);
						etykieta_wydawnictwo = new JLabel("Wydawnictwo:");
						etykieta_wydawnictwo.setSize(100,30);
						etykieta_wydawnictwo.setLocation(220,240);
						this.add(etykieta_wydawnictwo);
						wydawnictwo = new JTextField();
						wydawnictwo.setText(JFrGlowne.ksiazki.get(pozycja_ksiazka).wydawnictwo);
						wydawnictwo.setEditable(false);
						wydawnictwo.setSize(100,30);
						wydawnictwo.setLocation(320,240);
						this.add(wydawnictwo);
						this.repaint();
						JFrGlowne.log.info("Znaleziono książkę o ID "+ Sid_ksiazki);
						}
						else
						{
							System.out.println(JFrGlowne.ksiazki.get(i).wypozyczona);
							JOptionPane.showMessageDialog(this,"Podana ksiazka o Id: " + Sid_ksiazki + " jest juz wypozyczona!","Błąd",JOptionPane.ERROR_MESSAGE);
							JFrGlowne.log.info("Ksiazka o ID "+ Sid_ksiazki + " jest juz wypozyczona");
							pozycja_ksiazka=-2;
							this.dispose();
						}
						
					}

				}
				//System.out.println(pozycja_ksiazka);
				if( pozycja_ksiazka == -1)
				{
					JOptionPane.showMessageDialog(this,"Nie znaleziono ksiązki o ID: " + Sid_ksiazki,"Błąd",JOptionPane.ERROR_MESSAGE);
					JFrGlowne.log.warning("Nie znaleziono o ID "+ Sid_ksiazki);
					this.dispose();
				}
					
			}
			else
			{
				JOptionPane.showMessageDialog(this,"Brak książek w bazie danych","Błąd",JOptionPane.ERROR_MESSAGE);
				JFrGlowne.log.warning("Brak książek w bazie danych");
				dispose();
			}
			
			przycisk_dodaj = new JButton("Wypożycz");
			przycisk_dodaj.setSize(100,50);
			przycisk_dodaj.setLocation(80,300);
			this.add(przycisk_dodaj);
			przycisk_dodaj.addActionListener(this);
			przycisk_anuluj = new JButton("Anuluj");
			przycisk_anuluj.setSize(100,50);
			przycisk_anuluj.setLocation(180,300);
			this.add(przycisk_anuluj);
			przycisk_anuluj.addActionListener(this);
			this.setSize(800,600);
			this.setVisible( true );
			this.repaint();

	   }
	   
	   public void actionPerformed(ActionEvent e)
	   {
		   if(e.getActionCommand() == "Wypożycz" && pozycja_czytelnik != -1 &&  pozycja_ksiazka != -1)
		   {
			   JFrGlowne.czytelnicy.get(pozycja_czytelnik).wypożyczone.add(JFrGlowne.ksiazki.get(pozycja_ksiazka).numer_katalogowy);
			   JFrGlowne.ksiazki.get(pozycja_ksiazka).wypozyczona=true;
			   JFrGlowne.czytelnicy.get(pozycja_czytelnik).wyswietl();
			   JFrGlowne.log.info("Wypożyczono książkę " + Sid_ksiazki + " czytelnikowi " + Sid_czytelnika);
			   //System.err.println(e.getActionCommand());
			   this.dispose();
		   }
		   if(e.getActionCommand() == "Anuluj")
		   {
			   //JOptionPane.showMessageDialog(null,"Nie zaimplementowane","Komunikat",JOptionPane.INFORMATION_MESSAGE);
			   //System.err.println(e.getActionCommand());
			   this.dispose();
		   }
	   }
	   
}