package com.vl;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import android.util.Log;
import android.content.Context;

//import java.util.List;
//import java.util.ArrayList;

public class Verkaufsladen extends Activity
{
    private ButtonKlick bk;
    private VerkaufsladenDB vdb = null;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
	// aktiviere die Buttons der Hauptansicht
        bk = new ButtonKlick();  // für alle Buttons eine Verarbeitungsinstanz
	button_melden(R.id.Button01);
	button_melden(R.id.Button02);
	
        // Sicherstellen, dass die Datenbank da ist
        vdb = new VerkaufsladenDB(this /* Context */);
    }

    @Override
    public void onDestroy()
    {
      super.onDestroy();
      vdb.schliessen();
    }

    // Versucht, einen Button mit dem Ereingnishandler zu verknuepfen
    // findViewById liefert null, wenn Element z.B. nicht sichtbar
    private void button_melden(int id)
    {
      Button b = (Button) findViewById(id);
      if (b != null) b.setOnClickListener(bk);
      else Log.w("VL", "Button " + id + " nicht registriert");
    }

    private void main_anzeigen()
    {
      setContentView(R.layout.main);  // wieder Startseite
      button_melden(R.id.Button01);
      button_melden(R.id.Button02);    
    }

    private void kunden_anzeigen()
    {
      setContentView(R.layout.kunde); // auf Kunden-Sicht umschalten
      button_melden(R.id.Button206);  // Startseite
    }

    
    private void admin_anzeigen()
    {
      setContentView(R.layout.admin); // auf Admin-Sicht umschalten
      button_melden(R.id.Button105);  // Startseite
      button_melden(R.id.Button101);  // neuen Artikel anlegen
      button_melden(R.id.Button106);  // neuen Kunden anlegen
      button_melden(R.id.Button102);  // Artikelanzahl ändern
   }
  

   // neuen Artikel anlegen, wenn möglich
   private boolean neuen_artikel_uebernehmen()
   {
     // Prüfung, ob alle Felder gefüllt sind; Preis mit Komma positiv,
     // Anzahl gerade positiv
     // Prüfung, ob alle Felder gefüllt
     EditText et = (EditText) findViewById(R.id.EditText301);
     String bez = (et != null ? et.getText().toString() : "");
     if (bez.length() < 2)  
     {    
       Toast.makeText(this, "Bezeichnung mind. 2 Buchstaben", Toast.LENGTH_SHORT).show();
       return false;
     }
     et = (EditText) findViewById(R.id.EditText302);
     String preis = (et != null ? et.getText().toString() : "");
     float testP = -1.0f; boolean falsch = false;
     try
     {
       testP = Float.parseFloat(preis);
       if (testP <= 0.0) falsch = true;
     } 
     catch (NumberFormatException ex) { falsch = true; }
     if (falsch)  
     {    
       Toast.makeText(this, "Preis positive Zahl", Toast.LENGTH_SHORT).show();
       return false;
     }     
     et = (EditText) findViewById(R.id.EditText303);
     String anzahl = (et != null ? et.getText().toString() : "");
     int testA = -1; falsch = false;
     try
     {
       testA = Integer.parseInt(anzahl);
       if (testA <= 0) falsch = true;
     } 
     catch (NumberFormatException ex) { falsch = true; }
     if (falsch)  
     {    
       Toast.makeText(this, "Anzahl positive gerade Zahl", Toast.LENGTH_SHORT).show();
       return false;
     }     

     // Anlegen in Datenbank
     boolean erf = vdb.artikel_anlegen(bez, testP, testA);
     if (!erf)
     {
       Toast.makeText(this, "Datensatz nicht angelegt", Toast.LENGTH_SHORT).show();
       return false;
     } 
       
     return true;
   } 

   // neuen Kunden anlegen, wenn möglich
   private boolean neuen_kunden_uebernehmen()
   {
     // Prüfung, ob alle Felder gefüllt
     EditText et = (EditText) findViewById(R.id.EditText401);
     String vorname = (et != null ? et.getText().toString() : "");
     if (vorname.length() < 2)  
     {    
       Toast.makeText(this, "Vorname mind. 2 Buchstaben", Toast.LENGTH_SHORT).show();
       return false;
     }
     et = (EditText) findViewById(R.id.EditText402);
     String nachname = (et != null ? et.getText().toString() : "");
     if (nachname.length() < 2)  
     {    
       Toast.makeText(this, "Nachname mind. 2 Buchstaben", Toast.LENGTH_SHORT).show();
       return false;
     }     
     et = (EditText) findViewById(R.id.EditText403);
     String pw = (et != null ? et.getText().toString() : "");
     if (pw.length() < 4)  
     {    
       Toast.makeText(this, "Passwort mind. 4 Buchstaben", Toast.LENGTH_SHORT).show();
       return false;
     }     

     // Anlegen in Datenbank
     boolean erf = vdb.benutzer_anlegen(vorname, nachname, pw);
     if (! erf)
     {
       Toast.makeText(this, "Datensatz nicht angelegt", Toast.LENGTH_SHORT).show();
       return false;
     } 

     return true;
   }


  // Lädt alle Artikel in den Spinner (Auswahlliste) mit der angeb. Id
  private boolean artikel_laden(int wohin)
  {
     // Testdaten erstmal
     // boolean erfolg = vdb.ds_loeschen("artikel", "8");
     Spinner sp = (Spinner) findViewById(wohin);
     if (sp == null) return false; 

     String [] rueck = vdb.alle_artikel_holen();
     if (rueck == null) return false;

     ArrayAdapter<String> ad = new ArrayAdapter<String> (
     this, android.R.layout.simple_spinner_item, rueck);
     sp.setAdapter(ad);
     
     return true;
  }

  // da viele Buttons, hier eine zentrale innere Klasse zur Ereignisverwaltung
  class ButtonKlick implements View.OnClickListener
  {
    public void onClick(View v)
    {
      if (! (v instanceof Button)) return;
      Button b = (Button) v;
      // werte den konkreten Knopf aus
      int bid = b.getId();
      if (bid == R.id.Button01)
      {
        admin_anzeigen();
      }
      else if (bid == R.id.Button02)
      {
        kunden_anzeigen();
      }

      else if (bid == R.id.Button105 || bid == R.id.Button206)
      {
        main_anzeigen();
      }
      //else if (bid == R.id.Button107)
      //{
        // Testdaten anlegen, weiteres kommt noch
      //  benutzer_anlegen();
      //  artikel_anlegen();
      //}
      else if (bid == R.id.Button101)
      {
        setContentView(R.layout.art_neu); // neuen Artikel
	button_melden(R.id.Button301);
	button_melden(R.id.Button302);
      }
      else if (bid == R.id.Button102)
      {
        setContentView(R.layout.art_anzahl_aendern);  // Anzahl aendern
        artikel_laden (R.id.Spinner501);  // Spinner beladen
        button_melden(R.id.Button501);  // noch inaktiv
        button_melden(R.id.Button502);
      }
      else if (bid == R.id.Button106)
      {
        setContentView(R.layout.kunde_neu); // neuen Kunden
	button_melden(R.id.Button401);
	button_melden(R.id.Button402);
      }

      else if (bid == R.id.Button302 || bid == R.id.Button402 || bid ==
      R.id.Button502)
      {
        admin_anzeigen();   
      }
      else if (bid == R.id.Button301)
      {
        boolean rueck = neuen_artikel_uebernehmen();
        if (rueck) admin_anzeigen();  
      }
      else if (bid == R.id.Button401)
      {
        boolean rueck = neuen_kunden_uebernehmen();
        if (rueck) admin_anzeigen();
      }
      // else weitere Buttons auswerten
    }
  }
}

