using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace OOPModelAndUI
{
    public partial class Form1 : Form
    {
        private Kunder k = new Kunder();        
        private int state = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void testData()
        {
            Kunde enKunde;
            Konto enKonto;
            enKunde = new Kunde();
            enKunde.Kundenr = 1;
            enKunde.CPRnr = "290853-2123";
            enKunde.Navn = "Bjarne Larsen";
            enKunde.Adresse = "Dragebakken 512";
            enKunde.Postnr = 5250;
            enKunde.Distrikt = "Odense SV";
            enKunde.Telefonnr = "66 17 02 50";
            enKonto = new Konto(12345, 0.00, 20071101);
            enKunde.addKonto(enKonto);
            enKonto = new Konto(23456, 0.00, 20070101);
            enKunde.addKonto(enKonto); 
            k.addKunde(enKunde);
            enKunde = new Kunde();
            enKunde.Kundenr = 2;
            enKunde.CPRnr = "020250-1234";
            enKunde.Navn = "Niels Olsen";
            enKunde.Adresse = "Skolebakken 9";
            enKunde.Postnr = 5000;
            enKunde.Distrikt = "Odense C";
            enKunde.Telefonnr = "66 12 23 34";
            k.addKunde(enKunde);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            testData();
            state = 0;
            UpdateKunder();
        }

        private void UpdateKunder()
        {
            lbKunder.Items.Clear();
            lbKonti.Items.Clear();
            lbTransaktioner.Items.Clear();
            k.firstKunde();
            while (!k.endOfKunde() )
            {
                Kunde kunde = k.getKunde();
                lbKunder.Items.Add("" + kunde.Kundenr + " " + kunde.Navn);
                k.nextKunde();
            }
            k.firstKunde();
            Kunde enKunde = k.getKunde();
            Konto[] konti = enKunde.getKonti();
            if (state == 0)
            { // Browse mode
                btnOK.Enabled = false;
                btnFortryd.Enabled = false;
                btnOpret.Enabled = true;
                btnRet.Enabled = false;
            }
            if (state == 1)
            { // Insert mode
                btnOK.Enabled = true;
                btnFortryd.Enabled = true;
                btnOpret.Enabled = false;
                btnRet.Enabled = false;
            }
        }

        private void btnOpret_Click(object sender, EventArgs e)
        {
            textKundenr.Text = "";
            textCPRnr.Text = "";
            textNavn.Text = "";
            textAdresse.Text = "";
            textPostnr.Text = "";
            textDistrikt.Text = "";
            textTelefon.Text = "";
            textKundenr.Focus();
            state = 1;
            UpdateKunder();
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            if (state == 1)
            {
                Kunde enKunde = new Kunde();
                try
                {
                    enKunde.Kundenr = Int32.Parse(textKundenr.Text);
                }
                catch (FormatException)
                {
                    MessageBox.Show("Kundenr må kun indeholde cifre");
                    textKundenr.Focus();
                    return;
                }
                enKunde.CPRnr = textCPRnr.Text;
                enKunde.Navn = textNavn.Text;
                enKunde.Adresse = textAdresse.Text;
                try
                {
                    enKunde.Postnr = Int32.Parse(textPostnr.Text);
                }
                catch (FormatException)
                {
                    MessageBox.Show("Postnr må kun indeholde cifre");
                    textPostnr.Focus();
                    return;
                }
                enKunde.Distrikt = textDistrikt.Text;
                enKunde.Telefonnr = textTelefon.Text;
                k.addKunde(enKunde);
                state = 0;
                UpdateKunder();
            }
        }

        private void btnFortryd_Click(object sender, EventArgs e)
        {
            k.firstKunde();
            Kunde enKunde = k.getKunde();
            if (enKunde != null)
            {
                textKundenr.Text = "" + enKunde.Kundenr;
                textCPRnr.Text = enKunde.CPRnr;
                textNavn.Text = enKunde.Navn;
                textAdresse.Text = enKunde.Adresse;
                textPostnr.Text = "" + enKunde.Postnr;
                textDistrikt.Text = enKunde.Distrikt;
                textTelefon.Text = enKunde.Telefonnr;
            }
            else
            {
                textKundenr.Text = "";
                textCPRnr.Text = "";
                textNavn.Text = "";
                textAdresse.Text = "";
                textPostnr.Text = "";
                textDistrikt.Text = "";
                textTelefon.Text = "";
            }
            textKundenr.Focus();
            state = 0;
            UpdateKunder();
        }
        
    }
}