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

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

        #region Métodos

        public void Insert(entidadeRessarcimentoNivelTensao objRessarcimentoNivelTensao)
        {
            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 + "CONS_ID= ?CONS_ID ,";
                    vFILTER = vFILTER + "UNID_ID= ?UNID_ID ,";
                    vFILTER = vFILTER + "ZONA= ?ZONA ,";
                    vFILTER = vFILTER + "LIVRO= ?LIVRO ,";
                    vFILTER = vFILTER + "CONTA= ?CONTA ,";
                    vFILTER = vFILTER + "GRUPO= ?GRUPO ,";
                    vFILTER = vFILTER + "GRUPO_TARIFA= ?GRUPO_TARIFA ,";
                    vFILTER = vFILTER + "SITUACAO= ?SITUACAO ,";
                    vFILTER = vFILTER + "REGIAO= ?REGIAO ,";
                    vFILTER = vFILTER + "FASE= ?FASE ,";
                    vFILTER = vFILTER + "TENSAO= ?TENSAO ,";
                    vFILTER = vFILTER + "KEI= ?KEI ,";
                    vFILTER = vFILTER + "TIPO_TENSAO= ?TIPO_TENSAO ,";
                    vFILTER = vFILTER + "NOME= ?NOME ,";
                    vFILTER = vFILTER + "NV_SEQUENCIA_OS= ?NV_SEQUENCIA_OS ,";
                    vFILTER = vFILTER + "NV_PROTOCOLO= ?NV_PROTOCOLO ,";
                    vFILTER = vFILTER + "NV_PROTOCOLO_SUB= ?NV_PROTOCOLO_SUB ,";
                    vFILTER = vFILTER + "NV_SOLICITACAO= ?NV_SOLICITACAO ,";
                    vFILTER = vFILTER + "NV_MOVIMENTO= ?NV_MOVIMENTO ,";
                    vFILTER = vFILTER + "NV_OCORRENCIA= ?NV_OCORRENCIA ,";
                    vFILTER = vFILTER + "NV_STATUS= ?NV_STATUS ,";
                    vFILTER = vFILTER + "NV_STATUS_SUB= ?NV_STATUS_SUB ,";
                    vFILTER = vFILTER + "LA_INICIAL= ?LA_INICIAL ,";
                    vFILTER = vFILTER + "LA_FINAL= ?LA_FINAL ,";
                    vFILTER = vFILTER + "LA_PROCEDENTE= ?LA_PROCEDENTE ,";
                    vFILTER = vFILTER + "CR_SOLICITACAO= ?CR_SOLICITACAO ,";
                    vFILTER = vFILTER + "CR_PROJETO= ?CR_PROJETO ,";
                    vFILTER = vFILTER + "CR_CONCLUSAO= ?CR_CONCLUSAO ,";
                    vFILTER = vFILTER + "CR_REPROVACAO= ?CR_REPROVACAO ,";
                    vFILTER = vFILTER + "CR_CANCELAMENTO= ?CR_CANCELAMENTO ,";
                    vFILTER = vFILTER + "CR_STATUS= ?CR_STATUS ,";
                    vFILTER = vFILTER + "CR_STATUS_SUB= ?CR_STATUS_SUB ,";
                    vFILTER = vFILTER + "NF_NUMNF= ?NF_NUMNF ,";
                    vFILTER = vFILTER + "NF_MESANO= ?NF_MESANO ,";
                    vFILTER = vFILTER + "NF_MESANO_REF= ?NF_MESANO_REF ,";
                    vFILTER = vFILTER + "NF_QTD_KWH_P= ?NF_QTD_KWH_P ,";
                    vFILTER = vFILTER + "NF_QTD_KWH_FP= ?NF_QTD_KWH_FP ,";
                    vFILTER = vFILTER + "NF_LEIT_ATUAL= ?NF_LEIT_ATUAL ,";
                    vFILTER = vFILTER + "NF_LEIT_ANTERIOR= ?NF_LEIT_ANTERIOR ,";
                    vFILTER = vFILTER + "NF_DIAS= ?NF_DIAS ,";
                    vFILTER = vFILTER + "NF_KWH_DIARIO_P= ?NF_KWH_DIARIO_P ,";
                    vFILTER = vFILTER + "NF_KWH_DIARIO_FP= ?NF_KWH_DIARIO_FP ,";
                    vFILTER = vFILTER + "RE_MEDIDO_P= ?RE_MEDIDO_P ,";
                    vFILTER = vFILTER + "RE_MEDIDO_FP= ?RE_MEDIDO_FP ,";
                    vFILTER = vFILTER + "RE_DIAS= ?RE_DIAS ,";
                    vFILTER = vFILTER + "RE_VALOR_BASE= ?RE_VALOR_BASE ,";
                    vFILTER = vFILTER + "RE_HORAS= ?RE_HORAS ,";
                    vFILTER = vFILTER + "RE_EUSD= ?RE_EUSD ,";
                    vFILTER = vFILTER + "RE_DRP= ?RE_DRP ,";
                    vFILTER = vFILTER + "RE_DRPM= ?RE_DRPM ,";
                    vFILTER = vFILTER + "RE_K1=  ?RE_K1 ,";
                    vFILTER = vFILTER + "RE_DRC=  ?RE_DRC ,";
                    vFILTER = vFILTER + "RE_DRCM=  ?RE_DRCM ,";
                    vFILTER = vFILTER + "RE_K2=  ?RE_K2 ,";
                    vFILTER = vFILTER + "RE_PARCIAL=  ?RE_PARCIAL ,";
                    vFILTER = vFILTER + "RE_CREDITO=  ?RE_CREDITO ,";
                    vFILTER = vFILTER + "GERADO =  ?GERADO ,";
                    vFILTER = vFILTER + "PROCESSADO =  ?PROCESSADO ";

                    cmd = new MySqlCommand(this.QueryInsert);

                    cmd.Parameters.AddWithValue("?CONS_ID", objRessarcimentoNivelTensao.CONS_ID);
                    cmd.Parameters.AddWithValue("?UNID_ID", objRessarcimentoNivelTensao.UNID_ID);
                    cmd.Parameters.AddWithValue("?ZONA", objRessarcimentoNivelTensao.ZONA.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?LIVRO", objRessarcimentoNivelTensao.LIVRO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?CONTA", objRessarcimentoNivelTensao.CONTA.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?GRUPO", objRessarcimentoNivelTensao.GRUPO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?GRUPO_TARIFA", objRessarcimentoNivelTensao.GRUPO_TARIFA.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?SITUACAO", objRessarcimentoNivelTensao.SITUACAO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?REGIAO", objRessarcimentoNivelTensao.REGIAO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?FASE", objRessarcimentoNivelTensao.FASE.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?TENSAO", objRessarcimentoNivelTensao.TENSAO);
                    cmd.Parameters.AddWithValue("?KEI", objRessarcimentoNivelTensao.KEI);
                    cmd.Parameters.AddWithValue("?TIPO_TENSAO", objRessarcimentoNivelTensao.TIPO_TENSAO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?NOME", objRessarcimentoNivelTensao.NOME.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?NV_SEQUENCIA_OS", objRessarcimentoNivelTensao.NV_SEQUENCIA_OS);
                    cmd.Parameters.AddWithValue("?NV_PROTOCOLO", objRessarcimentoNivelTensao.NV_PROTOCOLO);
                    cmd.Parameters.AddWithValue("?NV_PROTOCOLO_SUB", objRessarcimentoNivelTensao.NV_PROTOCOLO_SUB);
                    cmd.Parameters.AddWithValue("?NV_SOLICITACAO", objRessarcimentoNivelTensao.NV_SOLICITACAO);
                    cmd.Parameters.AddWithValue("?NV_MOVIMENTO", objRessarcimentoNivelTensao.NV_MOVIMENTO);
                    cmd.Parameters.AddWithValue("?NV_OCORRENCIA", objRessarcimentoNivelTensao.NV_OCORRENCIA);
                    cmd.Parameters.AddWithValue("?NV_STATUS", objRessarcimentoNivelTensao.NV_STATUS.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?NV_STATUS_SUB", objRessarcimentoNivelTensao.NV_STATUS_SUB.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?LA_INICIAL", objRessarcimentoNivelTensao.LA_INICIAL);
                    cmd.Parameters.AddWithValue("?LA_FINAL", objRessarcimentoNivelTensao.LA_FINAL);
                    cmd.Parameters.AddWithValue("?LA_PROCEDENTE", objRessarcimentoNivelTensao.LA_PROCEDENTE);
                    cmd.Parameters.AddWithValue("?CR_SOLICITACAO", objRessarcimentoNivelTensao.CR_SOLICITACAO);
                    cmd.Parameters.AddWithValue("?CR_PROJETO", objRessarcimentoNivelTensao.CR_PROJETO);
                    cmd.Parameters.AddWithValue("?CR_CONCLUSAO", objRessarcimentoNivelTensao.CR_CONCLUSAO);
                    cmd.Parameters.AddWithValue("?CR_REPROVACAO", objRessarcimentoNivelTensao.CR_REPROVACAO);
                    cmd.Parameters.AddWithValue("?CR_CANCELAMENTO", objRessarcimentoNivelTensao.CR_CANCELAMENTO);
                    cmd.Parameters.AddWithValue("?CR_STATUS", objRessarcimentoNivelTensao.CR_STATUS.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?CR_STATUS_SUB", objRessarcimentoNivelTensao.CR_STATUS_SUB.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?NF_NUMNF", objRessarcimentoNivelTensao.NF_NUMNF);
                    cmd.Parameters.AddWithValue("?NF_MESANO", objRessarcimentoNivelTensao.NF_MESANO.ToString().ToUpper());
                    cmd.Parameters.AddWithValue("?NF_MESANO_REF", objRessarcimentoNivelTensao.NF_MESANO_REF);
                    cmd.Parameters.AddWithValue("?NF_QTD_KWH_P", objRessarcimentoNivelTensao.NF_QTD_KWH_P);
                    cmd.Parameters.AddWithValue("?NF_QTD_KWH_FP", objRessarcimentoNivelTensao.NF_QTD_KWH_FP);
                    cmd.Parameters.AddWithValue("?NF_LEIT_ATUAL", objRessarcimentoNivelTensao.NF_LEIT_ATUAL);
                    cmd.Parameters.AddWithValue("?NF_LEIT_ANTERIOR", objRessarcimentoNivelTensao.NF_LEIT_ANTERIOR);
                    cmd.Parameters.AddWithValue("?NF_DIAS", objRessarcimentoNivelTensao.NF_DIAS);
                    cmd.Parameters.AddWithValue("?NF_KWH_DIARIO_P", objRessarcimentoNivelTensao.NF_KWH_DIARIO_P);
                    cmd.Parameters.AddWithValue("?NF_KWH_DIARIO_FP", objRessarcimentoNivelTensao.NF_KWH_DIARIO_FP);
                    cmd.Parameters.AddWithValue("?RE_MEDIDO_P", objRessarcimentoNivelTensao.RE_MEDIDO_P);
                    cmd.Parameters.AddWithValue("?RE_MEDIDO_FP", objRessarcimentoNivelTensao.RE_MEDIDO_FP);
                    cmd.Parameters.AddWithValue("?RE_DIAS", objRessarcimentoNivelTensao.RE_DIAS);
                    cmd.Parameters.AddWithValue("?RE_VALOR_BASE", objRessarcimentoNivelTensao.RE_VALOR_BASE);
                    cmd.Parameters.AddWithValue("?RE_HORAS", objRessarcimentoNivelTensao.RE_HORAS);
                    cmd.Parameters.AddWithValue("?RE_EUSD", objRessarcimentoNivelTensao.RE_EUSD);
                    cmd.Parameters.AddWithValue("?RE_DRP", objRessarcimentoNivelTensao.RE_DRP);
                    cmd.Parameters.AddWithValue("?RE_DRPM", objRessarcimentoNivelTensao.RE_DRPM);
                    cmd.Parameters.AddWithValue("?RE_K1", objRessarcimentoNivelTensao.RE_K1);
                    cmd.Parameters.AddWithValue("?RE_DRC", objRessarcimentoNivelTensao.RE_DRC);
                    cmd.Parameters.AddWithValue("?RE_DRCM", objRessarcimentoNivelTensao.RE_DRCM);
                    cmd.Parameters.AddWithValue("?RE_K2", objRessarcimentoNivelTensao.RE_K2);
                    cmd.Parameters.AddWithValue("?RE_PARCIAL", objRessarcimentoNivelTensao.RE_PARCIAL);
                    cmd.Parameters.AddWithValue("?RE_CREDITO", objRessarcimentoNivelTensao.RE_CREDITO);
                    cmd.Parameters.AddWithValue("?GERADO", objRessarcimentoNivelTensao.GERADO);
                    cmd.Parameters.AddWithValue("?PROCESSADO", objRessarcimentoNivelTensao.PROCESSADO);

                    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("RESSARCIMENTO_NIVEL_TENSAO SET  ");
                this.sb.AppendLine(vFILTER);

                return sb.ToString();
            }
        }

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

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

                return sb.ToString();
            }
        }

        #endregion

    }
}
