/// <summary>
 /// Busca Fornecedores atravez do filtro escolhido pelo usuario
 /// </summary>
 /// <param name="nomeFornecedores">o filtro passado pelo usuário pode ser Vazio</param>
 /// <returns>DataTable com o resultado da query</returns>
 private DataTable BuscaFornecedores(string nomeFornecedor)
 {
     rFornecedor regraFornecedor = new rFornecedor();
     try
     {
         return regraFornecedor.BuscaFornecedor(nomeFornecedor);
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         regraFornecedor = null;
     }
 }
 private void PopulaModelCompletoAlteracao()
 {
     rFornecedor regraFornecedor = new rFornecedor();
     DataTable dtRegistroFornecedor = null;
     try
     {
         dtRegistroFornecedor = regraFornecedor.BuscaUmRegistro(this._model);
         this._model.Deserialize(dtRegistroFornecedor);
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         regraFornecedor = null;
         if (dtRegistroFornecedor != null)
         {
             dtRegistroFornecedor.Dispose();
             dtRegistroFornecedor = null;
         }
     }
 }
 private void PopulaGrid()
 {
     rFornecedor regra = new rFornecedor();
     DataTable dt = null;
     try
     {
         if (this._filtroBusca == false)
         {
             dt = regra.BuscaFornecedor(this.txtFiltro.Text);
         }
         else
         {
             //Verifica se o model é de motor ou de peça para filtrar quais distribuidores atendem esta "peça/motor"
             //-----------------------------------------------------------------------------------------------------
             if (this._modelMotor != null)
             {
                 dt = regra.BuscaFornecedorMotor(Convert.ToInt32(this._modelMotor.IdMotor));
                 if (dt.Rows.Count <= 0)
                 {
                     DialogResult resultado = MessageBox.Show("Não existe fornecedores associados a esse motor, deseja associa-los agora?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                     if (resultado == DialogResult.Yes)
                     {
                         this.AbreTelaAssociacaoMotorFornecedor();
                         dt = regra.BuscaFornecedorMotor(Convert.ToInt32(this._modelMotor.IdMotor));
                     }
                     else
                     {
                         this.DialogResult = DialogResult.Cancel;
                         this.Close();
                     }
                 }
             }
             else
             {
                 dt = regra.BuscaFornecedorPeca(Convert.ToInt32(this._modelPeca.IdPeca));
                 if (dt.Rows.Count <= 0)
                 {
                     DialogResult resultado = MessageBox.Show("Não existe fornecedores associados a essa peça, deseja associa-los agora?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                     if (resultado == DialogResult.Yes)
                     {
                         this.AbreTelaAssociacaoPecaFornecedor();
                         dt = regra.BuscaFornecedorPeca(Convert.ToInt32(this._modelPeca.IdPeca));
                     }
                     else
                     {
                         this.DialogResult = DialogResult.Cancel;
                         this.Close();
                     }
                 }
             }
         }
         this.dgFornecedor.DataSource = dt;
         dgFornecedor.Columns[0].Visible = false;
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         regra = null;
         if (dt != null)
         {
             dt.Dispose();
             dt = null;
         }
     }
 }
 private void DeletaCadastro()
 {
     rFornecedor regraFornecedor = new rFornecedor();
     try
     {
         regraFornecedor.ValidarDeleta(this._model);
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         regraFornecedor = null;
     }
 }
        /// <summary>
        /// Pega os dados da tela e popula o model
        /// </summary>
        /// <returns>Model populado</returns>
        private mFornecedor PegaDadosTela()
        {
            mFornecedor model = new mFornecedor();
            rFornecedor regra = new rFornecedor();

            try
            {
                if (base.Alteracao == true)
                {
                    model.IdFornecedor = this._modelFornecedor.IdFornecedor;
                }
                else
                {
                    model.IdFornecedor = regra.BuscaIdMaximo();
                }
                model.NomeFornecedor = this.txtNomeFornecedor.Text;
                model.RuaFornecedor = this.txtRua.Text;
                if (string.IsNullOrEmpty(this.txtNumeroEndereco.Text) == true)
                {
                    model.NroFornecedor = null;
                }
                else
                {
                    model.NroFornecedor = Convert.ToInt32(this.txtNumeroEndereco.Text);
                }
                model.Complemento = this.txtComplemento.Text;

                if (this.txtCep.Visible == true)
                {
                    string cep = this.txtCep.Text.Replace("-", string.Empty);
                    cep = cep.Replace(" ", string.Empty);

                    if (string.IsNullOrEmpty(cep) == true)
                    {
                        model.CodPostal = null;
                    }
                    else
                    {
                        model.CodPostal = cep;
                    }
                }
                else
                {
                    string codPost = this.txtCodPostal.Text;
                    if (string.IsNullOrEmpty(codPost) == true)
                    {
                        model.CodPostal = null;
                    }
                    else
                    {
                        model.CodPostal = codPost;
                    }
                }

                if (string.IsNullOrEmpty(this.txtDDI.Text) == true)
                {
                    model.Ddi = null;
                }
                else
                {
                    model.Ddi = this.txtDDI.Text;
                }
                if (string.IsNullOrEmpty(this.txtDDD.Text) == true)
                {
                    model.Ddd = null;
                }
                else
                {
                    model.Ddd = Convert.ToInt32(this.txtDDD.Text);
                }
                if (this.txtTelefone.Visible == true)
                {
                    string tel = this.txtTelefone.Text.Replace("-", string.Empty).Replace(" ", string.Empty);
                    if (string.IsNullOrEmpty(tel) == true)
                    {
                        model.Telefone = null;
                    }
                    else
                    {
                        model.Telefone = Convert.ToInt32(tel);
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(this.txtTelefoneInter.Text) == true)
                    {
                        model.Telefone = null;
                    }
                    else
                    {
                        model.Telefone = Convert.ToInt32(this.txtTelefoneInter.Text);
                    }
                }

                model.Bairro = this.txtBairro.Text;
                model.Cidade = this.txtCidade.Text;
                if (string.IsNullOrEmpty(this.txtEmail.Text) == true)
                {
                    model.Email = null;
                }
                else
                {
                    model.Email = this.txtEmail.Text;
                }

                string cnpj = this.txtCnpj.Text.Replace(".", string.Empty);
                cnpj = cnpj.Replace("/", string.Empty);
                cnpj = cnpj.Replace("-", string.Empty);
                cnpj = cnpj.Replace(" ", string.Empty);
                if (string.IsNullOrEmpty(cnpj) == true)
                {
                    model.Cnpj = null;
                }
                else
                {
                    model.Cnpj = cnpj;
                }
                model.DatAtl = DateTime.Now;
                model.FlgAtivo = true;

                if (this.cboEstado.Enabled == true)
                {
                    model.SlgEstado = this.cboEstado.GetItemText(this.cboEstado.SelectedItem);
                }
                else
                {
                    model.SlgEstado = null;
                }

                if (this.rdbBrasil.Checked == true)
                {
                    model.Nom_pais = "Brasil";
                    model.Nom_est_inter = null;
                    model.IdentInter = null;
                }
                else
                {
                    model.Nom_pais = this.txtPais.Text;
                    model.Nom_est_inter = this.txtEstado.Text;
                    model.IdentInter = this.txtIdentInter.Text;
                }

                return model;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                model = null;
            }
        }
 /// <summary>
 /// Pega os dados do model e insere no banco
 /// </summary>
 private void Insere()
 {
     rFornecedor regra = new rFornecedor();
     rFornecedorDepto regraFornecedorDepto = new rFornecedorDepto();
     mFornecedor model;
     try
     {
         this.ValidaDadosNulos();
         model = this.PegaDadosTela();
         regra.ValidaDados(model, base.Alteracao);
         if (base.Alteracao == false)
         {
             regra.ValidarInsere(model);
             if (this._listaModelFornecedorDepto != null)
             {
                 if (this._listaModelFornecedorDepto.Count > 0)
                 {
                     this.PopulaListaFornecedorDeptoIdForn(Convert.ToInt32(model.IdFornecedor));
                     foreach (mFornecedorDepto modelFornecedorDepto in this._listaModelFornecedorDepto)
                     {
                         regraFornecedorDepto.ValidarInsere(modelFornecedorDepto);
                     }
                 }
             }
         }
         else
         {
             model = this.PegaDadosTela();
             regra.ValidarAltera(model);
         }
         this.btnlimpar_Click(null, null);
         this.btnInsere.Enabled = false;
         MessageBox.Show("Registro Salvo com Sucesso!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
     }
     catch (TCC.Regra.Exceptions.Fornecedor.NomeFornecedorVazioException)
     {
         MessageBox.Show("É Necessário Preencher o campo Nome Fornecedor", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtNomeFornecedor.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.paisVazioException)
     {
         MessageBox.Show("É Necessário Prencher o campo País", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtPais.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.EstadoVazioException)
     {
         MessageBox.Show("É Necessário Prencher o campo Província(Estado)", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtEstado.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.CidadeVazioException)
     {
         MessageBox.Show("É Necessário Preencher o campo Cidade", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtCidade.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.CEPVazioException)
     {
         MessageBox.Show("É Necessário Preencher o campo CEP", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtCep.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.CodigoPostalVazioException)
     {
         MessageBox.Show("É Necessário Preencher o campo Código Postal", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtCodPostal.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.CnpjVazioException)
     {
         MessageBox.Show("É Necessário Preencher o campo CNPJ", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtCnpj.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.IdentidadeInterVazioException)
     {
         MessageBox.Show("É Necessário Preencher o código de Identificação Internacional", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtIdentInter.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.DadosComunicacaoVazioExeception)
     {
         MessageBox.Show("É Necessário Preencher os campos 'DDI, DDD e Telefone' ou 'E-mail'", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
     }
     catch (TCC.Regra.Exceptions.Fornecedor.DDIVazioException)
     {
         MessageBox.Show("É Necessário Preencher o campo DDI", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtDDI.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.DddVazioException)
     {
         MessageBox.Show("É Necessário Preencher o campo DDD", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtDDD.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.TelefoneVazioException)
     {
         MessageBox.Show("É Necessário Preencher o campo Telefone", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         if (this.txtTelefone.Visible == true)
         {
             this.txtTelefone.Focus();
         }
         else
         {
             this.txtTelefoneInter.Focus();
         }
     }
     catch (TCC.Regra.Exceptions.Fornecedor.FornecedorSemIdExecption)
     {
         MessageBox.Show("É Necessário o campo Codigo Fornecedor", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
     }
     catch (TCC.Regra.Exceptions.Fornecedor.CNPJFornecedorExistente)
     {
         MessageBox.Show("Código de CNPJ já existente. Favor Informar ou código.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtCnpj.Focus();
     }
     catch (TCC.Regra.Exceptions.Fornecedor.IdentInterExistenteException)
     {
         MessageBox.Show("Código de Identificação Internacional já existente. Favor Informar ou código.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtIdentInter.Focus();
     }
     catch (TCC.Regra.Exceptions.Validacoes.EmailInvalidoException)
     {
         MessageBox.Show("Campo E-mail incorreto!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtIdentInter.Focus();
     }
     catch (TCC.Regra.Exceptions.Validacoes.MaskedInvalidaException ex)
     {
         MessageBox.Show(ex.Mensagem, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
     }
     finally
     {
         regra = null;
         model = null;
         regraFornecedorDepto = null;
     }
 }