/*public Empleado ConsultarCargoNuevo(Cargo entidad)
        {
            Empleado _empleado = new Empleado();

            try
            {
                SqlParameter[] arParms = new SqlParameter[1];

                arParms[0] = new SqlParameter("@NombreCargo", SqlDbType.VarChar);
                arParms[0] = entidad.Nombre;

                DbDataReader reader = SqlHelper.ExecuteNonQuery
                    (_conexion.GetConnection(), "ConsultarCargoNuevo", arParms);

               if(reader.Read())
                {
                    _empleado.Cargo = (string)reader["Idcargo"];

                }

               return _empleado;

            }
            catch (SqlException e)
            {
                throw new Exception(e.ToString());
            }
            catch (Exception e)
            {
                throw new Exception(e.ToString());
            }
        }*/
        public Empleado ConsultarPorCodigo(Empleado emp)
        {
            Empleado _empleado = new Empleado();

            //_empleado.SueldoBase = float.Parse(reader["SueldoBase"].ToString());// (float)reader["SueldoBase"];

            try
            {
                SqlParameter[] arParms = new SqlParameter[1];

                arParms[0] = new SqlParameter("@Id", SqlDbType.Int);

                arParms[0].Value = emp.Id;

                DbDataReader reader = SqlHelper.ExecuteReader
                    (_conexion.GetConnection(), "ConsultarEmpleadoCodigo", arParms);

                if (reader.Read())
                {

                    Direccion _direccion = new Direccion();

                    EstadoEmpleado _estadoEmpleado = new EstadoEmpleado();

                    Cargo _cargo = new Cargo();

                    _empleado.Cedula = (int)reader["CIEmpleado"];

                    _empleado.Nombre = (string)reader["Nombre"];

                    _empleado.Apellido = (string)reader["Apellido"];

                    _empleado.Cuenta = (string)reader["NumCuenta"];

                    _empleado.FechaNacimiento = (DateTime)reader["FechaNac"];

                    _empleado.SueldoBase = float.Parse(reader["SueldoBase"].ToString());
                    //(float)reader["SueldoBase"];

                    _estadoEmpleado.Nombre = (string)reader["EstadoEmpleado"];

                    _cargo.Nombre = (string)reader["Expr1"];

                    _direccion.Avenida = (string)reader["Avenida"];

                    _direccion.Calle = (string)reader["Calle"];

                    _direccion.Ciudad = (string)reader["Ciudad"];

                    _direccion.Edif_Casa = (string)reader["EdifCasa"];

                    _direccion.Piso_apto = (string)reader["PisoApto"];

                    _direccion.Urbanizacion = (string)reader["Urbanizacion"];

                    _empleado.Direccion = _direccion;

                    _empleado.EstadoEmpleado = _estadoEmpleado;

                    _empleado.CargoEmpleado = _cargo;

                }
            }
            catch (SqlException e)
            {
                throw new ConsultarEmpleadoBDException("Error SQL consultando en la Base de datos", e);
            }
            catch (Exception e)
            {
                throw new ConsultarEmpleadoBDException("Error consultando en la Base de datos", e);
            }

            return _empleado;
        }
        /*Descripcion: Consultar los diferentes estados de los usuarios(Activos, Inactivo, etc)
              * que existente en la tabla EstadoEmpleado
              *Consulta el Store procedure ConsultarEstado
              */
        public IList<EstadoEmpleado> ConsultarTodosEstadosEmpleado()
        {
            IList<EstadoEmpleado> estado = new List<EstadoEmpleado>();
            DbDataReader reader = SqlHelper.ExecuteReader(_conexion.GetConnection(), "ConsultarEstado");
            while (reader.Read())
            {
                EstadoEmpleado estadoempleado = new EstadoEmpleado();
                estadoempleado.Nombre = (string)reader["Nombre"];
                estadoempleado.IdEstadoEmpleado = (int)reader["ID"];
                estado.Add(estadoempleado);
            }

            return estado;
        }
        /*Descripcion: Consultar los diferentes estados de los usuarios(Activos, Inactivo, etc) 
         * que existente en la tabla Cargos
         *Ingresa en la interfax (drowListaCargo) todos los elemnetos de los formularios
         *agregar y modificar
         */

        public void ConsultarEstados()
        {
            // IList<Core.LogicaNegocio.Entidades.Entidad> estados = null;
            IList<Core.LogicaNegocio.Entidades.EstadoEmpleado> estados = new List<Core.LogicaNegocio.Entidades.EstadoEmpleado>();
            Core.LogicaNegocio.Entidades.EstadoEmpleado estado = new EstadoEmpleado();
            try
            {
                DropDownList e = new DropDownList();

                //Core.AccesoDatos.SqlServer.DAOCargoSQLServer conex = new Core.AccesoDatos.SqlServer.DAOCargoSQLServer();

                Core.LogicaNegocio.Comandos.ComandoEmpleado.ConsultarEstadoEmpleado consultarestadoempleado; //objeto del comando Ingresar.

                //fábrica que instancia el comando Ingresar.
                consultarestadoempleado = Core.LogicaNegocio.Fabricas.FabricaComandosEmpleado.CrearComandoConsultarEstados();
                estados = consultarestadoempleado.Ejecutar();

                /* for (int i = 0; i < estados.Count; i++)
                 {
                     estado.Add((Core.LogicaNegocio.Entidades.EstadoEmpleado)estados[i]);
                 }
                 */

                _vista.SeleccionEstado.Items.Clear();
                _vista.SeleccionEstado.Items.Add("--");
                _vista.SeleccionEstado.Items[0].Value = "0";
                _vista.SeleccionEstado.DataSource = estados;
                _vista.SeleccionEstado.DataTextField = "Nombre";
                _vista.SeleccionEstado.DataValueField = "IdEstadoEmpleado";
                _vista.SeleccionEstado.DataBind();
            }
            catch (WebException e)
            {
                // _vista.Pintar("0002", "Error consultando cargos", "Error 0002", e.ToString());
                // _vista.DialogoVisible = true;//Aqui se maneja la excepcion en caso de que de error la seccion Web
            }
            catch (Exception e)
            {
                //_vista.Pintar("0002", "Error consultando cargos", "Error 0002", e.ToString());
                //_vista.DialogoVisible = true;//Aqui se maneja la excepcion en caso de que de error la seccion Web
            }
        }