using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data.MySqlClient;
using fatd_faturamento.ENTIDADE;
using fatd_faturamento.DAL.Conexao;

namespace fatd_faturamento.DAL.Persistencia
{
    public class dalMedidores
    {

        string vFILTER = null;
        string vINNERJOIN = null;
        string vAND = null;
        string vORDERBY = null;

        #region Métodos

        public void Insert(entidadeMedidores objMedidores)
        {
            MySqlCommand cmd = null;
            IGerenciadorTransacao objGerenciadorTransacao = null;
            ConexaoBD objconexaoBD = null;

            try
            {
                objconexaoBD = new ConexaoBD();

                objconexaoBD.SetarConexaoBanco(TipoBDConexao.fat_BD);

                using (objGerenciadorTransacao = FabricaGerenciadorTransacao.GetGerenciador(TipoBDGerenciador.MySql))
                {

                    vFILTER = vFILTER + "NUMERO   = ?NUMERO , ";
                    vFILTER = vFILTER + "IDTIPO_MEDIDOR         = ?IDTIPO_MEDIDOR , ";
                    vFILTER = vFILTER + "IDTRANSFORMADOR        = ?IDTRANSFORMADOR , ";
                    vFILTER = vFILTER + "IDFABRICANTES          = ?IDFABRICANTES , ";
                    vFILTER = vFILTER + "IDBOBINA_CORRENTE      = ?IDBOBINA_CORRENTE , ";
                    vFILTER = vFILTER + "IDBOBINA_TENSAO        = ?IDBOBINA_TENSAO , ";
                    vFILTER = vFILTER + "IDTIPO_GRANDEZA_MEDIDA = ?IDTIPO_GRANDEZA_MEDIDA , ";
                    vFILTER = vFILTER + "IDTIPO_FASES           = ?IDTIPO_FASES , ";
                    vFILTER = vFILTER + "IDDISJUNTOR            = ?IDDISJUNTOR , ";
                    vFILTER = vFILTER + "IDSITUACAO             = ?IDSITUACAO , ";
                    vFILTER = vFILTER + "IDTIPO_PADRAO_MEDICAO  = ?IDTIPO_PADRAO_MEDICAO , ";
                    vFILTER = vFILTER + "FASE_LIGACAO   = ?FASE_LIGACAO , ";
                    vFILTER = vFILTER + "MODELO         = ?MODELO , ";
                    vFILTER = vFILTER + "FABRICACAO     = ?FABRICACAO , ";
                    vFILTER = vFILTER + "NUMERO_DIGITOS = ?NUMERO_DIGITOS , ";
                    vFILTER = vFILTER + "CONST_KWH      = ?CONST_KWH , ";
                    vFILTER = vFILTER + "CONST_KW       =  ?CONST_KW , ";
                    vFILTER = vFILTER + "CONST_KVARH    =  ?CONST_KVARH , ";
                    vFILTER = vFILTER + "CONST_KWH_P    =  ?CONST_KWH_P , ";
                    vFILTER = vFILTER + "CONST_KW_P     =  ?CONST_KW_P , ";
                    vFILTER = vFILTER + "CONST_KVARH_P  = ?CONST_KVARH_P , ";
                    vFILTER = vFILTER + "CONST_KWH_FP   = ?CONST_KWH_FP , ";
                    vFILTER = vFILTER + "CONST_KW_FP    = ?CONST_KW_FP , ";
                    vFILTER = vFILTER + "CONST_KVARH_FP = ?CONST_KVARH_FP , ";
                    vFILTER = vFILTER + "SITUACAO = ?SITUACAO,  ";
                    vFILTER = vFILTER + "IDUSUARIOS = ?IDUSUARIOS  ";

                    cmd = new MySqlCommand(this.QueryInsert);

                    cmd.Parameters.AddWithValue("?NUMERO", objMedidores.NUMERO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?IDTIPO_MEDIDOR", objMedidores.IDTIPO_MEDIDOR);
                    cmd.Parameters.AddWithValue("?IDTRANSFORMADOR", objMedidores.IDTRANSFORMADOR);
                    cmd.Parameters.AddWithValue("?IDFABRICANTES", objMedidores.IDFABRICANTES);
                    cmd.Parameters.AddWithValue("?IDBOBINA_CORRENTE", objMedidores.IDBOBINA_CORRENTE);
                    cmd.Parameters.AddWithValue("?IDBOBINA_TENSAO", objMedidores.IDBOBINA_TENSAO);
                    cmd.Parameters.AddWithValue("?IDTIPO_GRANDEZA_MEDIDA", objMedidores.IDTIPO_GRANDEZA_MEDIDA);
                    cmd.Parameters.AddWithValue("?IDTIPO_FASES", objMedidores.IDTIPO_FASES);
                    cmd.Parameters.AddWithValue("?IDDISJUNTOR", objMedidores.IDDISJUNTOR);
                    cmd.Parameters.AddWithValue("?IDSITUACAO", objMedidores.IDSITUACAO);
                    cmd.Parameters.AddWithValue("?IDTIPO_PADRAO_MEDICAO", objMedidores.IDTIPO_PADRAO_MEDICAO);
                    cmd.Parameters.AddWithValue("?FASE_LIGACAO", objMedidores.FASE_LIGACAO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?MODELO", objMedidores.MODELO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?FABRICACAO", objMedidores.FABRICACAO);
                    cmd.Parameters.AddWithValue("?NUMERO_DIGITOS", objMedidores.NUMERO_DIGITOS);
                    cmd.Parameters.AddWithValue("?CONST_KWH", objMedidores.CONST_KWH);
                    cmd.Parameters.AddWithValue("?CONST_KW", objMedidores.CONST_KW);
                    cmd.Parameters.AddWithValue("?CONST_KVARH", objMedidores.CONST_KVARH);
                    cmd.Parameters.AddWithValue("?CONST_KWH_P", objMedidores.CONST_KWH_P);
                    cmd.Parameters.AddWithValue("?CONST_KW_P", objMedidores.CONST_KW_P);
                    cmd.Parameters.AddWithValue("?CONST_KVARH_P", objMedidores.CONST_KVARH_P);
                    cmd.Parameters.AddWithValue("?CONST_KWH_FP", objMedidores.CONST_KWH_FP);
                    cmd.Parameters.AddWithValue("?CONST_KW_FP", objMedidores.CONST_KW_FP);
                    cmd.Parameters.AddWithValue("?CONST_KVARH_FP", objMedidores.CONST_KVARH_FP);
                    cmd.Parameters.AddWithValue("?SITUACAO", objMedidores.SITUACAO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?IDUSUARIOS", objMedidores.IDUSUARIOS);


                    objGerenciadorTransacao.Execute(cmd);
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (cmd != null)
                    cmd.Dispose();
            }
        }

        public void Update(entidadeMedidores objMedidores)
        {
            MySqlCommand cmd = null;

            IGerenciadorTransacao objGerenciadorTransacao = null;
            ConexaoBD objconexaoBD = null;

            try
            {
                objconexaoBD = new ConexaoBD();

                objconexaoBD.SetarConexaoBanco(TipoBDConexao.fat_BD);

                using (objGerenciadorTransacao = FabricaGerenciadorTransacao.GetGerenciador(TipoBDGerenciador.MySql))
                {


                    vFILTER = vFILTER + "ID = ?ID,  ";
                    vFILTER = vFILTER + "NUMERO   = ?NUMERO , ";
                    vFILTER = vFILTER + "IDTIPO_MEDIDOR         = ?IDTIPO_MEDIDOR , ";
                    vFILTER = vFILTER + "IDTRANSFORMADOR        = ?IDTRANSFORMADOR , ";
                    vFILTER = vFILTER + "IDFABRICANTES          = ?IDFABRICANTES , ";
                    vFILTER = vFILTER + "IDBOBINA_CORRENTE      = ?IDBOBINA_CORRENTE , ";
                    vFILTER = vFILTER + "IDBOBINA_TENSAO        = ?IDBOBINA_TENSAO , ";
                    vFILTER = vFILTER + "IDTIPO_GRANDEZA_MEDIDA = ?IDTIPO_GRANDEZA_MEDIDA , ";
                    vFILTER = vFILTER + "IDTIPO_FASES           = ?IDTIPO_FASES , ";
                    vFILTER = vFILTER + "IDDISJUNTOR            = ?IDDISJUNTOR , ";
                    vFILTER = vFILTER + "IDSITUACAO             = ?IDSITUACAO , ";
                    vFILTER = vFILTER + "IDTIPO_PADRAO_MEDICAO  = ?IDTIPO_PADRAO_MEDICAO , ";
                    vFILTER = vFILTER + "FASE_LIGACAO   = ?FASE_LIGACAO , ";
                    vFILTER = vFILTER + "MODELO         = ?MODELO , ";
                    vFILTER = vFILTER + "FABRICACAO     = ?FABRICACAO , ";
                    vFILTER = vFILTER + "NUMERO_DIGITOS = ?NUMERO_DIGITOS , ";
                    vFILTER = vFILTER + "CONST_KWH      = ?CONST_KWH , ";
                    vFILTER = vFILTER + "CONST_KW       =  ?CONST_KW , ";
                    vFILTER = vFILTER + "CONST_KVARH    =  ?CONST_KVARH , ";
                    vFILTER = vFILTER + "CONST_KWH_P    =  ?CONST_KWH_P , ";
                    vFILTER = vFILTER + "CONST_KW_P     =  ?CONST_KW_P , ";
                    vFILTER = vFILTER + "CONST_KVARH_P  = ?CONST_KVARH_P , ";
                    vFILTER = vFILTER + "CONST_KWH_FP   = ?CONST_KWH_FP , ";
                    vFILTER = vFILTER + "CONST_KW_FP    = ?CONST_KW_FP , ";
                    vFILTER = vFILTER + "CONST_KVARH_FP = ?CONST_KVARH_FP , ";
                    vFILTER = vFILTER + "SITUACAO = ?SITUACAO,  ";
                    vFILTER = vFILTER + "IDUSUARIOS = ?IDUSUARIOS  ";

                    vAND = vAND + "AND ID = ?ID ";

                    cmd = new MySqlCommand(this.QueryUpdate);


                    cmd.Parameters.AddWithValue("?NUMERO", objMedidores.NUMERO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?IDTIPO_MEDIDOR", objMedidores.IDTIPO_MEDIDOR);
                    cmd.Parameters.AddWithValue("?IDTRANSFORMADOR", objMedidores.IDTRANSFORMADOR);
                    cmd.Parameters.AddWithValue("?IDFABRICANTES", objMedidores.IDFABRICANTES);
                    cmd.Parameters.AddWithValue("?IDBOBINA_CORRENTE", objMedidores.IDBOBINA_CORRENTE);
                    cmd.Parameters.AddWithValue("?IDBOBINA_TENSAO", objMedidores.IDBOBINA_TENSAO);
                    cmd.Parameters.AddWithValue("?IDTIPO_GRANDEZA_MEDIDA", objMedidores.IDTIPO_GRANDEZA_MEDIDA);
                    cmd.Parameters.AddWithValue("?IDTIPO_FASES", objMedidores.IDTIPO_FASES);
                    cmd.Parameters.AddWithValue("?IDDISJUNTOR", objMedidores.IDDISJUNTOR);
                    cmd.Parameters.AddWithValue("?IDSITUACAO", objMedidores.IDSITUACAO);
                    cmd.Parameters.AddWithValue("?IDTIPO_PADRAO_MEDICAO", objMedidores.IDTIPO_PADRAO_MEDICAO);
                    cmd.Parameters.AddWithValue("?FASE_LIGACAO", objMedidores.FASE_LIGACAO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?MODELO", objMedidores.MODELO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?FABRICACAO", objMedidores.FABRICACAO);
                    cmd.Parameters.AddWithValue("?NUMERO_DIGITOS", objMedidores.NUMERO_DIGITOS);
                    cmd.Parameters.AddWithValue("?CONST_KWH", objMedidores.CONST_KWH);
                    cmd.Parameters.AddWithValue("?CONST_KW", objMedidores.CONST_KW);
                    cmd.Parameters.AddWithValue("?CONST_KVARH", objMedidores.CONST_KVARH);
                    cmd.Parameters.AddWithValue("?CONST_KWH_P", objMedidores.CONST_KWH_P);
                    cmd.Parameters.AddWithValue("?CONST_KW_P", objMedidores.CONST_KW_P);
                    cmd.Parameters.AddWithValue("?CONST_KVARH_P", objMedidores.CONST_KVARH_P);
                    cmd.Parameters.AddWithValue("?CONST_KWH_FP", objMedidores.CONST_KWH_FP);
                    cmd.Parameters.AddWithValue("?CONST_KW_FP", objMedidores.CONST_KW_FP);
                    cmd.Parameters.AddWithValue("?CONST_KVARH_FP", objMedidores.CONST_KVARH_FP);
                    cmd.Parameters.AddWithValue("?SITUACAO", objMedidores.SITUACAO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?IDUSUARIOS", objMedidores.IDUSUARIOS);
                    cmd.Parameters.AddWithValue("?ID", objMedidores.ID);


                    objGerenciadorTransacao.Execute(cmd);
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (cmd != null)
                    cmd.Dispose();
            }
        }

        public void Update_1(entidadeMedidores objMedidores)
        {
            MySqlCommand cmd = null;

            IGerenciadorTransacao objGerenciadorTransacao = null;
            ConexaoBD objconexaoBD = null;

            try
            {
                objconexaoBD = new ConexaoBD();

                objconexaoBD.SetarConexaoBanco(TipoBDConexao.fat_BD);

                using (objGerenciadorTransacao = FabricaGerenciadorTransacao.GetGerenciador(TipoBDGerenciador.MySql))
                {

                    vFILTER = vFILTER + "SITUACAO = 'INATIVO'  ";

                    vAND = vAND + "AND ID = ?ID ";

                    cmd = new MySqlCommand(this.QueryUpdate);

                    cmd.Parameters.AddWithValue("?ID", objMedidores.ID);

                    objGerenciadorTransacao.Execute(cmd);
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (cmd != null)
                    cmd.Dispose();
            }
        }

        public DataTable Select(entidadeMedidores objMedidores)
        {
            DataTable dt = null;
            MySqlCommand cmd = null;
            IGerenciadorTransacao objGerenciadorTransacao = null;
            ConexaoBD objconexaoBD = null;


            try
            {
                objconexaoBD = new ConexaoBD();

                objconexaoBD.SetarConexaoBanco(TipoBDConexao.fat_BD);

                using (objGerenciadorTransacao = FabricaGerenciadorTransacao.GetGerenciador(TipoBDGerenciador.MySql))
                {
                    vFILTER = vFILTER + "ID ,";
                    vFILTER = vFILTER + "NUMERO ,";
                    vFILTER = vFILTER + "IDTIPO_MEDIDOR ,";
                    vFILTER = vFILTER + "IDTRANSFORMADOR ,";
                    vFILTER = vFILTER + "IDTIPO_FASES ,";
                    vFILTER = vFILTER + "IDTIPO_GRANDEZA_MEDIDA ,";
                    vFILTER = vFILTER + "IDTIPO_PADRAO_MEDICAO ,";
                    vFILTER = vFILTER + "IDFABRICANTES ,";
                    vFILTER = vFILTER + "IDDISJUNTOR ,";
                    vFILTER = vFILTER + "IDBOBINA_TENSAO ,";
                    vFILTER = vFILTER + "IDBOBINA_CORRENTE ,";
                    vFILTER = vFILTER + "IDSITUACAO ,";
                    vFILTER = vFILTER + "FASE_LIGACAO ,";
                    vFILTER = vFILTER + "MODELO ,";
                    vFILTER = vFILTER + "FABRICACAO ,";
                    vFILTER = vFILTER + "NUMERO_DIGITOS ,";
                    vFILTER = vFILTER + "CONST_KWH ,";
                    vFILTER = vFILTER + "CONST_KW ,";
                    vFILTER = vFILTER + "CONST_KVARH ,";
                    vFILTER = vFILTER + "CONST_KWH_P ,";
                    vFILTER = vFILTER + "CONST_KWH_FP ,";
                    vFILTER = vFILTER + "CONST_KW_P ,";
                    vFILTER = vFILTER + "CONST_KW_FP ,";
                    vFILTER = vFILTER + "CONST_KVARH_P ,";
                    vFILTER = vFILTER + "CONST_KVARH_FP ,";
                    vFILTER = vFILTER + "SITUACAO ,";
                    vFILTER = vFILTER + "IDUSUARIOS ";

                    vINNERJOIN = " ";

                    vORDERBY = " ";

                    if (objMedidores.ID != 0)
                    {
                        if (vAND != String.Empty)
                        { vAND = vAND + "AND ID = ?ID "; }
                        else
                        { vAND = "AND ID = ?ID "; }

                    }
                    else
                    {
                        if (vAND != String.Empty)
                        { vAND = vAND + " "; }
                        else
                        { vAND = " "; }
                    }


                    cmd = new MySqlCommand(this.QuerySelect);

                    if (objMedidores.ID != 0)
                    {
                        cmd.Parameters.AddWithValue("?ID", objMedidores.ID);
                    }

                    dt = objGerenciadorTransacao.GetDataTable(cmd);
                }

                return dt;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (cmd != null)
                    cmd.Dispose();
            }
        }

        public DataTable SelectMax(entidadeMedidores objMedidores)
        {
            DataTable dt = null;
            MySqlCommand cmd = null;
            IGerenciadorTransacao objGerenciadorTransacao = null;
            ConexaoBD objconexaoBD = null;

            try
            {
                objconexaoBD = new ConexaoBD();

                objconexaoBD.SetarConexaoBanco(TipoBDConexao.fat_BD);

                using (objGerenciadorTransacao = FabricaGerenciadorTransacao.GetGerenciador(TipoBDGerenciador.MySql))
                {
                    vFILTER = vFILTER + "MAX(ID) AS ID ";

                    vINNERJOIN = " ";

                    vORDERBY = " ";

                    vAND = " ";

                    cmd = new MySqlCommand(this.QuerySelect);

                    dt = objGerenciadorTransacao.GetDataTable(cmd);
                }

                return dt;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (cmd != null)
                    cmd.Dispose();
            }
        }

        public DataTable SelectOthersTables(entidadeMedidores objMedidores)
        {
            DataTable dt = null;
            MySqlCommand cmd = null;
            IGerenciadorTransacao objGerenciadorTransacao = null;
            ConexaoBD objconexaoBD = null;

            try
            {
                objconexaoBD = new ConexaoBD();

                objconexaoBD.SetarConexaoBanco(TipoBDConexao.fat_BD);

                using (objGerenciadorTransacao = FabricaGerenciadorTransacao.GetGerenciador(TipoBDGerenciador.MySql))
                {

                    vFILTER = vFILTER + "MEDIDORES.ID, ";
                    vFILTER = vFILTER + "MEDIDORES.NUMERO, ";
                    vFILTER = vFILTER + "MEDIDORES.IDTRANSFORMADOR, ";
                    vFILTER = vFILTER + "MEDIDORES.IDTIPO_FASES, ";
                    vFILTER = vFILTER + "TIPO_FASES.DESCRICAO AS DESCRICAO_TIPO_FASES, ";
                    vFILTER = vFILTER + "MEDIDORES.IDTIPO_MEDIDOR, ";
                    vFILTER = vFILTER + "TIPO_MEDIDOR.DESCRICAO AS DESCRICAO_TIPO_MEDIDOR, ";
                    vFILTER = vFILTER + "MEDIDORES.IDFABRICANTES, ";
                    vFILTER = vFILTER + "FABRICANTES.DESCRICAO AS DESCRICAO_FABRICANTE, ";
                    vFILTER = vFILTER + "MEDIDORES.IDTIPO_GRANDEZA_MEDIDA, ";
                    vFILTER = vFILTER + "TIPO_GRANDEZA_MEDIDA.DESCRICAO AS DESCRICAO_GRANDEZA_MEDIDA, ";
                    vFILTER = vFILTER + "MEDIDORES.IDTIPO_PADRAO_MEDICAO, ";
                    vFILTER = vFILTER + "TIPO_PADRAO_MEDICAO.DESCRICAO AS DESCRICAO_TIPO_PADRAO_MEDICAO, ";
                    vFILTER = vFILTER + "MEDIDORES.IDDISJUNTOR, ";
                    vFILTER = vFILTER + "DISJUNTOR.DESCRICAO AS DESCRICAO_DISJUNTOR, ";
                    vFILTER = vFILTER + "MEDIDORES.IDBOBINA_TENSAO, ";
                    vFILTER = vFILTER + "BOBINA_TENSAO.DESCRICAO AS DESCRICAO_BOBINA_TENSAO, ";
                    vFILTER = vFILTER + "MEDIDORES.IDBOBINA_CORRENTE, ";
                    vFILTER = vFILTER + "BOBINA_CORRENTE.DESCRICAO AS DESCRICAO_BOBINA_CORRENTE, ";
                    vFILTER = vFILTER + "MEDIDORES.IDSITUACAO, ";
                    vFILTER = vFILTER + "SITUACAO.DESCRICAO AS DESCRICAO_SITUACAO, ";
                    vFILTER = vFILTER + "MEDIDORES.FASE_LIGACAO, ";
                    vFILTER = vFILTER + "MEDIDORES.FABRICACAO, ";
                    vFILTER = vFILTER + "MEDIDORES.MODELO, ";
                    vFILTER = vFILTER + "MEDIDORES.NUMERO_DIGITOS ";

                    vINNERJOIN = vINNERJOIN + "            LEFT JOIN BOBINA_CORRENTE ";
                    vINNERJOIN = vINNERJOIN + "                   ON BOBINA_CORRENTE.ID = MEDIDORES.IDBOBINA_CORRENTE ";
                    vINNERJOIN = vINNERJOIN + "           LEFT JOIN BOBINA_TENSAO";
                    vINNERJOIN = vINNERJOIN + "                  ON BOBINA_TENSAO.ID = MEDIDORES.IDBOBINA_TENSAO ";
                    vINNERJOIN = vINNERJOIN + "          LEFT JOIN FABRICANTES";
                    vINNERJOIN = vINNERJOIN + "                 ON FABRICANTES.ID = MEDIDORES.IDFABRICANTES";
                    vINNERJOIN = vINNERJOIN + "         LEFT JOIN TIPO_FASES";
                    vINNERJOIN = vINNERJOIN + "                ON TIPO_FASES.ID = MEDIDORES.IDTIPO_FASES";
                    vINNERJOIN = vINNERJOIN + "        LEFT JOIN TIPO_GRANDEZA_MEDIDA";
                    vINNERJOIN = vINNERJOIN + "               ON TIPO_GRANDEZA_MEDIDA.ID = MEDIDORES.IDTIPO_GRANDEZA_MEDIDA";
                    vINNERJOIN = vINNERJOIN + "       LEFT JOIN TIPO_MEDIDOR";
                    vINNERJOIN = vINNERJOIN + "              ON TIPO_MEDIDOR.ID = MEDIDORES.IDTIPO_MEDIDOR";
                    vINNERJOIN = vINNERJOIN + "      LEFT JOIN DISJUNTOR";
                    vINNERJOIN = vINNERJOIN + "             ON DISJUNTOR.ID = MEDIDORES.IDDISJUNTOR";
                    vINNERJOIN = vINNERJOIN + "     LEFT JOIN SITUACAO";
                    vINNERJOIN = vINNERJOIN + "            ON SITUACAO.ID = MEDIDORES.IDSITUACAO";
                    vINNERJOIN = vINNERJOIN + "    LEFT JOIN TRANSFORMADOR";
                    vINNERJOIN = vINNERJOIN + "           ON TRANSFORMADOR.ID = MEDIDORES.IDTRANSFORMADOR";
                    vINNERJOIN = vINNERJOIN + "   LEFT JOIN TIPO_PADRAO_MEDICAO";
                    vINNERJOIN = vINNERJOIN + "          ON TIPO_PADRAO_MEDICAO.ID = MEDIDORES.IDTIPO_PADRAO_MEDICAO";


                    vORDERBY = " ";
                    vAND = " ";

                    cmd = new MySqlCommand(this.QuerySelect);

                    dt = objGerenciadorTransacao.GetDataTable(cmd);
                }

                return dt;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (cmd != null)
                    cmd.Dispose();
            }
        }

        public DataTable Delete(entidadeMedidores objMedidores)
        {
            DataTable dt = null;
            MySqlCommand cmd = null;
            IGerenciadorTransacao objGerenciadorTransacao = null;
            ConexaoBD objconexaoBD = null;

            try
            {
                objconexaoBD = new ConexaoBD();

                objconexaoBD.SetarConexaoBanco(TipoBDConexao.fat_BD);

                using (objGerenciadorTransacao = FabricaGerenciadorTransacao.GetGerenciador(TipoBDGerenciador.MySql))
                {
                    vORDERBY = " ";


                    if (objMedidores.ID != 0)
                    {
                        if (vAND != String.Empty)
                        { vAND = vAND + "AND ID = ?ID "; }
                        else
                        { vAND = "AND ID = ?ID "; }

                    }
                    else
                    {
                        if (vAND != String.Empty)
                        { vAND = vAND + " "; }
                        else
                        { vAND = " "; }
                    }


                    cmd = new MySqlCommand(this.QueryDelete);


                    if (objMedidores.ID != 0)
                    {
                        cmd.Parameters.AddWithValue("?ID", objMedidores.ID);
                    }

                    dt = objGerenciadorTransacao.GetDataTable(cmd);
                }

                return dt;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (cmd != null)
                    cmd.Dispose();
            }
        }

        #endregion

        #region " Comandos SQL "

        StringBuilder sb = new StringBuilder();

        protected string QueryInsert
        {
            get
            {
                this.sb.Clear();

                this.sb.AppendLine("INSERT INTO  ");
                this.sb.AppendLine("MEDIDORES SET  ");
                this.sb.AppendLine(vFILTER);

                return sb.ToString();
            }
        }

        protected string QueryUpdate
        {
            get
            {
                this.sb.Clear();

                this.sb.AppendLine("UPDATE  ");
                this.sb.AppendLine("MEDIDORES SET  ");
                this.sb.AppendLine(vFILTER);
                this.sb.AppendLine("WHERE 1 = 1 ");
                this.sb.AppendLine(vAND);

                return sb.ToString();
            }
        }

        protected string QueryDelete
        {
            get
            {
                this.sb.Clear();

                this.sb.AppendLine("DELETE FROM MEDIDORES ");
                this.sb.AppendLine("WHERE 1 = 1 ");
                this.sb.AppendLine(vAND);
                this.sb.AppendLine(vORDERBY);

                return sb.ToString();
            }
        }

        protected string QuerySelect
        {
            get
            {
                this.sb.Clear();

                this.sb.AppendLine("SELECT ");
                this.sb.AppendLine(vFILTER);
                this.sb.AppendLine("FROM ");
                this.sb.AppendLine("MEDIDORES  ");
                this.sb.AppendLine(vINNERJOIN);
                this.sb.AppendLine("WHERE 1 = 1  ");
                this.sb.AppendLine(vAND);
                this.sb.AppendLine(vORDERBY);

                return sb.ToString();
            }
        }


        #endregion
    }
}
