private void btnAlterar_Click(object sender, EventArgs e)
        {
            if (lsvTatuagens.SelectedIndices.Count == 0)
            {
                MessageBox.Show("Selecione uma tatuagem para ser alterada!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            else if (lsvTatuagens.SelectedIndices.Count > 1)
            {
                MessageBox.Show("Selecione somente uma tatuagem para ser alterada!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            int idTatuagem = Tatuagens[lsvTatuagens.SelectedIndices[0]].Id;

            using (var tatuagem = new Tatuagem())
            {
                using (var conn = new Connection())
                {
                    if (!tatuagem.SetById(idTatuagem, conn, null))
                    {
                        MessageBox.Show($"Não foi possível encontrar a tatuagem com o código `{idTatuagem}`!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        CarregarTatuagens();
                        return;
                    }
                }

                using (var frmTatuagem = new FormTatuagem(TipoAcao.Edicao, tatuagem))
                {
                    if (frmTatuagem.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }

                    using (var conn = new Connection())
                    {
                        try
                        {
                            frmTatuagem.SetDadosInModel(tatuagem);
                            tatuagem.Salvar(conn, null);
                            MessageBox.Show("Tatuagem alterada com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            CarregarTatuagens();
                        } catch (Exception erro)
                        {
                            MessageBox.Show("Ocoreu um erro ao salvar as alterações!\n" + erro.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
            }
        }
        private void btnAdicionar_Click(object sender, EventArgs e)
        {
            using (var conn = new Connection())
                using (var termoResponsabilidade = new TermoResponsabilidade())
                {
                    if (!termoResponsabilidade.SetCurrent(conn, null))
                    {
                        MessageBox.Show("Não existe nehum termo de responsabilidade cadastrado!\nCadastre um termo de responsabilidade antes de cadastrar uma tatuagem", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                }

            try
            {
                using (var frmTermoResponsabilidade = new FormTermoResponsabilidade())
                    using (var frmTatuagem = new FormTatuagem(TipoAcao.Cadastro))
                        using (var frmPesquisa = new FormPesquisa(TipoPergunta.Tatuagem, PesquisaControl.TipoFonte.Grande, false))
                        {
                            frmTatuagem.btnSalvar.Text    = "Avançar";
                            frmPesquisa.btnVoltar.Visible = true;

                            PassoCadastro passo = PassoCadastro.TermoResponsabilidade;

                            bool finalizado = false;

                            while (!finalizado)
                            {
                                DialogResult dr;

                                switch (passo)
                                {
                                case PassoCadastro.TermoResponsabilidade:
                                    if (frmTermoResponsabilidade.ShowDialog() == DialogResult.OK)
                                    {
                                        passo = PassoCadastro.Informacoes;
                                    }
                                    else
                                    {
                                        return;
                                    }
                                    break;

                                case PassoCadastro.Informacoes:
                                    dr = frmTatuagem.ShowDialog();
                                    if (dr == DialogResult.OK)
                                    {
                                        passo = PassoCadastro.Pesquisa;
                                    }
                                    else if (dr == DialogResult.Retry)
                                    {
                                        passo = PassoCadastro.TermoResponsabilidade;
                                    }
                                    else
                                    {
                                        return;
                                    }
                                    break;

                                case PassoCadastro.Pesquisa:
                                    dr = frmPesquisa.ShowDialog();
                                    if (dr == DialogResult.OK)
                                    {
                                        finalizado = true;
                                    }
                                    else if (dr == DialogResult.Retry)
                                    {
                                        passo = PassoCadastro.Informacoes;
                                    }
                                    else
                                    {
                                        return;
                                    }
                                    break;
                                }
                            }

                            using (var conn = new Connection())
                                using (SQLiteTransaction transaction = conn.BeginTransaction())
                                    using (var tatuagem = new Tatuagem())
                                    {
                                        try
                                        {
                                            tatuagem.IdCliente = IdCliente;
                                            tatuagem.IdTermoResponsabilidade = frmTermoResponsabilidade.IdTermoResponsabilidade;
                                            frmTatuagem.SetDadosInModel(tatuagem);
                                            tatuagem.Salvar(conn, transaction);

                                            Resposta.SalvarRespostas(TipoPergunta.Tatuagem, tatuagem.Id, frmPesquisa.Respostas, conn, transaction);

                                            transaction.Commit();

                                            MessageBox.Show("Tatuagem inserida com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                            CarregarTatuagens();
                                        }
                                        catch (Exception erro)
                                        {
                                            transaction.Rollback();
                                            MessageBox.Show("Ocorreu um erro ao inserir a tatuagem!\n" + erro.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                        }
                                    }
                        }
            } catch (PerguntasNotFoundException erro)
            {
                MessageBox.Show(erro.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }