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

namespace fatd_faturamento.DAL.Persistencia
{
    public class dalConfiguracaoEmpresaSistema
    {
        string vFILTER = null;
        string vINNERJOIN = null;
        string vAND = null;
        string vORDERBY = null;

        #region Métodos

        public DataTable Execute(entidadeConfiguracaoEmpresaSistema objConfiguracaoEmpresaSistema)
        {
            DataTable dt = null;
            MySqlCommand cmd = null;

            IGerenciadorTransacao objGerenciadorTransacao = null;
            ConexaoBD objconexaoBD = null;

            try
            {
                objconexaoBD = new ConexaoBD();

                objconexaoBD.SetarConexaoBanco(TipoBDConexao.nss_BD);

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

                    vORDERBY = " ";

                    vAND = @" SELECT 
                                  E.SIGLA  AS SIGLA_EMPRESA,
                                  SS.SIGLA AS SIGLA_SISTEMA,
                                  CES.USER,
                                  CES.PASSWORD,
                                  CES.TABLE,
                                  CES.SERVER,
                                  CES.PORT
                               FROM   CONFIGURACAO_EMPRESA_SISTEMA CES
                               INNER JOIN SISTEMAS S
                                       ON S.ID = CES.ID_SISTEMA
                               INNER JOIN EMPRESA E
                                       ON E.ID = CES.ID_EMPRESA
                               INNER JOIN SUB_SISTEMAS SS
                                       ON SS.ID = CES.ID_SUB_SISTEMA
                               WHERE E.SIGLA = ?SIGLA  ";


                    cmd = new MySqlCommand(this.QueryExecute);

                    cmd.Parameters.AddWithValue("?SIGLA", objConfiguracaoEmpresaSistema.SIGLA_EMPRESA.ToString().ToUpper());

                    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 QueryExecute
        {
            get
            {
                this.sb.Clear();

                this.sb.AppendLine(vAND);
                this.sb.AppendLine(vORDERBY);

                return sb.ToString();
            }
        }

        #endregion


    }
}
