public VisitanteBE AgregarVisitante(XElement dataVisitante)
        {
            ResidenteServiceClient client = new ResidenteServiceClient();
            VisitanteBE visitante =  new VisitanteBE();
            //IDictionary<string, string> lista = new Dictionary<string, string>();

            try
            {
                //IEnumerable<XElement> childList = from el in dataVisitante.Elements() select el;
                //foreach (XElement e in childList)
                //    lista.Add(e.Name.ToString(), e.Value);

                visitante.C_NumDocumento = dataVisitante.Element("C_NumDocumento").Value;
                visitante.C_Nombre = dataVisitante.Element("C_Nombre").Value;
                visitante.D_FecVisita = DateTime.ParseExact(dataVisitante.Element("D_FecVisita").Value,
                        "yyyy-MM-dd", CultureInfo.InvariantCulture);
                visitante.O_ResidenteBE.C_NumDocume = dataVisitante.Element("O_ResidenteBE").Element("C_NumDocume").Value;

                Architects.Dominio.ResidenteBE residente = GetEntity(client.ObtenerResidentePorNroDocumento(visitante.O_ResidenteBE.C_NumDocume));
                visitante.O_ResidenteBE = residente;

                int NewID = objDA.AgregarVisitante(visitante);
                return ObtenerVisitantePorID_JSON(NewID.ToString());
            }
            catch (WebFaultException ex)
            {
                throw ex;
            }
        }
        public Int32 AgregarVisitante(VisitanteBE prmVisitante)
        {
            DbCommand insertCommand = null;

            try
            {
                insertCommand = _db.GetStoredProcCommand("Gestion.USP_INSERT_VISITANTE");
                _db.AddInParameter(insertCommand, "@PV_NumDocumento", DbType.String, prmVisitante.C_NumDocumento);
                _db.AddInParameter(insertCommand, "@PV_Nombre", DbType.String, prmVisitante.C_Nombre);
                _db.AddInParameter(insertCommand, "@PI_IdResidente", DbType.Int32, prmVisitante.O_ResidenteBE.N_IdResidente);
                _db.AddInParameter(insertCommand, "@PD_FecVisita", DbType.DateTime, prmVisitante.D_FecVisita);

                var result = _db.ExecuteScalar(insertCommand);

                return Int32.Parse(result.ToString());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public VisitanteBE[] BuscarVisitantes(string numDocumento, string nombre, DateTime? fechaVisita, int idResidente)
        {
            List<VisitanteBE> Visitantes = new List<VisitanteBE>();
            VisitanteBE visitante = null;
            DbCommand SearchCommand = null;

            try
            {
                SearchCommand = _db.GetStoredProcCommand("Gestion.USP_GET_VISITANTE");
                _db.AddInParameter(SearchCommand, "@pv_NumDocumento", DbType.String, numDocumento);
                _db.AddInParameter(SearchCommand, "@pv_nombre", DbType.String, nombre);
                _db.AddInParameter(SearchCommand, "@pd_FecVisita", DbType.DateTime, fechaVisita);
                _db.AddInParameter(SearchCommand, "@pi_IdResidente", DbType.Int32, idResidente);

                using (IDataReader dataReader = _db.ExecuteReader(SearchCommand))
                {
                    while (dataReader.Read())
                    {
                        visitante = new VisitanteBE();

                        visitante.N_IdVisitante = dataReader.GetInt32(dataReader.GetOrdinal("N_IdVisitante"));
                        visitante.C_NumDocumento = dataReader.GetString(dataReader.GetOrdinal("NroDocVisitante"));
                        visitante.C_Nombre = dataReader.GetString(dataReader.GetOrdinal("NombreVisitante"));
                        visitante.O_ResidenteBE.N_IdResidente = dataReader.GetInt32(dataReader.GetOrdinal("N_IdResidente"));
                        visitante.O_ResidenteBE.C_NumDocume = dataReader.GetString(dataReader.GetOrdinal("NroDocResidente"));
                        visitante.O_ResidenteBE.C_Nombre = dataReader.GetString(dataReader.GetOrdinal("NombreResidente"));
                        visitante.O_ResidenteBE.C_Apellidos = dataReader.GetString(dataReader.GetOrdinal("ApellidosResidente"));
                        visitante.D_FecVisita = dataReader.GetDateTime(dataReader.GetOrdinal("D_FecVisita"));
                        visitante.B_Estado = dataReader.GetBoolean(dataReader.GetOrdinal("B_Estado"));
                        Visitantes.Add(visitante);
                    }
                }

                return Visitantes.ToArray();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public VisitanteBE BuscarVisitantePorNumDocumento_JSON(string numDocumento)
        {
            List<VisitanteBE> listaVisitantes = null;
            VisitanteBE result = null;

            listaVisitantes = new List<VisitanteBE>(objDA.ListarVisitantes());

            var nvis = from l in listaVisitantes
                       where l.C_NumDocumento == numDocumento
                       select l;

            foreach (var item in nvis)
            {
                result = new VisitanteBE();
                result.N_IdVisitante = item.N_IdVisitante;
                result.C_NumDocumento = item.C_NumDocumento;
                result.C_Nombre = item.C_Nombre;
                result.D_FecVisita = item.D_FecVisita;
                result.B_Estado = item.B_Estado;
                result.O_ResidenteBE = item.O_ResidenteBE;
            }

            return result;
        }
        public VisitanteBE ObtenerVisitantePorID_JSON(string visitanteID)
        {
            List<VisitanteBE> listaVisitantes = null;
            VisitanteBE result = null;

            try
            {
                int vlnVisitanteID = Int32.TryParse(visitanteID, out vlnVisitanteID) ? Int32.Parse(visitanteID) : 0;

                if (vlnVisitanteID == 0)
                    throw new WebFaultException<string>("ID de Visitante no existe", HttpStatusCode.InternalServerError);

                listaVisitantes = new List<VisitanteBE>(objDA.ListarVisitantes());

                var nvis = from l in listaVisitantes
                           where l.N_IdVisitante == vlnVisitanteID
                           select l;

                foreach (var item in nvis)
                {
                    result = new VisitanteBE();
                    result.N_IdVisitante = item.N_IdVisitante;
                    result.C_NumDocumento = item.C_NumDocumento;
                    result.C_Nombre = item.C_Nombre;
                    result.D_FecVisita = item.D_FecVisita;
                    result.B_Estado = item.B_Estado;
                    result.O_ResidenteBE = item.O_ResidenteBE;
                }

                return result;
            }
            catch (WebFaultException ex)
            {
                throw ex;
            }
        }
        public VisitanteBE[] ListarVisitantes()
        {
            List<VisitanteBE> Visitantes = new List<VisitanteBE>();
            VisitanteBE visitante = null;

            try
            {
                using (IDataReader dataReader = _db.ExecuteReader("Gestion.USP_LIST_VISITANTE"))
                {
                    while (dataReader.Read())
                    {
                        visitante = new VisitanteBE();

                        visitante.N_IdVisitante = dataReader.GetInt32(dataReader.GetOrdinal("N_IdVisitante"));
                        visitante.C_NumDocumento = dataReader.GetString(dataReader.GetOrdinal("NroDocVisitante"));
                        visitante.C_Nombre = dataReader.GetString(dataReader.GetOrdinal("NombreVisitante"));
                        visitante.O_ResidenteBE.N_IdResidente = dataReader.GetInt32(dataReader.GetOrdinal("N_IdResidente"));
                        visitante.O_ResidenteBE.C_NumDocume = dataReader.GetString(dataReader.GetOrdinal("NroDocResidente"));
                        visitante.O_ResidenteBE.C_Nombre = dataReader.GetString(dataReader.GetOrdinal("NombreResidente"));
                        visitante.O_ResidenteBE.C_Apellidos = dataReader.GetString(dataReader.GetOrdinal("ApellidosResidente"));
                        visitante.D_FecVisita = dataReader.GetDateTime(dataReader.GetOrdinal("D_FecVisita"));
                        visitante.B_Estado = dataReader.GetBoolean(dataReader.GetOrdinal("B_Estado"));
                        Visitantes.Add(visitante);
                    }
                }

                return Visitantes.ToArray();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }