/// <summary>
        /// Searches the artigo.
        /// </summary>
        /// <param name="a">a.</param>
        /// <param name="posicaoArtigo">The posicao artigo.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public bool SearchArtigo(Artigo a, out int posicaoArtigo)
        {
            int tamanho = totArtigos;

            posicaoArtigo = -1;



            if (a == null || tamanho == 0)
            {
                return(false);
            }

            for (int k = 0; k < tamanho; k++)
            {
                if (a == artigos[k])
                {
                    //se tudo for verificado envia a posição do trabalhador
                    posicaoArtigo = k;
                    return(true);
                }
            }

            return(false);
        }
        /// <summary>
        /// Dipenseses the artigo.
        /// </summary>
        /// <param name="a">a.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public bool DipensesArtigo(Artigo a)
        {
            if (a == null)
            {
                return(false);
            }

            int posicaoArtigo;

            if (SearchArtigo(a, out posicaoArtigo))
            {
                artigos[posicaoArtigo]      = null;
                listaArtigos[posicaoArtigo] = null;
                totArtigos--;
                //Tapa aqueles buracos onde é null
                SortAll();
                return(true);
            }

            return(false);
        }
        /// <summary>
        /// Searches the name of the artigo by.
        /// </summary>
        /// <param name="s">The s.</param>
        /// <param name="nomeArtigo">The nome artigo.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public bool SearchArtigoByName(out Artigo s, string nomeArtigo)
        {
            int lenght = totArtigos;

            s = new Artigo();

            if (nomeArtigo == null || lenght == 0)
            {
                return(false);
            }

            for (int i = 0; i <= lenght; i++)
            {
                if (nomeArtigo == this.artigos[i].Nome)
                {
                    s = artigos[i];
                    return(true);
                }
            }

            return(false);
        }
        /// <summary>
        /// Sees all.
        /// </summary>
        /// <param name="todosartigos">The todosartigos.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public bool SeeAll(out Artigo[] todosartigos)
        {
            int lenght = totArtigos;

            todosartigos = new Artigo[lenght];

            if (lenght == 0)
            {
                return(false);
            }

            for (int i = 0; i < QUANTIDADEARTIGOS; i++)
            {
                if (artigos[i] == null)
                {
                    continue;
                }

                todosartigos[i] = artigos[i];
            }
            return(true);
        }
        /// <summary>
        /// Adds the artigo.
        /// </summary>
        /// <param name="a">a.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public bool AddArtigo(Artigo a)
        {
            if (a == null)
            {
                return(false);
            }

            if (totArtigos == QUANTIDADEARTIGOS)
            {
                return(false);
            }

            if (artigos.Contains(a))
            {
                return(false);
            }

            artigos[totArtigos]      = a;
            listaArtigos[totArtigos] = a.Nome;
            totArtigos++;

            return(true);
        }
        //Uma conferencia pode ter uma pausa. Exemplo começa dia 1 - 12 - 2015 e acaba dia 5 - 12 -2015 no dia 4 pode não haver eventos.

        /*
         *  Todos os ciclos serão aqui colocados
         */

        /// <summary>
        /// Defines the entry point of the application.
        /// </summary>
        /// <param name="args">The arguments.</param>
        static void Main(string[] args)
        {
            #region Vars

            int opcaoMenu    = -1;
            int opcaoSubMenu = -1;


            OrganizadorConferencias organizador  = new OrganizadorConferencias();
            Conferencia             conferencia  = new Conferencia(DateTime.Parse("29-12-2015"), DateTime.Parse("30-12-2015"), "Work");
            Conferencia             conferenciaU = new Conferencia(DateTime.Parse("29-12-2015"), DateTime.Parse("30-12-2015"), "Work1");
            Conferencia             conferenciaI = new Conferencia(DateTime.Parse("29-12-2015"), DateTime.Parse("30-12-2015"), "Work2");
            Conferencia             conferenciaO = new Conferencia(DateTime.Parse("29-12-2015"), DateTime.Parse("30-12-2015"), "Work3");
            Conferencia             conferenciaP = new Conferencia(DateTime.Parse("29-12-2015"), DateTime.Parse("31-12-2015"), "Work4");
            Sessao sessao  = new Sessao(1, DateTime.Parse("30-12-2015"), DateTime.Parse("30-12-2015"));
            Artigo artigo  = new Artigo("Programar");
            Pessoa pessoa  = new Pessoa(34, "Luis", TipoPessoa.autor, 1);
            Pessoa pessoaU = new Pessoa(21, "Parente", TipoPessoa.convidado, 2);
            Pessoa pessoaI = new Pessoa(70, "Patente", TipoPessoa.convidado, 3);
            Pessoa pessoaP = new Pessoa(70, "Patente", TipoPessoa.convidado, 3);

            #endregion

            #region Body

            do
            {
                RecebeOpcaoMenu(out opcaoMenu);

                switch (opcaoMenu)
                {
                    #region 1

                case 1:
                    do
                    {
                        Console.Clear();
                        organizador.EscreveProprio();

                        RecebeOpcaoSubMenu(out opcaoSubMenu);
                    } while (opcaoSubMenu != 0);

                    break;

                    #endregion

                    #region 2

                case 2:
                    do
                    {
                        Console.Clear();
                        conferencia.EscreveProprio();
                        ComoCorreu(organizador.InsereConferenciaoAno(conferencia));
                        ComoCorreu(organizador.InsereConferenciaoAno(conferenciaU));
                        ComoCorreu(organizador.InsereConferenciaoAno(conferenciaI));
                        ComoCorreu(organizador.InsereConferenciaoAno(conferenciaO));
                        ComoCorreu(organizador.InsereConferenciaoAno(conferenciaP));
                        organizador.SeeAllConferencias();


                        RecebeOpcaoSubMenu(out opcaoSubMenu);
                    } while (opcaoSubMenu != 0);

                    break;

                    #endregion

                    #region 3

                case 3:
                    do
                    {
                        Console.Clear();
                        sessao.EscreveProprio();
                        ComoCorreu(conferencia.AddSessoes(sessao));

                        RecebeOpcaoSubMenu(out opcaoSubMenu);
                    } while (opcaoSubMenu != 0);

                    break;

                    #endregion

                    #region 4

                case 4:
                    do
                    {
                        Console.Clear();
                        artigo.EscreveProprio();
                        ComoCorreu(sessao.AddArtigo(artigo));

                        RecebeOpcaoSubMenu(out opcaoSubMenu);
                    } while (opcaoSubMenu != 0);

                    break;

                    #endregion

                    #region 5

                case 5:
                    do
                    {
                        Console.Clear();
                        ComoCorreu(artigo.AddPessoa(pessoa));
                        ComoCorreu(artigo.AddPessoa(pessoaU));
                        ComoCorreu(artigo.AddPessoa(pessoaI));
                        ComoCorreu(artigo.AddPessoa(pessoaP));
                        pessoa.EscreveProprio();

                        RecebeOpcaoSubMenu(out opcaoSubMenu);
                    } while (opcaoSubMenu != 0);

                    break;

                    #endregion

                    #region 0

                case 0:
                    Environment.Exit(0);

                    break;

                    #endregion

                    #region Default

                default:
                    Console.WriteLine("\nNot Found ");

                    break;

                    #endregion
                }
            } while (true);

            #endregion
        }
 /// <summary>
 /// Compares the artigo.
 /// </summary>
 /// <param name="pU">The p u.</param>
 /// <param name="pD">The p d.</param>
 /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
 public static bool CompareArtigo(Artigo pU, Artigo pD)
 {
     return(pU == pD);
 }
 /// <summary>
 /// Escreves the artigo.
 /// </summary>
 /// <param name="a">a.</param>
 public void EscreveArtigo(Artigo a)
 {
     Console.WriteLine(a.ToString());
 }