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 dalUC
    {

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

        #region Métodos

        public void Update(entidadeUC objUC)
        {
            MySqlCommand cmd = null;

            IGerenciadorTransacao objGerenciadorTransacao = null;
            ConexaoBD objconexaoBD = null;

            try
            {
                objconexaoBD = new ConexaoBD();

                objconexaoBD.SetarConexaoBanco(TipoBDConexao.lc_BD);

                using (objGerenciadorTransacao = FabricaGerenciadorTransacao.GetGerenciador(TipoBDGerenciador.MySql))
                {
                    vFILTER = "REGIAO  = ?REGIAO ";

                    vAND = vAND + "AND UNID_ID_FATWIN = ?UNID_ID_FATWIN ";
                    vAND = vAND + "AND GRUPO = ?GRUPO ";

                    cmd = new MySqlCommand(this.QueryUpdate);

                    cmd.Parameters.AddWithValue("?REGIAO", objUC.REGIAO.ToString());
                    cmd.Parameters.AddWithValue("?UNID_ID_FATWIN", objUC.UNID_ID_FATWIN);
                    cmd.Parameters.AddWithValue("?GRUPO", objUC.GRUPO.ToString());

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

        public void Update_1(entidadeUC objUC)
        {
            MySqlCommand cmd = null;

            IGerenciadorTransacao objGerenciadorTransacao = null;
            ConexaoBD objconexaoBD = null;

            try
            {
                objconexaoBD = new ConexaoBD();

                objconexaoBD.SetarConexaoBanco(TipoBDConexao.lc_BD);

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

                    vFILTER = vFILTER + "ZLC  = ?ZLC , ";
                    vFILTER = vFILTER + "ROTA = ?ROTA  , ";
                    vFILTER = vFILTER + "SEQUENCIA = ?SEQUENCIA , ";
                    vFILTER = vFILTER + "ALTA_TENSAO = ?ALTA_TENSAO , ";
                    vFILTER = vFILTER + "ID_CLASSE = ?ID_CLASSE , ";
                    vFILTER = vFILTER + "DESCRICAO_CLASSE = ?DESCRICAO_CLASSE , ";
                    vFILTER = vFILTER + "ID_CLASSE_TARIFARIA = ?ID_CLASSE_TARIFARIA , ";
                    vFILTER = vFILTER + "DESCRICAO_CLASSE_TAR = ?DESCRICAO_CLASSE_TAR  ";

                    vAND = vAND + "AND UNID_ID_FATWIN = ?UNID_ID_FATWIN ";
                    vAND = vAND + "AND GRUPO = ?GRUPO ";


                    cmd = new MySqlCommand(this.QueryUpdate);

                    cmd.Parameters.AddWithValue("?ZLC", objUC.ZLC.ToString());
                    cmd.Parameters.AddWithValue("?ROTA", objUC.ROTA.ToString());
                    cmd.Parameters.AddWithValue("?SEQUENCIA", objUC.SEQUENCIA);
                    cmd.Parameters.AddWithValue("?ALTA_TENSAO", objUC.ALTA_TENSAO);
                    cmd.Parameters.AddWithValue("?ID_CLASSE", objUC.ID_CLASSE);
                    cmd.Parameters.AddWithValue("?DESCRICAO_CLASSE", objUC.DESCRICAO_CLASSE.ToString());
                    cmd.Parameters.AddWithValue("?ID_CLASSE_TARIFARIA", objUC.ID_CLASSE_TARIFARIA);
                    cmd.Parameters.AddWithValue("?DESCRICAO_CLASSE_TAR", objUC.DESCRICAO_CLASSE_TAR.ToString());
                    cmd.Parameters.AddWithValue("?UNID_ID_FATWIN", objUC.UNID_ID_FATWIN);
                    cmd.Parameters.AddWithValue("?GRUPO", objUC.GRUPO.ToString());

                    objGerenciadorTransacao.Execute(cmd);
                }
            }
            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("UC SET  ");
                this.sb.AppendLine(vFILTER);

                return sb.ToString();
            }
        }

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

                this.sb.AppendLine("UPDATE  ");
                this.sb.AppendLine("UC 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 UC ");
                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("UC  ");
                this.sb.AppendLine(vINNERJOIN);
                this.sb.AppendLine("WHERE 1 = 1  ");
                this.sb.AppendLine(vAND);
                this.sb.AppendLine(vORDERBY);

                return sb.ToString();
            }
        }

        #endregion

    }
}
