//
// Autore: Giuliano Pellegrini Parisi
//
// Classe: 3^Sirio Inf.
//
// Data: 6 febbraio 2009
//
// Oggetto: Implementazione libreria fbblControlli
//
// Release: 0.1d

// ChangeLog del 25 marzo 2009: Aggiunta procedura ControlloNumeroInteroPositivo e ControlloNumeroIntero
// ChangeLog del 15 marzo 2009: Aggiunta procedura ControlloMinoreOUguale
// ChangeLog del 6 febbraio 2009: Aggiunta procedure ControlloNumeroRealePositivo e ControlloNumeroReale

using fbblMessaggi;
using fbblCostanti;
using System;

namespace fbblControlli
{

    public class StrumentiControlli
    {

        static public void ControlloNumeroRealePositivo(string Stringa,out bool ControlloOK,out double NumeroReale)
        {
            ControlloNumeroReale(Stringa,out ControlloOK,out NumeroReale);

            if ( (ControlloOK==true) && (NumeroReale<=0) )
            {
                ControlloOK = false;
            }

        }

        static public void ControlloNumeroReale(string Stringa, out bool ControlloOK, out double NumeroReale)
        {
            NumeroReale = 0;

            if (Stringa==StrumentiCostanti.StringaVuota)
            {
                ControlloOK = false;

                return;
            }

            try
            {
                NumeroReale=Convert.ToDouble(Stringa);

                ControlloOK = true;
            }
            catch (FormatException)
            {
                ControlloOK = false;
            }

        }

        static public bool ControlloNumeroRealeNonPositivo(double DatoInserito)
        {
            bool EsitoControllo;

            if (DatoInserito>0)
            {
                EsitoControllo = false;
            }
            else
            {
                EsitoControllo = true;
                StrumentiMessaggi.Messaggio("\nIl numero inserito non è reale positivo!");
            }


            return EsitoControllo;

        }

        static public void ControlloTriangolo(double Lato1,double Lato2,double Lato3,out bool ControlloOK)
        {
            // Uso dell'operatore AND Logico chiamato anche Prodotto logico

            //0 and 0 = 0
            //0 and 1 = 0
            //1 and 0 = 0
            //1 and 1 = 1
            //1 and 1 and 1 = 1
            //1 and 1 and 0 = 0


            if ( (Lato1<Lato2+Lato3) && (Lato2<Lato1+Lato3) && (Lato3<Lato1+Lato2) )
            {
                ControlloOK = true;
            }
            else
            {
                ControlloOK = false;
            }

        }

        static public void ControlloMaggioreOUguale(double BaseMaggiore,double BaseMinore,out bool ControlloOK)
        {
            if (BaseMaggiore>=BaseMinore)
            {
                ControlloOK = true;
            }
            else
            {
                ControlloOK = false;
            }
        }


        static public void ControlloMinoreOUguale(double Numero1,double Numero2,out bool ControllOK)
        {
            if (Numero1<=Numero2)
            {
                ControllOK = true;
            }
            else
            {
                ControllOK = false;
            }
        }

        static public void ControlloNumeroInteroPositivo(string Stringa,out bool ControlloOK,out int NumeroIntero)
        {
            ControlloNumeroIntero(Stringa,out ControlloOK,out NumeroIntero);

            if (ControlloOK && NumeroIntero<=0)
            {
                ControlloOK = false;
            }

        }

        static public void ControlloNumeroIntero(string Stringa, out bool ControlloOK, out int NumeroIntero)
        {
            NumeroIntero = 0;

            if (Stringa==StrumentiCostanti.StringaVuota)
            {
                ControlloOK = false;

                return;
            }

            try
            {
                NumeroIntero = Convert.ToInt32(Stringa);

                ControlloOK = true;
            }
            catch (FormatException)
            {
                ControlloOK = false;
            }
      
        }


    }


}
