예제 #1
0
        public override void Alterar(EntidadeDominio entidade)
        {
            if (connection.State == ConnectionState.Closed)
            {
                connection.Open();
            }
            Cliente cliente = (Cliente)entidade;

            pst.CommandText = "UPDATE cliente_pf SET nome_cli_pf = ?1, telefone_cli_fk = ?2, email_cli_pf = ?3, cpf_cli_pf = ?4, genero_cli_pf = ?5, dt_nascimento_cli_pf = ?6 WHERE id_cli_pf = ?7 ";
            parameters      = new MySqlParameter[]
            {
                new MySqlParameter("1", cliente.Nome),
                new MySqlParameter("2", cliente.Telefone.ID),
                new MySqlParameter("3", cliente.Email),
                new MySqlParameter("4", cliente.CPF),
                new MySqlParameter("5", cliente.Genero),
                new MySqlParameter("6", cliente.DataNascimento),
                new MySqlParameter("7", cliente.ID)
            };

            pst.Parameters.Clear();
            pst.Parameters.AddRange(parameters);
            pst.Connection  = connection;
            pst.CommandType = CommandType.Text;
            pst.ExecuteNonQuery();

            // construtor já passando conexão de cliente para telefone
            TelefoneDAO telefoneDAO = new TelefoneDAO(connection, false);

            telefoneDAO.Alterar(cliente.Telefone);

            pst.CommandText = "COMMIT WORK";
            connection.Close();
            return;
        }
예제 #2
0
        public override void Salvar(EntidadeDominio entidade)
        {
            if (connection.State == ConnectionState.Closed)
            {
                connection.Open();
            }
            Cliente     cliente     = (Cliente)entidade;
            TelefoneDAO telefoneDAO = new TelefoneDAO(connection, false);

            telefoneDAO.Salvar(cliente.Telefone);

            pst.CommandText = "INSERT INTO cliente_pf (nome_cli_pf, telefone_cli_fk, email_cli_pf, cpf_cli_pf, genero_cli_pf, dt_nascimento_cli_pf, dt_cadastro_cli_pf) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7); SELECT LAST_INSERT_ID(); ";
            parameters      = new MySqlParameter[]
            {
                new MySqlParameter("?1", cliente.Nome),
                new MySqlParameter("?2", cliente.Telefone.ID),
                new MySqlParameter("?3", cliente.Email),
                new MySqlParameter("?4", cliente.CPF),
                new MySqlParameter("?5", cliente.Genero),
                new MySqlParameter("?6", cliente.DataNascimento),
                new MySqlParameter("?7", cliente.DataCadastro)
            };

            pst.Parameters.Clear();
            pst.Parameters.AddRange(parameters);
            pst.Connection  = connection;
            pst.CommandType = CommandType.Text;

            pst.ExecuteNonQuery();
            cliente.ID = (int)pst.LastInsertedId;

            // construtor já passando conexão de ClientePFDAO para EnderecoDAO
            EnderecoDAO enderecoDAO = new EnderecoDAO(connection, false);

            foreach (Endereco endereco in cliente.Enderecos)
            {
                enderecoDAO.Salvar(endereco);
            }

            // construtor para salvar o relacionamento n x n de cliente e endereço
            ClienteEnderecoDAO clienteXEnderecoDAO = new ClienteEnderecoDAO(connection, false);
            ClienteEndereco    clienteEndereco     = new ClienteEndereco();

            clienteEndereco.ID       = cliente.ID;
            clienteEndereco.Endereco = cliente.Enderecos.First();
            clienteXEnderecoDAO.Salvar(clienteEndereco);

            pst.CommandText = "COMMIT WORK";
            connection.Close();
            return;
        }
예제 #3
0
        public override void Alterar(EntidadeDominio entidade)
        {
            if (connection.State == ConnectionState.Closed)
            {
                connection.Open();
            }
            ClientePF cliente = (ClientePF)entidade;

            pst.CommandText = "UPDATE tb_cliente_pf SET nome_cli_pf = :1, telefone_cli_fk = :2, email_cli_pf = :3, cpf_cli_pf = :4, genero_cli_pf = :5, dt_nascimento_cli_pf = :6 WHERE id_cli_pf = :7 ";
            parameters      = new NpgsqlParameter[]
            {
                new NpgsqlParameter("1", cliente.Nome),
                new NpgsqlParameter("2", cliente.Telefone.ID),
                new NpgsqlParameter("3", cliente.Email),
                new NpgsqlParameter("4", cliente.CPF),
                new NpgsqlParameter("5", cliente.Genero),
                new NpgsqlParameter("6", cliente.DataNascimento),
                new NpgsqlParameter("7", cliente.ID)
            };

            pst.Parameters.Clear();
            pst.Parameters.AddRange(parameters);
            pst.Connection  = connection;
            pst.CommandType = CommandType.Text;
            pst.ExecuteNonQuery();

            // construtor já passando conexão de cliente para endereço
            EnderecoDAO enderecoDAO = new EnderecoDAO(connection, false);

            //// primeiro faço exclusão dos registros existentes e depois faço nova inclusão
            //// para não ter erro na quantidade de endereços
            //enderecoDAO.Excluir(cliente);
            //foreach (Endereco endereco in cliente.Enderecos)
            //{
            //    enderecoDAO.Salvar(endereco);
            //}

            // alterado a forma que faz a alteração, quando o cliente for fazer alteração nos dados cadastrais,
            // apenas UM endereço pode ser alterado, logo não preciso mais do foreach e será feito alteração individual
            // tratamento de n-n de endereço e cliente será feito em outra DAO
            enderecoDAO.Alterar(cliente.Enderecos.First());

            // construtor já passando conexão de cliente para cc
            // Cartão de cliente será efetuado com outra abordagem, apenas para compra será obrigatório informar um cc
            // para apenas o cadastro não será obrigatório
            //CartaoCreditoDAO ccDAO = new CartaoCreditoDAO(connection, false);
            //// primeiro faço exclusão dos registros existentes e depois faço nova inclusão
            //// para não ter erro na quantidade de endereços
            //ccDAO.Excluir(cliente);
            //foreach (CartaoCredito cc in cliente.CartoesCredito)
            //{
            //    ccDAO.Salvar(cc);
            //}

            // construtor já passando conexão de cliente para telefone
            TelefoneDAO telefoneDAO = new TelefoneDAO(connection, false);

            telefoneDAO.Alterar(cliente.Telefone);

            pst.CommandText = "COMMIT WORK";
            connection.Close();
            return;
        }
예제 #4
0
        public override void Salvar(EntidadeDominio entidade)
        {
            if (connection.State == ConnectionState.Closed)
            {
                connection.Open();
            }
            ClientePF cliente = (ClientePF)entidade;

            // construtor já passando conexão de ClientePFDAO para EnderecoDAO
            EnderecoDAO enderecoDAO = new EnderecoDAO(connection, false);

            foreach (Endereco endereco in cliente.Enderecos)
            {
                enderecoDAO.Salvar(endereco);
            }

            // construtor já passando conexão de ClientePFDAO para CartaoCreditoDAO
            // Cartão de cliente será efetuado com outra abordagem, apenas para compra será obrigatório informar um cc
            // para apenas o cadastro não será obrigatório
            //CartaoCreditoDAO ccDAO = new CartaoCreditoDAO(connection, false);
            //foreach (CartaoCredito cc in cliente.CartoesCredito)
            //{
            //    ccDAO.Salvar(cc);
            //}

            // construtor já passando conexão de cliente para telefone
            TelefoneDAO telefoneDAO = new TelefoneDAO(connection, false);

            telefoneDAO.Salvar(cliente.Telefone);

            pst.CommandText = "INSERT INTO tb_cliente_pf (nome_cli_pf, telefone_cli_fk, email_cli_pf, cpf_cli_pf, genero_cli_pf, dt_nascimento_cli_pf, dt_cadastro_cli_pf) VALUES (:1, :2, :3, :4, :5, :6, :7) RETURNING id_cli_pf ";
            parameters      = new NpgsqlParameter[]
            {
                new NpgsqlParameter("1", cliente.Nome),
                new NpgsqlParameter("2", cliente.Telefone.ID),
                new NpgsqlParameter("3", cliente.Email),
                new NpgsqlParameter("4", cliente.CPF),
                new NpgsqlParameter("5", cliente.Genero),
                new NpgsqlParameter("6", cliente.DataNascimento),
                new NpgsqlParameter("7", cliente.DataCadastro)
            };

            pst.Parameters.Clear();
            pst.Parameters.AddRange(parameters);
            pst.Connection  = connection;
            pst.CommandType = CommandType.Text;
            cliente.ID      = entidade.ID = (int)pst.ExecuteScalar();
            // já executa o comando na linha anterior
            //pst.ExecuteNonQuery();

            // construtor para salvar o relacionamento n x n de cliente e endereço
            ClientePFXEnderecoDAO clienteXEnderecoDAO = new ClientePFXEnderecoDAO(connection, false);
            ClientePFXEndereco    clientePFXEndereco  = new ClientePFXEndereco();

            clientePFXEndereco.ID       = cliente.ID;
            clientePFXEndereco.Endereco = cliente.Enderecos.First();
            clienteXEnderecoDAO.Salvar(clientePFXEndereco);

            // construtor para salvar o relacionamento n x n de cliente e cartão
            // Cartão de cliente será efetuado com outra abordagem, apenas para compra será obrigatório informar um cc
            // para apenas o cadastro não será obrigatório
            //ClientePFXCartaoDAO clienteXccDAO = new ClientePFXCartaoDAO(connection, false);
            //clienteXccDAO.Salvar(cliente);

            pst.CommandText = "COMMIT WORK";
            connection.Close();
            return;
        }