using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Lab1
{
    public partial class Form1 : Form
    {
        RadioButton selection = null;
        ParkingType parkingType;

        public Form1()
        {
            InitializeComponent();
        }
        
        private void CustomerTypeChange_CheckedChanged(object sender, EventArgs e)
        {
            selection = (RadioButton)sender;
            if (selection == radioButton1) parkingType = new CustomerParking();
            else parkingType = new StaffParking();
            UpdateValue();
        }

        private void HoursEntered_TextChanged(object sender, EventArgs e)
        {
            UpdateValue();
        }

        private void UpdateValue()
        {
            string hoursEnteredText = hoursEntered.Text.Length > 0 ? hoursEntered.Text : "0";
            try
            {
                totalValue.Text = parkingType.Calculate(Convert.ToDecimal(hoursEnteredText)).ToString("C", CultureInfo.GetCultureInfo("en-NZ"));
                WarningLabel.Visible = false;
            }
            catch (ParkingException ex)
            {
                WarningLabel.Visible = true;
                totalValue.Text = "$-.--";
            }
        }

        private void HoursEntered_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
                (e.KeyChar != '.'))
            {
                e.Handled = true;
            }

            // only allow one decimal point
            if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
            }
        }
    }
}
