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

using fbblEntiPubblici;
using fbblMessaggi;
using fbblTipi;
using fbblCostanti;

// Librerie per l'utilizzo dei file e per l'impiego della tecnica di serializzazione Linq To Xml

using System.Xml.Linq;


namespace fdprEntiPubblici
{
    public partial class frmInserisciDatiAmbasciata : Form
    {
        private Liste OggettoListe = new Liste();
       
        public frmInserisciDatiAmbasciata()
        {
            InitializeComponent();
        }

//************************ PROCEDURE LOCALI DI PROGETTO *******************************//

        private void ControlloDati
                                    (
                                      out string NomeEnte,
                                      out string TipoEnte,
                                      out bool Presidiato,
                                      out string Nazione,
                                      out bool Incorporato,
                                      out string Capitale,
                                      out string Nome,
                                      out string Cognome,
                                      out string Sesso,
                                      out string Eta,
                                      out string Indirizzo,
                                      out string Citta,
                                      out string TipoVisto,
                                      out string DurataVisto,
                                      out bool ControlloOK
                                    )
        {
            NomeEnte = edtNomeEnte.Text;
            TipoEnte = edtTipoEnte.Text;
            Presidiato = cboEntePresidiato.Text == "Si" ? true : false;
            Nazione = edtNazione.Text;
            Incorporato = cboIncorporato.Text == "Si" ? true : false;
            Capitale = edtCapitale.Text;
            Nome = edtNomePersona.Text;
            Cognome = edtCognomePersona.Text;
            Sesso = edtSessoPersona.Text;
            Eta = edtEtaPersona.Text;
            Indirizzo = edtIndirizzoPersona.Text;
            Citta = edtCittaPersona.Text;
            TipoVisto = edtTipoVisto.Text;
            DurataVisto = edtDurataVisto.Text;

            ControlloOK = true;

            if (NomeEnte==StrumentiCostanti.StringaVuota)
            {
                edtNomeEnte.Focus();

                ControlloOK = false;

                return;
            }

            if (TipoEnte == StrumentiCostanti.StringaVuota)
            {
                edtTipoEnte.Focus();

                ControlloOK = false;

                return;
            }

            if (cboEntePresidiato.Text == StrumentiCostanti.StringaVuota)
            {
                cboEntePresidiato.Focus();

                ControlloOK = false;

                return;
            }

            if (Nazione == StrumentiCostanti.StringaVuota)
            {
                edtNazione.Focus();

                ControlloOK = false;

                return;
            }

            if (Capitale == StrumentiCostanti.StringaVuota)
            {
                edtCapitale.Focus();

                ControlloOK = false;

                return;
            }

            if (cboIncorporato.Text == StrumentiCostanti.StringaVuota)
            {
                cboIncorporato.Focus();

                ControlloOK = false;

                return;
            }

            if (Nome == StrumentiCostanti.StringaVuota && Incorporato)
            {
                edtNomePersona.Focus();

                ControlloOK = false;

                return;
            }

            if (Cognome == StrumentiCostanti.StringaVuota && Incorporato)
            {
                edtCognomePersona.Focus();

                ControlloOK = false;

                return;
            }

            if (Indirizzo == StrumentiCostanti.StringaVuota && Incorporato)
            {
                edtIndirizzoPersona.Focus();

                ControlloOK = false;

                return;
            }

            if (Sesso == StrumentiCostanti.StringaVuota && Incorporato)
            {
                edtSessoPersona.Focus();

                ControlloOK = false;

                return;
            }

            if (Eta == StrumentiCostanti.StringaVuota && Incorporato)
            {
                edtEtaPersona.Focus();

                ControlloOK = false;

                return;
            }

            if (Citta == StrumentiCostanti.StringaVuota && Incorporato)
            {
                edtCittaPersona.Focus();

                ControlloOK = false;

                return;
            }

            if (TipoVisto == StrumentiCostanti.StringaVuota && Incorporato)
            {
                edtTipoVisto.Focus();

                ControlloOK = false;

                return;
            }

            if (DurataVisto == StrumentiCostanti.StringaVuota && Incorporato)
            {
                edtDurataVisto.Focus();

                ControlloOK = false;

                return;
            }
        }

        private void frmInserisciDatiAmbasciata_Memorizza()
        {
            string NomeEnte;
            string TipoEnte;
            bool Presidiato;
            string Nazione;
            bool Incorporato;
            string Capitale;
            string Nome;
            string Cognome;
            string Sesso;
            string Eta;
            string Indirizzo;
            string Citta;
            string TipoVisto;
            string DurataVisto;
            bool ControlloOK;

            ControlloDati
                        (
                          out NomeEnte,
                          out TipoEnte,
                          out Presidiato,
                          out Nazione,
                          out Incorporato,
                          out Capitale,
                          out Nome,
                          out Cognome,
                          out Sesso,
                          out Eta,
                          out Indirizzo,
                          out Citta,
                          out TipoVisto,
                          out DurataVisto,
                          out ControlloOK
                        );

            if (ControlloOK)
            {
                Ambasciata Embassy = new Ambasciata
                                                  (
                                                      NomeEnte, 
                                                      TipoEnte, 
                                                      Nazione,
                                                      Presidiato,
                                                      Incorporato,
                                                      Capitale,
                                                      Nome,
                                                      Cognome,
                                                      Eta,
                                                      Sesso,
                                                      Indirizzo,
                                                      Citta,
                                                      TipoVisto,
                                                      DurataVisto                         
                                                  );

                this.OggettoListe.ListaDiClassiAmbasciata.Add(Embassy);

            }
            else
            {
                //MessageBox.Show("Devi inserire tutti i dati!");
                StrumentiMessaggi.Messaggio("Devi inserire tutti i dati!","Errore");
            }

        }

        private void frmInserisciDatiAmbasciata_SalvaSuFile()
        {
            
            try
            {

                var DocumentoXML = new XDocument
                                    (
                                      new XElement
                                          (
                                            "Ambasciate",
                                            from Embassy in this.OggettoListe.ListaDiClassiAmbasciata
                                            select new XElement("Ambasciata",
                                                                   new XElement("NomeEnte", Embassy.NomeEnte),
                                                                   new XElement("TipoEnte", Embassy.TipoEnte),
                                                                   new XElement("Nazione", Embassy.Nazione),
                                                                   new XElement("Presidiato", Embassy.Presidiato),
                                                                   new XElement("Incorporato", Embassy.Incorporato),
                                                                   new XElement("Capitale", Embassy.Capitale),
                                                                   new XElement("Nome", Embassy.Nome),
                                                                   new XElement("Cognome", Embassy.Cognome),
                                                                   new XElement("Sesso", Embassy.Sesso),
                                                                   new XElement("Eta", Embassy.Eta),
                                                                   new XElement("Indirizzo", Embassy.Indirizzo),
                                                                   new XElement("Citta", Embassy.Citta),
                                                                   new XElement("TipoVisto", Embassy.TipoVisto),
                                                                   new XElement("DurataVisto", Embassy.DurataVisto),
                                                                   new XElement("NumeroUomini", Embassy.NumeroUomini)
                                                                )

                                            )
                                     );

                  DocumentoXML.Save("c:\\temp\\Ambasciata.xml"); 

                }
                catch (Exception e)
                {
                    //MessageBox.Show(e.Message);
                    StrumentiMessaggi.Messaggio(e.Message, "Errore");
                }
           
        }

//************************ PROCEDURE DI RISPOSTA AGLI EVENTI **************************//

        private void btnMemorizza_Click(object sender, EventArgs e)
        {
            frmInserisciDatiAmbasciata_Memorizza();
        }

        private void btnEsporta_Click(object sender, EventArgs e)
        {
            frmInserisciDatiAmbasciata_SalvaSuFile();
        }


    }
}
