Ejemplo n.º 1
0
        private void BuscarPorArtista(int codigo)
        {
            binarySearchResult = BinarySearch.BinarySearchDisplay(Array.ConvertAll(General.Artistas, a => a.Codigo).Where(a => a > 0).ToArray(), codigo);

            if (binarySearchResult != -1)
            {
                Editar.Click       += EditarArtista;
                LabelNome.Text      = "Nome do Artista: " + General.Artistas[binarySearchResult].NomeArtistico + " (" + General.Artistas[binarySearchResult].NomeVerdadeiro + ")";
                LabelGridView1.Text = "Músicas";
                LabelGridView2.Text = "Álbuns";

                LabelNome.Visible      = true;
                Editar.Visible         = true;
                LabelGridView1.Visible = true;
                LabelGridView2.Visible = true;
                DataGridView1.Visible  = true;
                DataGridView2.Visible  = true;

                DataGridView1.Columns.Clear();
                DataGridView1.Columns.Add("Codigo", "Código");
                DataGridView1.Columns.Add("Titulo", "Título");
                DataGridView1.Rows.Clear();

                General.Cancao[] cancoes = new General.Cancao[0];
                for (int i = 0; i < General.CancoesSize; i++)
                {
                    if (General.Cancoes[i].CodigoCompositor == codigo && General.Cancoes[i].CodigoArtistaPrimeiraGravacao == codigo)
                    {
                        Array.Resize(ref cancoes, cancoes.Length + 1);
                        cancoes[^ 1] = General.Cancoes[i];
        private void CancaoForm_Load(object sender, EventArgs e)
        {
            if (General.CancoesSize >= General.MaxSize)
            {
                MessageBox.Show("O limite de espaço para canções foi atingido", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Close();
            }

            if (General.ArtistasSize == 0)
            {
                MessageBox.Show("É necessário cadastrar ao menos um artista.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Close();
            }

            for (int i = 0; i < General.ArtistasSize; i++)
            {
                General.Artista artistaTemp = General.Artistas[i];
                RefCodes.Add(artistaTemp.Codigo);
                Compositor.Items.Add("(" + artistaTemp.Codigo + ") " + artistaTemp.NomeArtistico);
                Artista.Items.Add("(" + artistaTemp.Codigo + ") " + artistaTemp.NomeArtistico);
            }

            if (Index != -1)
            {
                General.Cancao cancaoTemp = General.Cancoes[Index];
                Codigo.Text              = cancaoTemp.Codigo.ToString();
                Titulo.Text              = cancaoTemp.Titulo;
                Letra.Text               = cancaoTemp.Letra;
                Melodia.Text             = cancaoTemp.Melodia;
                Compositor.SelectedIndex = BinarySearch.BinarySearchDisplay(RefCodes, cancaoTemp.CodigoCompositor);
                Artista.SelectedIndex    = BinarySearch.BinarySearchDisplay(RefCodes, cancaoTemp.CodigoArtistaPrimeiraGravacao);
            }
        }
Ejemplo n.º 3
0
        private void AlbumForm_Load(object sender, EventArgs e)
        {
            toolTip1.SetToolTip(label7, "Digite o código da música e pressione Enter para selecionar a música");
            toolTip1.SetToolTip(label8, "Digite o código do artista e pressione Enter para selecionar o artista");

            if (General.AlbumsSize >= General.MaxSize)
            {
                MessageBox.Show("O limite de espaço para canções foi atingido", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Close();
            }

            if (General.ArtistasSize == 0)
            {
                MessageBox.Show("É necessário cadastrar ao menos um artista.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Close();
            }

            if (General.CancoesSize == 0)
            {
                MessageBox.Show("É necessário cadastrar ao menos uma música.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Close();
            }

            for (int i = 0; i < General.ArtistasSize; i++)
            {
                General.Artista artistaTemp = General.Artistas[i];
                ArtistasParticipantes.Items.Add("(" + artistaTemp.Codigo + ") " + artistaTemp.NomeArtistico);
                RefCodesArtistas.Add(artistaTemp.Codigo);
            }

            for (int i = 0; i < General.CancoesSize; i++)
            {
                General.Cancao cancaoTemp = General.Cancoes[i];
                ListaMusicas.Items.Add("(" + cancaoTemp.Codigo + ") " + cancaoTemp.Titulo);
                RefCodesMusicas.Add(cancaoTemp.Codigo);
            }

            if (Index != -1)
            {
                General.Album albumTemp = General.Albums[Index];
                Codigo.Text          = albumTemp.Codigo.ToString();
                Titulo.Text          = albumTemp.Titulo;
                DataLancamento.Text  = albumTemp.DataLancamento.ToString("d");
                NCopiasVendidas.Text = albumTemp.NumeroCopiasVendidas.ToString();
                for (int i = 0; i < albumTemp.CodigosMusicas.Length; i++)
                {
                    ListaMusicas.SetItemChecked(BinarySearch.BinarySearchDisplay(RefCodesMusicas, albumTemp.CodigosMusicas[i]), true);
                }
                for (int i = 0; i < albumTemp.ArtistasParticipantes.Length; i++)
                {
                    ArtistasParticipantes.SetItemChecked(BinarySearch.BinarySearchDisplay(RefCodesArtistas, albumTemp.ArtistasParticipantes[i]), true);
                }
            }
        }
Ejemplo n.º 4
0
        private void PesquisarArtistas_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (!int.TryParse(PesquisarArtistas.Text, out int codigo) || codigo <= 0)
                {
                    MessageBox.Show("O código precisa ser um número maior que 0", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                int resultado = BinarySearch.BinarySearchDisplay(RefCodesArtistas, codigo);

                if (resultado != -1)
                {
                    ArtistasParticipantes.SetItemChecked(resultado, true);
                    PesquisarArtistas.Text = "";
                    MessageBox.Show("O artista \"" + General.Artistas[resultado].NomeArtistico + "\" foi selecionado.", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Nenhum resultado encontrado para este código", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }
Ejemplo n.º 5
0
        private void Salvar_Click(object sender, EventArgs e)
        {
            string erro = "";

            int codigo = 0;

            if (Codigo.Text != "" && (!int.TryParse(Codigo.Text, out codigo) || codigo <= 0))
            {
                erro += "- O código precisa ser um número maior que zero\n";
            }

            if (NomeVerdadeiro.Text == "" || NomeArtistico.Text == "" || DataAniversario.Text == "" || (BandaSN.Checked && Banda.Text == "") || Email.Text == "" || Telefone.Text == "" || NomeEmpresario.Text == "" || EmailEmpresario.Text == "" || TipoTrabalho.SelectedIndex == -1 || NAlbunsLancados.Text == "" || NComposicoes.Text == "")
            {
                erro += "- Todos os campos precisam ser prenchidos com excessão do código\n";
            }

            if (!DateTime.TryParse(DataAniversario.Text, out DateTime aniversario))
            {
                erro += "- O campo Data de Aniversário não está em um formato válido, utilize o formato dia/mês/ano\n";
            }

            if (!int.TryParse(NAlbunsLancados.Text, out int nAlbunsLancados))
            {
                erro += "- O número de álbuns lançados precisa ser um número\n";
            }

            if (!int.TryParse(NComposicoes.Text, out int nComposicoes))
            {
                erro += "- O número de composições precisa ser um número\n";
            }

            if (!decimal.TryParse(CacheMinimo.Text, out decimal cacheMinimo))
            {
                erro += "- O campo cache mínimo precisa ser um número\n";
            }

            if (Index == -1 && BinarySearch.BinarySearchDisplay(Array.ConvertAll(General.Artistas, a => a.Codigo).Where(a => a > 0).ToArray(), codigo) != -1)
            {
                erro += "- Este código já está sendo utilizado\n";
            }

            if (!ValidateMail(Email.Text))
            {
                erro += "- Formato de e-mail do artista inválido, tente o formato [email protected]\n";
            }

            if (!ValidateMail(EmailEmpresario.Text))
            {
                erro += "- Formato de e-mail do empresário inválido, tente o formato [email protected]\n";
            }

            if (erro != "")
            {
                MessageBox.Show(erro, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            General.Artista.TipoTrabalho tipoTrabalho = TipoTrabalho.SelectedIndex switch
            {
                0 => General.Artista.TipoTrabalho.Cantor,
                1 => General.Artista.TipoTrabalho.Compositor,
                2 => General.Artista.TipoTrabalho.Ambos,
                _ => throw new ArgumentOutOfRangeException(),
            };

            if (Codigo.Text == "")
            {
                codigo = General.ArtistasSize != 0 ? General.Artistas[General.ArtistasSize - 1].Codigo + 1 : 1;
            }

            if (Index == -1)
            {
                General.Artistas[General.ArtistasSize++] = new General.Artista()
                {
                    Codigo                    = codigo,
                    NomeVerdadeiro            = NomeVerdadeiro.Text,
                    NomeArtistico             = NomeArtistico.Text,
                    Aniversario               = aniversario,
                    BandaBool                 = BandaSN.Checked,
                    NomeBanda                 = Banda.Text,
                    Email                     = Email.Text,
                    Telefone                  = Telefone.Text,
                    NomeEmpresario            = NomeEmpresario.Text,
                    EmailEmpresario           = EmailEmpresario.Text,
                    EmailEmpresarioTabelaHash = HashTable.QuadraticHashInsert(EmailEmpresario.Text),
                    TipoDeTrabalho            = tipoTrabalho,
                    NumeroAlbunsLancados      = nAlbunsLancados,
                    NumeroComposicoes         = nComposicoes,
                    CacheMinimo               = cacheMinimo
                };

                // A função Array.ConvertAll pega o vetor da struct Album e retorna um vetor de inteiros com os códigos de cada uma
                // A função Where remove todos os índices de código 0 pois nestes casos o vetor não está preenchido e não deve ser ordenado
                MergeSort.Sort(General.Artistas, Array.ConvertAll(General.Artistas, a => a.Codigo).Where(a => a > 0).ToArray());
            }
            else
            {
                if (EmailEmpresario.Text != General.Artistas[Index].EmailEmpresario)
                {
                    HashTable.Edit(General.Artistas[Index].EmailEmpresarioTabelaHash, EmailEmpresario.Text);
                }

                General.Artistas[Index] = new General.Artista()
                {
                    Codigo                    = General.Artistas[Index].Codigo,
                    NomeVerdadeiro            = NomeVerdadeiro.Text,
                    NomeArtistico             = NomeArtistico.Text,
                    Aniversario               = aniversario,
                    BandaBool                 = BandaSN.Checked,
                    NomeBanda                 = Banda.Text,
                    Email                     = Email.Text,
                    Telefone                  = Telefone.Text,
                    NomeEmpresario            = NomeEmpresario.Text,
                    EmailEmpresario           = EmailEmpresario.Text,
                    EmailEmpresarioTabelaHash = General.Artistas[Index].EmailEmpresarioTabelaHash,
                    TipoDeTrabalho            = tipoTrabalho,
                    NumeroAlbunsLancados      = nAlbunsLancados,
                    NumeroComposicoes         = nComposicoes,
                    CacheMinimo               = cacheMinimo
                };
            }

            Program.globalForm.UpdateRows(Main.DataGrid.Artistas);
            Close();
        }
Ejemplo n.º 6
0
        private void Salvar_Click(object sender, EventArgs e)
        {
            string erro = "";

            int codigo = 0;

            if (Codigo.Text != "" && (!int.TryParse(Codigo.Text, out codigo) || codigo <= 0))
            {
                erro += "- O código precisa ser um número maior que zero\n";
            }

            if (Titulo.Text == "" || DataLancamento.Text == "" || NCopiasVendidas.Text == "" || ListaMusicas.CheckedItems.Count == 0 || ArtistasParticipantes.CheckedItems.Count == 0)
            {
                erro += "- Todos os campos precisam ser prenchidos com excessão do código\n";
            }

            if (Index == -1 && BinarySearch.BinarySearchDisplay(Array.ConvertAll(General.Albums, a => a.Codigo).Where(a => a > 0).ToArray(), codigo) != -1)
            {
                erro += "- Este código já está sendo utilizado\n";
            }

            if (!DateTime.TryParse(DataLancamento.Text, out DateTime dataLancamento))
            {
                erro += "- Data de Lançamento inválida\n";
            }

            if (!long.TryParse(NCopiasVendidas.Text, out long nCopiasVendidas))
            {
                erro += "- Número de cópias inválido\n";
            }

            if (erro != "")
            {
                MessageBox.Show(erro, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (Codigo.Text == "")
            {
                codigo = General.AlbumsSize != 0 ? General.Albums[General.AlbumsSize - 1].Codigo + 1 : 1;
            }

            int[]      indicesMusicas = ListaMusicas.CheckedIndices.Cast <int>().ToArray();
            List <int> codigosMusicas = new List <int>();

            for (int i = 0; i < indicesMusicas.Length; i++)
            {
                codigosMusicas.Add(RefCodesMusicas[indicesMusicas[i]]);
            }

            int[]      indicesArtistas = ArtistasParticipantes.CheckedIndices.Cast <int>().ToArray();
            List <int> codigosArtistas = new List <int>();

            for (int i = 0; i < indicesArtistas.Length; i++)
            {
                codigosArtistas.Add(RefCodesArtistas[indicesArtistas[i]]);
            }

            if (Index == -1)
            {
                General.Albums[General.AlbumsSize++] = new General.Album()
                {
                    Codigo                = codigo,
                    Titulo                = Titulo.Text,
                    DataLancamento        = dataLancamento,
                    NumeroCopiasVendidas  = nCopiasVendidas,
                    CodigosMusicas        = codigosMusicas.ToArray(),
                    ArtistasParticipantes = codigosArtistas.ToArray()
                };

                // A função Array.ConvertAll pega o vetor da struct Album e retorna um vetor de inteiros com os códigos de cada uma
                // A função Where remove todos os índices de código 0 pois nestes casos o vetor não está preenchido e não deve ser ordenado
                MergeSort.Sort(General.Albums, Array.ConvertAll(General.Albums, a => a.Codigo).Where(a => a > 0).ToArray());
            }
            else
            {
                General.Albums[Index] = new General.Album()
                {
                    Codigo                = General.Albums[Index].Codigo,
                    Titulo                = Titulo.Text,
                    DataLancamento        = dataLancamento,
                    NumeroCopiasVendidas  = nCopiasVendidas,
                    CodigosMusicas        = codigosMusicas.ToArray(),
                    ArtistasParticipantes = codigosArtistas.ToArray()
                };
            }

            Program.globalForm.UpdateRows(Main.DataGrid.Albuns);
            Close();
        }
        private void Salvar_Click(object sender, EventArgs e)
        {
            string erro = "";

            int codigo = 0;

            if (Codigo.Text != "" && (!int.TryParse(Codigo.Text, out codigo) || codigo <= 0))
            {
                erro += "- O código precisa ser um número maior que zero\n";
            }

            if (Titulo.Text == "" || Letra.Text == "" || Melodia.Text == "" || Compositor.SelectedIndex == -1 || Artista.SelectedIndex == -1)
            {
                erro += "- Todos os campos precisam ser prenchidos com excessão do código\n";
            }

            if (Index == -1 && BinarySearch.BinarySearchDisplay(Array.ConvertAll(General.Cancoes, a => a.Codigo).Where(a => a > 0).ToArray(), codigo) != -1)
            {
                erro += "- Este código já está sendo utilizado\n";
            }

            if (erro != "")
            {
                MessageBox.Show(erro, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (Codigo.Text == "")
            {
                codigo = General.CancoesSize != 0 ? General.Cancoes[General.CancoesSize - 1].Codigo + 1 : 1;
            }

            if (Index == -1)
            {
                General.Cancoes[General.CancoesSize++] = new General.Cancao()
                {
                    Codigo           = codigo,
                    Titulo           = Titulo.Text,
                    Letra            = Letra.Text,
                    Melodia          = Melodia.Text,
                    CodigoCompositor = RefCodes[Compositor.SelectedIndex],
                    CodigoArtistaPrimeiraGravacao = RefCodes[Artista.SelectedIndex]
                };

                // A função Array.ConvertAll pega o vetor da struct Album e retorna um vetor de inteiros com os códigos de cada uma
                // A função Where remove todos os índices de código 0 pois nestes casos o vetor não está preenchido e não deve ser ordenado
                MergeSort.Sort(General.Cancoes, Array.ConvertAll(General.Cancoes, a => a.Codigo).Where(a => a > 0).ToArray());
            }
            else
            {
                General.Cancoes[Index] = new General.Cancao()
                {
                    Codigo           = General.Cancoes[Index].Codigo, // Codigo nao pode ser alterado
                    Titulo           = Titulo.Text,
                    Letra            = Letra.Text,
                    Melodia          = Melodia.Text,
                    CodigoCompositor = RefCodes[Compositor.SelectedIndex],
                    CodigoArtistaPrimeiraGravacao = RefCodes[Artista.SelectedIndex]
                };
            }

            Program.globalForm.UpdateRows(Main.DataGrid.Musicas);
            Close();
        }