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

namespace Administration
{
    public partial class AddRealmForm : Form
    {
        public AddRealmForm()
        {
            InitializeComponent();
        }

        private void submitButton_Click(object sender, EventArgs e)
        {
            double scienceQuality = 0;

            try
            {
                scienceQuality = Double.Parse(scienceQualityEdit.Text, CultureInfo.InvariantCulture);
            }
            catch (FormatException)
            {
                MessageBox.Show("Zadaná kvalita vědy není reálné číslo mezi 0 a 1");
                return;
            }

            if (scienceQuality < 0 || scienceQuality > 1)
            {
                MessageBox.Show("Zadaná kvalita vědy reálné číslo mezi 0 a 1");
                return;
            }

            double shipQuality = 0;

            try
            {
                shipQuality = Double.Parse(shipQualityEdit.Text, CultureInfo.InvariantCulture);
            }
            catch (FormatException)
            {
                MessageBox.Show("Zadaná kvalita lodí není reálné číslo mezi 0 a 1");
                return;
            }

            if (shipQuality < 0 || shipQuality > 1)
            {
                MessageBox.Show("Zadaná kvalita lodí reálné číslo mezi 0 a 1");
                return;
            }

            double baseQuality = 0;

            try
            {
                baseQuality = Double.Parse(baseQualityEdit.Text, CultureInfo.InvariantCulture);
            }
            catch (FormatException)
            {
                MessageBox.Show("Zadaná kvalita základen není reálné číslo mezi 0 a 1");
                return;
            }

            if (baseQuality < 0 || baseQuality > 1)
            {
                MessageBox.Show("Zadaná kvalita základen reálné číslo mezi 0 a 1");
                return;
            }

            int shipCount = 0;

            try
            {
                shipCount = int.Parse(shipCountEdit.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Zadaný počet lodí není celé číslo mezi 0 a 8");
                return;
            }

            if (shipCount < 0 || shipCount > 8)
            {
                MessageBox.Show("Zadaný počet lodí není celé číslo mezi 0 a 8");
                return;
            }

            int baseCount = 0;

            try
            {
                baseCount = int.Parse(baseCountEdit.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Zadaný počet základen není celé číslo mezi 0 a 8");
                return;
            }

            if (baseCount < 0 || baseCount > 8)
            {
                MessageBox.Show("Zadaný počet základen není celé číslo mezi 0 a 8");
                return;
            }

            AddRealmRequest request = new AddRealmRequest {
                username = usernameEdit.Text,
                realname = realnameEdit.Text,
                password = passwordEdit.Text,                
                science_quality = scienceQuality,
                ship_quality = shipQuality,
                base_quality = baseQuality,
                ship_count = shipCount,
                base_count = baseCount
            };

            ClientCommunicator.Instance.SendMessage(request);
            Close();
        }
    }
}
