/// <summary>
 /// Grava/Persiste as alterações em um objeto GrupoClienteFields no banco de dados
 /// </summary>
 /// <param name="ConnIn">Objeto SqlConnection responsável pela conexão com o banco de dados.</param>
 /// <param name="TranIn">Objeto SqlTransaction responsável pela transação iniciada no banco de dados.</param>
 /// <param name="FieldInfo">Objeto GrupoClienteFields a ser alterado.</param>
 /// <returns>"true" = registro alterado com sucesso, "false" = erro ao tentar alterar registro (consulte a propriedade ErrorMessage para detalhes)</returns>
 public bool Update(SqlConnection ConnIn, SqlTransaction TranIn, GrupoClienteFields FieldInfo)
 {
     try
     {
         this.Cmd             = new SqlCommand("Proc_GrupoCliente_Update", ConnIn, TranIn);
         this.Cmd.CommandType = CommandType.StoredProcedure;
         this.Cmd.Parameters.Clear();
         this.Cmd.Parameters.AddRange(GetAllParameters(FieldInfo, SQLMode.Update));
         if (!(this.Cmd.ExecuteNonQuery() > 0))
         {
             throw new Exception("Erro ao tentar atualizar registro!!");
         }
         return(true);
     }
     catch (SqlException e)
     {
         //this._ErrorMessage = string.Format(@"Houve um erro imprevisto ao tentar atualizar o(s) registro(s) solicitados: Código do erro: {0}, Mensagem: {1}, Procedimento: {2}, Linha do erro {3}.", e.ErrorCode, e.Message, e.Procedure, e.LineNumber);
         this._ErrorMessage = string.Format(@"Houve um erro imprevisto ao tentar atualizar o(s) registro(s) solicitados: {0}.", e.Message);
         return(false);
     }
     catch (Exception e)
     {
         this._ErrorMessage = e.Message;
         return(false);
     }
 }
        /// <summary>
        /// Retorna um objeto GrupoClienteFields através da chave primária passada como parâmetro
        /// </summary>
        /// <param name="Param_idGrupoCliente">int</param>
        /// <returns>Objeto GrupoClienteFields</returns>
        public GrupoClienteFields GetItem(
            int Param_idGrupoCliente)
        {
            GrupoClienteFields infoFields = new GrupoClienteFields();

            try
            {
                using (this.Conn = new SqlConnection(this.StrConnetionDB))
                {
                    using (this.Cmd = new SqlCommand("Proc_GrupoCliente_Select", this.Conn))
                    {
                        this.Cmd.CommandType = CommandType.StoredProcedure;
                        this.Cmd.Parameters.Clear();
                        this.Cmd.Parameters.Add(new SqlParameter("@Param_idGrupoCliente", SqlDbType.Int)).Value = Param_idGrupoCliente;
                        this.Cmd.Connection.Open();
                        using (SqlDataReader dr = this.Cmd.ExecuteReader(CommandBehavior.SequentialAccess))
                        {
                            if (!dr.HasRows)
                            {
                                return(null);
                            }
                            if (dr.Read())
                            {
                                infoFields = GetDataFromReader(dr);
                            }
                        }
                    }
                }

                return(infoFields);
            }
            catch (SqlException e)
            {
                //this._ErrorMessage = string.Format(@"Houve um erro imprevisto ao tentar selecionar o(s) registro(s) solicitados: Código do erro: {0}, Mensagem: {1}, Procedimento: {2}, Linha do erro {3}.", e.ErrorCode, e.Message, e.Procedure, e.LineNumber);
                this._ErrorMessage = string.Format(@"Houve um erro imprevisto ao tentar selecionar o(s) registro(s) solicitados: {0}.", e.Message);
                return(null);
            }
            catch (Exception e)
            {
                this._ErrorMessage = e.Message;
                return(null);
            }
            finally
            {
                if (this.Conn != null)
                {
                    if (this.Conn.State == ConnectionState.Open)
                    {
                        this.Conn.Dispose();
                    }
                }
            }
        }
 /// <summary>
 /// Grava/Persiste um novo objeto GrupoClienteFields no banco de dados
 /// </summary>
 /// <param name="FieldInfo">Objeto GrupoClienteFields a ser gravado.Caso o parâmetro solicite a expressão "ref", será adicionado um novo valor a algum campo auto incremento.</param>
 /// <returns>"true" = registro gravado com sucesso, "false" = erro ao gravar registro (consulte a propriedade ErrorMessage para detalhes)</returns>
 public bool Add(ref GrupoClienteFields FieldInfo)
 {
     try
     {
         this.Conn = new SqlConnection(this.StrConnetionDB);
         this.Conn.Open();
         this.Tran            = this.Conn.BeginTransaction();
         this.Cmd             = new SqlCommand("Proc_GrupoCliente_Add", this.Conn, this.Tran);
         this.Cmd.CommandType = CommandType.StoredProcedure;
         this.Cmd.Parameters.Clear();
         this.Cmd.Parameters.AddRange(GetAllParameters(FieldInfo, SQLMode.Add));
         if (!(this.Cmd.ExecuteNonQuery() > 0))
         {
             throw new Exception("Erro ao tentar inserir registro!!");
         }
         this.Tran.Commit();
         FieldInfo.idGrupoCliente = (int)this.Cmd.Parameters["@Param_idGrupoCliente"].Value;
         return(true);
     }
     catch (SqlException e)
     {
         this.Tran.Rollback();
         //this._ErrorMessage = string.Format(@"Houve um erro imprevisto ao tentar inserir o(s) registro(s) solicitados: Código do erro: {0}, Mensagem: {1}, Procedimento: {2}, Linha do erro {3}.", e.ErrorCode, e.Message, e.Procedure, e.LineNumber);
         this._ErrorMessage = string.Format(@"Houve um erro imprevisto ao tentar inserir o(s) registro(s) solicitados: {0}.", e.Message);
         return(false);
     }
     catch (Exception e)
     {
         this.Tran.Rollback();
         this._ErrorMessage = e.Message;
         return(false);
     }
     finally
     {
         if (this.Conn != null)
         {
             if (this.Conn.State == ConnectionState.Open)
             {
                 this.Conn.Dispose();
             }
         }
         if (this.Cmd != null)
         {
             this.Cmd.Dispose();
         }
     }
 }
        /// <summary>
        /// Retorna um objeto GrupoClienteFields preenchido com os valores dos campos do SqlDataReader
        /// </summary>
        /// <param name="dr">SqlDataReader - Preenche o objeto GrupoClienteFields </param>
        /// <returns>GrupoClienteFields</returns>
        private GrupoClienteFields GetDataFromReader(SqlDataReader dr)
        {
            GrupoClienteFields infoFields = new GrupoClienteFields();

            if (!dr.IsDBNull(0))
            {
                infoFields.idGrupoCliente = dr.GetInt32(0);
            }
            else
            {
                infoFields.idGrupoCliente = 0;
            }



            if (!dr.IsDBNull(1))
            {
                infoFields.descricaoGrupoCliente = dr.GetString(1);
            }
            else
            {
                infoFields.descricaoGrupoCliente = string.Empty;
            }



            if (!dr.IsDBNull(2))
            {
                infoFields.TipoClienteGrupoCliente = dr.GetString(2);
            }
            else
            {
                infoFields.TipoClienteGrupoCliente = string.Empty;
            }


            return(infoFields);
        }
        /// <summary>
        /// Retorna um array de parâmetros com campos para atualização, seleção e inserção no banco de dados
        /// </summary>
        /// <param name="FieldInfo">Objeto GrupoClienteFields</param>
        /// <param name="Modo">Tipo de oepração a ser executada no banco de dados</param>
        /// <returns>SqlParameter[] - Array de parâmetros</returns>
        private SqlParameter[] GetAllParameters(GrupoClienteFields FieldInfo, SQLMode Modo)
        {
            SqlParameter[] Parameters;

            switch (Modo)
            {
            case SQLMode.Add:
                Parameters = new SqlParameter[3];
                for (int I = 0; I < Parameters.Length; I++)
                {
                    Parameters[I] = new SqlParameter();
                }
                //Field idGrupoCliente
                Parameters[0].SqlDbType     = SqlDbType.Int;
                Parameters[0].Direction     = ParameterDirection.Output;
                Parameters[0].ParameterName = "@Param_idGrupoCliente";
                Parameters[0].Value         = DBNull.Value;

                break;

            case SQLMode.Update:
                Parameters = new SqlParameter[3];
                for (int I = 0; I < Parameters.Length; I++)
                {
                    Parameters[I] = new SqlParameter();
                }
                //Field idGrupoCliente
                Parameters[0].SqlDbType     = SqlDbType.Int;
                Parameters[0].ParameterName = "@Param_idGrupoCliente";
                Parameters[0].Value         = FieldInfo.idGrupoCliente;

                break;

            case SQLMode.SelectORDelete:
                Parameters = new SqlParameter[1];
                for (int I = 0; I < Parameters.Length; I++)
                {
                    Parameters[I] = new SqlParameter();
                }
                //Field idGrupoCliente
                Parameters[0].SqlDbType     = SqlDbType.Int;
                Parameters[0].ParameterName = "@Param_idGrupoCliente";
                Parameters[0].Value         = FieldInfo.idGrupoCliente;

                return(Parameters);

            default:
                Parameters = new SqlParameter[3];
                for (int I = 0; I < Parameters.Length; I++)
                {
                    Parameters[I] = new SqlParameter();
                }
                break;
            }

            //Field descricaoGrupoCliente
            Parameters[1].SqlDbType     = SqlDbType.VarChar;
            Parameters[1].ParameterName = "@Param_descricaoGrupoCliente";
            if ((FieldInfo.descricaoGrupoCliente == null) || (FieldInfo.descricaoGrupoCliente == string.Empty))
            {
                Parameters[1].Value = DBNull.Value;
            }
            else
            {
                Parameters[1].Value = FieldInfo.descricaoGrupoCliente;
            }
            Parameters[1].Size = 50;

            //Field TipoClienteGrupoCliente
            Parameters[2].SqlDbType     = SqlDbType.VarChar;
            Parameters[2].ParameterName = "@Param_TipoClienteGrupoCliente";
            if ((FieldInfo.TipoClienteGrupoCliente == null) || (FieldInfo.TipoClienteGrupoCliente == string.Empty))
            {
                Parameters[2].Value = DBNull.Value;
            }
            else
            {
                Parameters[2].Value = FieldInfo.TipoClienteGrupoCliente;
            }
            Parameters[2].Size = 2;

            return(Parameters);
        }
 /// <summary>
 /// Exclui um registro da tabela no banco de dados
 /// </summary>
 /// <param name="ConnIn">Objeto SqlConnection responsável pela conexão com o banco de dados.</param>
 /// <param name="TranIn">Objeto SqlTransaction responsável pela transação iniciada no banco de dados.</param>
 /// <param name="FieldInfo">Objeto GrupoClienteFields a ser excluído.</param>
 /// <returns>"true" = registro excluido com sucesso, "false" = erro ao tentar excluir registro (consulte a propriedade ErrorMessage para detalhes)</returns>
 public bool Delete(SqlConnection ConnIn, SqlTransaction TranIn, GrupoClienteFields FieldInfo)
 {
     return(Delete(ConnIn, TranIn, FieldInfo.idGrupoCliente));
 }
 /// <summary>
 /// Exclui um registro da tabela no banco de dados
 /// </summary>
 /// <param name="FieldInfo">Objeto GrupoClienteFields a ser excluído.</param>
 /// <returns>"true" = registro excluido com sucesso, "false" = erro ao tentar excluir registro (consulte a propriedade ErrorMessage para detalhes)</returns>
 public bool Delete(GrupoClienteFields FieldInfo)
 {
     return(Delete(FieldInfo.idGrupoCliente));
 }