using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using fatd_faturamento.DAL.Persistencia;
using fatd_faturamento.ENTIDADE;

namespace fatd_faturamento.BLL.Repositorio
{
    public class repositorioMedidores
    {
        public void Insert(entidadeMedidores objMedidores)
        {
            dalMedidores dalMedidores = null;

            try
            {
                dalMedidores = new dalMedidores();

                dalMedidores.Insert(objMedidores);
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void Update(entidadeMedidores objMedidores)
        {
            dalMedidores dalMedidores = null;

            try
            {
                dalMedidores = new dalMedidores();

                dalMedidores.Update(objMedidores);
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void Update_1(entidadeMedidores objMedidores)
        {
            dalMedidores dalMedidores = null;

            try
            {
                dalMedidores = new dalMedidores();

                dalMedidores.Update_1(objMedidores);
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void Delete(entidadeMedidores objMedidores)
        {
            dalMedidores dalMedidores = null;

            try
            {
                dalMedidores = new dalMedidores();

                dalMedidores.Delete(objMedidores);
            }
            catch (Exception)
            {
                throw;
            }
        }

        public IList<entidadeMedidores> Select(entidadeMedidores objMedidores)
        {
            dalMedidores dalMedidores = null;

            var lstMedidores = new List<entidadeMedidores>();
            DataTable dt = null;

            try
            {
                dalMedidores = new dalMedidores();
                dt = dalMedidores.Select(objMedidores);

                foreach (DataRow dr in dt.Rows)
                {
                    objMedidores = new entidadeMedidores();


                    if (!Convert.IsDBNull(dr["ID"]))
                        objMedidores.ID = Convert.ToInt32(dr["ID"]);

                    if (!Convert.IsDBNull(dr["NUMERO"]))
                        objMedidores.NUMERO = dr["NUMERO"].ToString();

                    if (!Convert.IsDBNull(dr["IDTIPO_MEDIDOR"]))
                        objMedidores.IDTIPO_MEDIDOR = Convert.ToInt32(dr["IDTIPO_MEDIDOR"]);

                    if (!Convert.IsDBNull(dr["IDTRANSFORMADOR"]))
                        objMedidores.IDTRANSFORMADOR = Convert.ToInt32(dr["IDTRANSFORMADOR"]);

                    if (!Convert.IsDBNull(dr["IDTIPO_FASES"]))
                        objMedidores.IDTIPO_FASES = Convert.ToInt32(dr["IDTIPO_FASES"]);

                    if (!Convert.IsDBNull(dr["IDTIPO_GRANDEZA_MEDIDA"]))
                        objMedidores.IDTIPO_GRANDEZA_MEDIDA = Convert.ToInt32(dr["IDTIPO_GRANDEZA_MEDIDA"]);

                    if (!Convert.IsDBNull(dr["IDTIPO_PADRAO_MEDICAO"]))
                        objMedidores.IDTIPO_PADRAO_MEDICAO = Convert.ToInt32(dr["IDTIPO_PADRAO_MEDICAO"]);

                    if (!Convert.IsDBNull(dr["IDFABRICANTES"]))
                        objMedidores.IDFABRICANTES = Convert.ToInt32(dr["IDFABRICANTES"]);

                    if (!Convert.IsDBNull(dr["IDDISJUNTOR"]))
                        objMedidores.IDDISJUNTOR = Convert.ToInt32(dr["IDDISJUNTOR"]);

                    if (!Convert.IsDBNull(dr["IDBOBINA_TENSAO"]))
                        objMedidores.IDBOBINA_TENSAO = Convert.ToInt32(dr["IDBOBINA_TENSAO"]);

                    if (!Convert.IsDBNull(dr["IDBOBINA_CORRENTE"]))
                        objMedidores.IDBOBINA_CORRENTE = Convert.ToInt32(dr["IDBOBINA_CORRENTE"]);

                    if (!Convert.IsDBNull(dr["IDSITUACAO"]))
                        objMedidores.IDSITUACAO = Convert.ToInt32(dr["IDSITUACAO"]);

                    if (!Convert.IsDBNull(dr["FASE_LIGACAO"]))
                        objMedidores.FASE_LIGACAO = dr["FASE_LIGACAO"].ToString();

                    if (!Convert.IsDBNull(dr["MODELO"]))
                        objMedidores.MODELO = dr["MODELO"].ToString();

                    if (!Convert.IsDBNull(dr["FABRICACAO"]))
                        objMedidores.FABRICACAO = Convert.ToDateTime(dr["FABRICACAO"]);

                    if (!Convert.IsDBNull(dr["NUMERO_DIGITOS"]))
                        objMedidores.NUMERO_DIGITOS = Convert.ToInt32(dr["NUMERO_DIGITOS"]);

                    if (!Convert.IsDBNull(dr["CONST_KWH"]))
                        objMedidores.CONST_KWH = Convert.ToDecimal(dr["CONST_KWH"]);

                    if (!Convert.IsDBNull(dr["CONST_KW"]))
                        objMedidores.CONST_KW = Convert.ToDecimal(dr["CONST_KW"]);

                    if (!Convert.IsDBNull(dr["CONST_KVARH"]))
                        objMedidores.CONST_KVARH = Convert.ToDecimal(dr["CONST_KVARH"]);

                    if (!Convert.IsDBNull(dr["CONST_KWH_P"]))
                        objMedidores.CONST_KWH_P = Convert.ToDecimal(dr["CONST_KWH_P"]);

                    if (!Convert.IsDBNull(dr["CONST_KWH_FP"]))
                        objMedidores.CONST_KWH_FP = Convert.ToDecimal(dr["CONST_KWH_FP"]);

                    if (!Convert.IsDBNull(dr["CONST_KW_P"]))
                        objMedidores.CONST_KW_P = Convert.ToDecimal(dr["CONST_KW_P"]);

                    if (!Convert.IsDBNull(dr["CONST_KW_FP"]))
                        objMedidores.CONST_KW_FP = Convert.ToDecimal(dr["CONST_KW_FP"]);

                    if (!Convert.IsDBNull(dr["CONST_KVARH_P"]))
                        objMedidores.CONST_KVARH_P = Convert.ToDecimal(dr["CONST_KVARH_P"]);

                    if (!Convert.IsDBNull(dr["CONST_KVARH_FP"]))
                        objMedidores.CONST_KVARH_FP = Convert.ToDecimal(dr["CONST_KVARH_FP"]);

                    if (!Convert.IsDBNull(dr["SITUACAO"]))
                        objMedidores.SITUACAO = dr["SITUACAO"].ToString();

                    if (!Convert.IsDBNull(dr["IDUSUARIOS"]))
                        objMedidores.IDUSUARIOS = Convert.ToInt32(dr["IDUSUARIOS"]);


                    lstMedidores.Add(objMedidores);
                }
                return lstMedidores;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public IList<entidadeMedidores> SelectOthersTables(entidadeMedidores objMedidores)
        {
            dalMedidores dalMedidores = null;

            var lstMedidores = new List<entidadeMedidores>();
            DataTable dt = null;

            try
            {
                dalMedidores = new dalMedidores();
                dt = dalMedidores.SelectOthersTables(objMedidores);

                foreach (DataRow dr in dt.Rows)
                {
                    objMedidores = new entidadeMedidores();
                    objMedidores.entidadeTIPOFASE = new entidadeTipoFase();
                    objMedidores.entidadeTIPOMEDIDOR = new entidadeTipoMedidor();
                    objMedidores.entidadeFABRICANTE = new entidadeFabricante();
                    objMedidores.entidadeTIPOGRANDEZAMEDIDA = new entidadeTipoGrandezaMedida();
                    objMedidores.entidadeTIPOPADRAOMEDICAO = new entidadeTipoPadraoMedicao();
                    objMedidores.entidadeDISJUNTOR = new entidadeDisjuntor();
                    objMedidores.entidadeBOBINATENSAO = new entidadeBobinaTensao();
                    objMedidores.entidadeBOBINACORRENTE = new entidadeBobinaCorrente();
                    objMedidores.entidadeSITUACAO = new entidadeSituacao();


                    if (!Convert.IsDBNull(dr["ID"]))
                        objMedidores.ID = Convert.ToInt32(dr["ID"]);

                    if (!Convert.IsDBNull(dr["NUMERO"]))
                        objMedidores.NUMERO = dr["NUMERO"].ToString();

                    if (!Convert.IsDBNull(dr["IDTRANSFORMADOR"]))
                        objMedidores.IDTRANSFORMADOR = Convert.ToInt32(dr["IDTRANSFORMADOR"]);

                    if (!Convert.IsDBNull(dr["IDTIPO_FASES"]))
                        objMedidores.IDTIPO_FASES = Convert.ToInt32(dr["IDTIPO_FASES"]);

                    if (!Convert.IsDBNull(dr["DESCRICAO_TIPO_FASES"]))
                        objMedidores.entidadeTIPOFASE.DESCRICAO = dr["DESCRICAO_TIPO_FASES"].ToString();

                    if (!Convert.IsDBNull(dr["IDTIPO_MEDIDOR"]))
                        objMedidores.IDTIPO_MEDIDOR = Convert.ToInt32(dr["IDTIPO_MEDIDOR"]);

                    if (!Convert.IsDBNull(dr["DESCRICAO_TIPO_MEDIDOR"]))
                        objMedidores.entidadeTIPOMEDIDOR.DESCRICAO = dr["DESCRICAO_TIPO_MEDIDOR"].ToString();

                    if (!Convert.IsDBNull(dr["IDFABRICANTES"]))
                        objMedidores.IDFABRICANTES = Convert.ToInt32(dr["IDFABRICANTES"]);

                    if (!Convert.IsDBNull(dr["DESCRICAO_FABRICANTE"]))
                        objMedidores.entidadeFABRICANTE.DESCRICAO = dr["DESCRICAO_FABRICANTE"].ToString();

                    if (!Convert.IsDBNull(dr["IDTIPO_GRANDEZA_MEDIDA"]))
                        objMedidores.IDTIPO_GRANDEZA_MEDIDA = Convert.ToInt32(dr["IDTIPO_GRANDEZA_MEDIDA"]);

                    if (!Convert.IsDBNull(dr["DESCRICAO_GRANDEZA_MEDIDA"]))
                        objMedidores.entidadeTIPOGRANDEZAMEDIDA.DESCRICAO = dr["DESCRICAO_GRANDEZA_MEDIDA"].ToString();

                    if (!Convert.IsDBNull(dr["IDTIPO_PADRAO_MEDICAO"]))
                        objMedidores.IDTIPO_PADRAO_MEDICAO = Convert.ToInt32(dr["IDTIPO_PADRAO_MEDICAO"]);

                    if (!Convert.IsDBNull(dr["DESCRICAO_TIPO_PADRAO_MEDICAO"]))
                        objMedidores.entidadeTIPOPADRAOMEDICAO.DESCRICAO = dr["DESCRICAO_TIPO_PADRAO_MEDICAO"].ToString();

                    if (!Convert.IsDBNull(dr["IDDISJUNTOR"]))
                        objMedidores.IDDISJUNTOR = Convert.ToInt32(dr["IDDISJUNTOR"]);

                    if (!Convert.IsDBNull(dr["DESCRICAO_DISJUNTOR"]))
                        objMedidores.entidadeDISJUNTOR.DESCRICAO = dr["DESCRICAO_DISJUNTOR"].ToString();

                    if (!Convert.IsDBNull(dr["IDBOBINA_TENSAO"]))
                        objMedidores.IDBOBINA_TENSAO = Convert.ToInt32(dr["IDBOBINA_TENSAO"]);

                    if (!Convert.IsDBNull(dr["DESCRICAO_BOBINA_TENSAO"]))
                        objMedidores.entidadeBOBINATENSAO.DESCRICAO = dr["DESCRICAO_BOBINA_TENSAO"].ToString();

                    if (!Convert.IsDBNull(dr["IDBOBINA_CORRENTE"]))
                        objMedidores.IDBOBINA_CORRENTE = Convert.ToInt32(dr["IDBOBINA_CORRENTE"]);

                    if (!Convert.IsDBNull(dr["DESCRICAO_BOBINA_CORRENTE"]))
                        objMedidores.entidadeBOBINACORRENTE.DESCRICAO = dr["DESCRICAO_BOBINA_CORRENTE"].ToString();

                    if (!Convert.IsDBNull(dr["IDSITUACAO"]))
                        objMedidores.IDSITUACAO = Convert.ToInt32(dr["IDSITUACAO"]);

                    if (!Convert.IsDBNull(dr["DESCRICAO_SITUACAO"]))
                        objMedidores.entidadeSITUACAO.DESCRICAO = dr["DESCRICAO_SITUACAO"].ToString();

                    if (!Convert.IsDBNull(dr["FASE_LIGACAO"]))
                        objMedidores.FASE_LIGACAO = dr["FASE_LIGACAO"].ToString();

                    if (!Convert.IsDBNull(dr["FABRICACAO"]))
                        objMedidores.FABRICACAO = Convert.ToDateTime(dr["FABRICACAO"]);

                    if (!Convert.IsDBNull(dr["MODELO"]))
                        objMedidores.MODELO = dr["MODELO"].ToString();

                    if (!Convert.IsDBNull(dr["NUMERO_DIGITOS"]))
                        objMedidores.NUMERO_DIGITOS = Convert.ToInt32(dr["NUMERO_DIGITOS"]);


                    lstMedidores.Add(objMedidores);
                }
                return lstMedidores;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public IList<entidadeMedidores> SelectMax(entidadeMedidores objMedidores)
        {
            dalMedidores dalMedidores = null;

            var lstMedidores = new List<entidadeMedidores>();
            DataTable dt = null;

            try
            {
                dalMedidores = new dalMedidores();
                dt = dalMedidores.SelectMax(objMedidores);

                foreach (DataRow dr in dt.Rows)
                {
                    objMedidores = new entidadeMedidores();

                    if (!Convert.IsDBNull(dr["ID"]))
                        objMedidores.ID = Convert.ToInt32(dr["ID"]);


                    lstMedidores.Add(objMedidores);
                }
                return lstMedidores;
            }
            catch (Exception)
            {
                throw;
            }
        }

    }
}
