private void DataGridViewArtistas_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex == -1) { return; } if (e.ColumnIndex == DataGridViewArtistas.Columns["Editar"].Index) { if (IsFormOpen("ArtistaForm")) { MessageBox.Show("Não é possível abrir outro formulário do mesmo tipo", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { new ArtistaForm(e.RowIndex).Show(); } } else if (e.ColumnIndex == DataGridViewArtistas.Columns["Remover"].Index) { if (MessageBox.Show("Tem certeza que deseja remover este artista? Todos as músicas e álbuns que contém este artista também serão excluídos.", "Aviso!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { // Remove as músicas que contém o artista a ser removido para evitar problemas General.Cancao.RemoverArtista(General.Artistas[e.RowIndex].Codigo); // Remove os álbuns que contém o artista a ser removido para evitar problemas General.Album.RemoverArtista(General.Artistas[e.RowIndex].Codigo); // Remove o email do empresário da tabela hash HashTable.Remove(General.Artistas[e.RowIndex].EmailEmpresarioTabelaHash); // Remove o artista General.Artista.RemoveAt(e.RowIndex); UpdateRows(DataGrid.Albuns); UpdateRows(DataGrid.Musicas); UpdateRows(DataGrid.Artistas); } } }
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(); }
private void InserirDadosIniciais() { #region Artistas General.Artistas[0] = new General.Artista() { Codigo = 1, NomeVerdadeiro = "Saul Hudson", NomeArtistico = "Slash", Aniversario = Convert.ToDateTime("23/07/1965"), BandaBool = true, NomeBanda = "Guns N'Roses", Email = "*****@*****.**", Telefone = "+5511987654321", NomeEmpresario = "Empresário do Slash", EmailEmpresario = "*****@*****.**", EmailEmpresarioTabelaHash = HashTable.QuadraticHashInsert("*****@*****.**"), TipoDeTrabalho = General.Artista.TipoTrabalho.Compositor, NumeroAlbunsLancados = 1, NumeroComposicoes = 1, CacheMinimo = 100000 }; General.ArtistasSize++; General.Artistas[1] = new General.Artista() { Codigo = 2, NomeVerdadeiro = "Pedro Henrique Loureiro", NomeArtistico = "Kiko Loureiro", Aniversario = Convert.ToDateTime("16/06/1972"), BandaBool = true, NomeBanda = "Megadeth", Email = "*****@*****.**", Telefone = "+5511987654321", NomeEmpresario = "Empresário do pedro", EmailEmpresario = "*****@*****.**", EmailEmpresarioTabelaHash = HashTable.QuadraticHashInsert("*****@*****.**"), TipoDeTrabalho = General.Artista.TipoTrabalho.Compositor, NumeroAlbunsLancados = 2, NumeroComposicoes = 2, CacheMinimo = 100000 }; General.ArtistasSize++; General.Artistas[2] = new General.Artista() { Codigo = 3, NomeVerdadeiro = "Adrian Frederick Smith", NomeArtistico = "Adrian Smith", Aniversario = Convert.ToDateTime("27/02/1957"), BandaBool = true, NomeBanda = "Iron Maiden", Email = "*****@*****.**", Telefone = "+5511987654321", NomeEmpresario = "Empresário do adriano", EmailEmpresario = "*****@*****.**", EmailEmpresarioTabelaHash = HashTable.QuadraticHashInsert("*****@*****.**"), TipoDeTrabalho = General.Artista.TipoTrabalho.Compositor, NumeroAlbunsLancados = 3, NumeroComposicoes = 3, CacheMinimo = 100000 }; General.ArtistasSize++; General.Artistas[3] = new General.Artista() { Codigo = 4, NomeVerdadeiro = "Edward Louis Severson III", NomeArtistico = "Eddie Vedder", Aniversario = Convert.ToDateTime("23/12/1964"), BandaBool = true, NomeBanda = "Pearl Jam", Email = "*****@*****.**", Telefone = "+5511987654321", NomeEmpresario = "Empresário do edvaldo", EmailEmpresario = "*****@*****.**", EmailEmpresarioTabelaHash = HashTable.QuadraticHashInsert("*****@*****.**"), TipoDeTrabalho = General.Artista.TipoTrabalho.Compositor, NumeroAlbunsLancados = 4, NumeroComposicoes = 4, CacheMinimo = 100000 }; General.ArtistasSize++; UpdateRows(DataGrid.Artistas); #endregion #region Musicas #region CancoesSlash General.Cancoes[0] = new General.Cancao() { Codigo = 1, Titulo = "World on Fire", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 1, CodigoArtistaPrimeiraGravacao = 1 }; General.CancoesSize++; General.Cancoes[1] = new General.Cancao() { Codigo = 2, Titulo = "Shadow Life", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 1, CodigoArtistaPrimeiraGravacao = 1 }; General.CancoesSize++; General.Cancoes[2] = new General.Cancao() { Codigo = 3, Titulo = "Automatic Overdrive", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 1, CodigoArtistaPrimeiraGravacao = 1 }; General.CancoesSize++; General.Cancoes[3] = new General.Cancao() { Codigo = 4, Titulo = "Wicked Stone", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 1, CodigoArtistaPrimeiraGravacao = 1 }; General.CancoesSize++; General.Cancoes[4] = new General.Cancao() { Codigo = 5, Titulo = "30 Years to Life", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 1, CodigoArtistaPrimeiraGravacao = 1 }; General.CancoesSize++; #endregion #region CancoesKiko General.Cancoes[5] = new General.Cancao() { Codigo = 6, Titulo = "OVERFLOW", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 2, CodigoArtistaPrimeiraGravacao = 2 }; General.CancoesSize++; General.Cancoes[6] = new General.Cancao() { Codigo = 7, Titulo = "EDM (E-DEPENDENT MIND)", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 2, CodigoArtistaPrimeiraGravacao = 2 }; General.CancoesSize++; General.Cancoes[7] = new General.Cancao() { Codigo = 8, Titulo = "IMMINENT THREAT", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 2, CodigoArtistaPrimeiraGravacao = 2 }; General.CancoesSize++; General.Cancoes[8] = new General.Cancao() { Codigo = 9, Titulo = "LIQUID TIMES", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 2, CodigoArtistaPrimeiraGravacao = 2 }; General.CancoesSize++; General.Cancoes[9] = new General.Cancao() { Codigo = 10, Titulo = "SERTAO", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 2, CodigoArtistaPrimeiraGravacao = 2 }; General.CancoesSize++; #endregion #region CancoesAdrian General.Cancoes[10] = new General.Cancao() { Codigo = 11, Titulo = "Somewhere in Time", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 3, CodigoArtistaPrimeiraGravacao = 3 }; General.CancoesSize++; General.Cancoes[11] = new General.Cancao() { Codigo = 12, Titulo = "The Old Woman", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 3, CodigoArtistaPrimeiraGravacao = 3 }; General.CancoesSize++; General.Cancoes[12] = new General.Cancao() { Codigo = 13, Titulo = "The Journey Back in Time", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 3, CodigoArtistaPrimeiraGravacao = 3 }; General.CancoesSize++; General.Cancoes[13] = new General.Cancao() { Codigo = 14, Titulo = "A Day Together", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 3, CodigoArtistaPrimeiraGravacao = 3 }; General.CancoesSize++; General.Cancoes[14] = new General.Cancao() { Codigo = 15, Titulo = "Rhapsody on a Theme of Paganini", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 3, CodigoArtistaPrimeiraGravacao = 3 }; General.CancoesSize++; #endregion #region CancoesEddie General.Cancoes[15] = new General.Cancao() { Codigo = 16, Titulo = "Setting Forth", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 4, CodigoArtistaPrimeiraGravacao = 4 }; General.CancoesSize++; General.Cancoes[16] = new General.Cancao() { Codigo = 17, Titulo = "No Ceiling", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 4, CodigoArtistaPrimeiraGravacao = 4 }; General.CancoesSize++; General.Cancoes[17] = new General.Cancao() { Codigo = 18, Titulo = "Far Behind", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 4, CodigoArtistaPrimeiraGravacao = 4 }; General.CancoesSize++; General.Cancoes[18] = new General.Cancao() { Codigo = 19, Titulo = "Rise", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 4, CodigoArtistaPrimeiraGravacao = 4 }; General.CancoesSize++; General.Cancoes[19] = new General.Cancao() { Codigo = 20, Titulo = "Long Nights", Letra = "Letra", Melodia = "Melodia", CodigoCompositor = 4, CodigoArtistaPrimeiraGravacao = 4 }; General.CancoesSize++; #endregion UpdateRows(DataGrid.Musicas); #endregion #region Albums General.Albums[0] = new General.Album() { Codigo = 1, Titulo = "World on Fire", CodigosMusicas = new int[5] { 1, 2, 3, 4, 5 }, DataLancamento = Convert.ToDateTime("15/07/2014"), NumeroCopiasVendidas = 10000, ArtistasParticipantes = new int[1] { 1 } }; General.AlbumsSize++; General.Albums[1] = new General.Album() { Codigo = 2, Titulo = "OPEN SOURCE", CodigosMusicas = new int[5] { 6, 7, 8, 9, 10 }, DataLancamento = Convert.ToDateTime("10/07/2020"), NumeroCopiasVendidas = 10000, ArtistasParticipantes = new int[1] { 2 } }; General.AlbumsSize++; General.Albums[2] = new General.Album() { Codigo = 3, Titulo = "Somewhere in Time", CodigosMusicas = new int[5] { 11, 12, 13, 14, 15 }, DataLancamento = Convert.ToDateTime("29/09/1986"), NumeroCopiasVendidas = 10000, ArtistasParticipantes = new int[1] { 3 } }; General.AlbumsSize++; General.Albums[3] = new General.Album() { Codigo = 4, Titulo = "Into the Wild", CodigosMusicas = new int[5] { 16, 17, 18, 19, 20 }, DataLancamento = Convert.ToDateTime("18/09/2007"), NumeroCopiasVendidas = 10000, ArtistasParticipantes = new int[1] { 4 } }; General.AlbumsSize++; UpdateRows(DataGrid.Albuns); #endregion }