public Boolean AgregarPatente(TuCuento.Entidades.Patente oPatente)
        {
            Boolean bResp = false;

            try
            {
                int nCod_Patente = 0;

                if (Servicios.TraerParametro(7))
                    nCod_Patente = Servicios.nValor1;
                else
                    throw new System.ArgumentException("No se pudo obtener el siguiente número de Patente", "nCod_Patente");

                //Inserto la Patente
                string strCmd = "SPTCADD_tcPatente";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Patente", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = nCod_Patente;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDesc_Patente", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oPatente.sDesc_Patente;
                prm.Size = 250;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oPatente.nHab;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nNodo", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oPatente.nNodo;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nNodo_Padre", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oPatente.nNodo_Padre;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sUrl", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oPatente.sUrl;
                prm.Size = 500;
                cmd.Parameters.Add(prm);
                
                cmds.Add(cmd);

                bResp = Servicios.ejecutarTransaccion(cmds);

            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public static Boolean PersistirEncuesta(TuCuento.Entidades.Encuesta oEncuesta)
        {
            Boolean bResp = false;
            DataTable dtEncuesta = new DataTable();
            TuCuento.DAL.Encuesta_DAL oDAL = new TuCuento.DAL.Encuesta_DAL();

            if (oDAL.AgregarEncuesta(oEncuesta))
                bResp = true;
            
            return bResp;
        }
        public Boolean AgregarDominio(TuCuento.Entidades.Dominio oDominio)
        {
            Boolean bResp = false;

            try
            {
                int nCod_Dominio = 0;

                if (Servicios.TraerParametro(4))
                    nCod_Dominio = Servicios.nValor1;
                else
                    throw new System.ArgumentException("No se pudo obtener el siguiente número de Dominio", "nCod_Dominio");

                //Inserto la Dominio
                string strCmd = "SPTCADD_tcDominio";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Dominio", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = nCod_Dominio;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDesc_Dominio", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oDominio.sDescripcion;
                prm.Size = 50;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oDominio.nHab;
                cmd.Parameters.Add(prm);
                
                cmds.Add(cmd);

                bResp = Servicios.ejecutarTransaccion(cmds);

            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public static Boolean Persistir(TuCuento.Entidades.Entidad oEntidad)
        {
            Boolean bResp = false;
            DataTable dtEntidad = new DataTable();
            TuCuento.DAL.Entidad_DAL oDAL = new TuCuento.DAL.Entidad_DAL();

            TuCuento.DAL.Entidad_DAL.TraerEntidad(oEntidad.nCod_Entidad, -1, dtEntidad);

            if (dtEntidad.Rows.Count == 0)
            {
                if (oDAL.AgregarEntidad(oEntidad))
                    bResp = true;
            }
            else
            {
                if (oDAL.ActualizarEntidad(oEntidad))
                    bResp = true;
            }

            return bResp;
        }
        public static Boolean Persistir(TuCuento.Entidades.Familia oFamilia)
        {
            Boolean bResp = false;
            DataTable dtFamilia = new DataTable();
            TuCuento.DAL.Familia_DAL oDAL = new TuCuento.DAL.Familia_DAL();

            TuCuento.DAL.Familia_DAL.TraerFamilia(oFamilia.nCod_Flia, -1, dtFamilia);

            if (dtFamilia.Rows.Count == 0)
            {
                if (oDAL.AgregarFamilia(oFamilia))
                    bResp = true;
            }
            else
            {
                if (oDAL.ActualizarFamilia(oFamilia))
                    bResp = true;
            }

            return bResp;
        }
        public static bool Persistir(TuCuento.Entidades.Historia oHistoria)
        {
            Boolean bResp = false;
            DataTable dtHistoria = new DataTable();
            TuCuento.DAL.Historia_DAL oDAL = new TuCuento.DAL.Historia_DAL();

            TuCuento.DAL.Historia_DAL.TraerHistoria(oHistoria.nCod_Historia, -1, -1, dtHistoria);

            if (dtHistoria.Rows.Count == 0)
            {
                if (oDAL.AgregarHistoria(oHistoria))
                    bResp = true;
            }
            else
            {
                if (oDAL.ActualizarHistoria(oHistoria))
                    bResp = true;
            }

            return bResp;
        }
        public static Boolean Persistir(TuCuento.Entidades.Dominio oDominio)
        {
            Boolean bResp = false;
            DataTable dtDominio = new DataTable();
            TuCuento.DAL.Dominio_DAL oDAL = new TuCuento.DAL.Dominio_DAL();

            TuCuento.DAL.Dominio_DAL.TraerDominio(oDominio.nCod_Dominio, -1, dtDominio);

            if (dtDominio.Rows.Count == 0)
            {
                if (oDAL.AgregarDominio(oDominio))
                    bResp = true;
            }
            else
            {
                if (oDAL.ActualizarDominio(oDominio))
                    bResp = true;
            }

            return bResp;
        }
        public static Boolean Persistir(TuCuento.Entidades.Accion oAccion)
        {
            Boolean bResp = false;
            DataTable dtAccion = new DataTable();
            TuCuento.DAL.Accion_DAL oDAL = new TuCuento.DAL.Accion_DAL();

            TuCuento.DAL.Accion_DAL.TraerAccion(oAccion.nCod_Accion, -1, -1, dtAccion);

            if (dtAccion.Rows.Count == 0)
            {
                if (oDAL.AgregarAccion(oAccion))
                    bResp = true;
            }
            else
            {
                if (oDAL.ActualizarAccion(oAccion))
                    bResp = true;
            }

            return bResp;
        }
        public static Boolean Persistir(TuCuento.Entidades.PreguntaClave oPreguntaClave)
        {
            Boolean bResp = false;
            DataTable dtPreguntaClave = new DataTable();
            TuCuento.DAL.PreguntaClave_DAL oDAL = new TuCuento.DAL.PreguntaClave_DAL();

            TuCuento.DAL.PreguntaClave_DAL.TraerPreguntaClave(oPreguntaClave.nCod_Pregunta, -1, dtPreguntaClave);

            if (dtPreguntaClave.Rows.Count == 0)
            {
                if (oDAL.AgregarPreguntaClave(oPreguntaClave))
                    bResp = true;
            }
            else
            {
                if (oDAL.ActualizarPreguntaClave(oPreguntaClave))
                    bResp = true;
            }

            return bResp;
        }
 public static DataTable TraerMenuUsuario(TuCuento.Entidades.Usuario oUsuario)
 {
     DataTable oMenu = new DataTable();
     TuCuento.DAL.Usuario_DAL.TraerMenuUsuario(oUsuario, oMenu);
     return oMenu;
 }
        public Boolean ActualizarDominio(TuCuento.Entidades.Dominio oDominio)
        {
            Boolean bResp = false;

            try
            {
                string strCmd = "SPTCUPD_tcDominio";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Dominio", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oDominio.nCod_Dominio;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDesc_Dominio", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oDominio.sDescripcion;
                prm.Size = 50;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oDominio.nHab;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                bResp = Servicios.ejecutarTransaccion(cmds);


            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public static Boolean ActualizarPSW(TuCuento.Entidades.Usuario oUsuario)
        {
            Boolean bResp = false;

            TuCuento.DAL.Usuario_DAL oDAL = new TuCuento.DAL.Usuario_DAL();

            oUsuario.sPSW = Encriptar(oUsuario.sPSW);

            bResp = oDAL.ActualizarPSWUsuario(oUsuario);

            return bResp;
        }
        public Boolean AgregarUsuario(TuCuento.Entidades.Usuario oUsuario)
        {
            Boolean bResp = false;

            try
            {
                string strCmd = "SPTCADD_tcUsuario";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@sCod_Usuario", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oUsuario.sCod_Usuario;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@sNombre", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oUsuario.sNombre;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@sApellido", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oUsuario.sApellido;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@sPSW", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oUsuario.sPSW;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oUsuario.nHab;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@sEmail", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oUsuario.sEmail;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@nCod_Pregunta", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oUsuario.Pregunta.nCod_Pregunta;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@sRespuesta", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = (oUsuario.sRespuesta == null ? "" : oUsuario.sRespuesta);
                cmd.Parameters.Add(prm);
                
                cmds.Add(cmd);

                //Agrego las patentes
                foreach (TuCuento.Entidades.Patente oPatente in oUsuario.lstPatentes)
                {
                    strCmd = "SPTCADD_tcPatente_Usuario";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;

                    prm = new SqlParameter("@nCod_Patente", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oPatente.nCod_Patente;
                    cmd.Parameters.Add(prm);

                    prm = new SqlParameter("@sCod_Usuario", SqlDbType.VarChar);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oUsuario.sCod_Usuario;
                    cmd.Parameters.Add(prm);

                    cmds.Add(cmd);
                }

                //Agrego las familias
                foreach (TuCuento.Entidades.Familia oFamilia in oUsuario.lstFamilias)
                {
                    strCmd = "SPTCADD_tcFamilia_Usuario";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;

                    prm = new SqlParameter("@nCod_Flia", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oFamilia.nCod_Flia;
                    cmd.Parameters.Add(prm);

                    prm = new SqlParameter("@sCod_Usuario", SqlDbType.VarChar);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oUsuario.sCod_Usuario;
                    cmd.Parameters.Add(prm);

                    cmds.Add(cmd);
                }

                bResp = Servicios.ejecutarTransaccion(cmds);

            }
            catch (Exception ex)
            {
                bResp = false;
            }

            return bResp;
        }
        public static Boolean TraerFamiliasUsuario(TuCuento.Entidades.Usuario oUsuario, DataTable dtUsuario)
        {
            try
            {
                string strCmd = "SPTCGET_tcFamilia_Usuario";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@sCod_Usuario", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oUsuario.sCod_Usuario;
                prm.Size = 15;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                return Servicios.ejecutarTransaccion(cmds, ref dtUsuario);
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        public Boolean AgregarFamilia(TuCuento.Entidades.Familia oFamilia)
        {
            Boolean bResp = false;

            try
            {
                int nCod_Flia = 0;

                if (Servicios.TraerParametro(8))
                    nCod_Flia = Servicios.nValor1;
                else
                    throw new System.ArgumentException("No se pudo obtener el siguiente número de Familia", "nCod_Flia");

                //Inserto la Familia
                string strCmd = "SPTCADD_tcFamilia";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Flia", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = nCod_Flia;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDesc_Flia", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oFamilia.sDesc_Flia;
                prm.Size = 50;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oFamilia.nHab;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                //Inserto las patentes
                foreach (TuCuento.Entidades.Patente oPatente in oFamilia.lstPatentes)
                {
                    strCmd = "SPTCADD_tcFamilia_Patente";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;
                    
                    prm = new SqlParameter("@nCod_Flia", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = nCod_Flia;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nCod_Patente", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oPatente.nCod_Patente;
                    cmd.Parameters.Add(prm);
                    
                    cmds.Add(cmd);
                }

                bResp = Servicios.ejecutarTransaccion(cmds);

            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public Boolean AgregarEncuesta(TuCuento.Entidades.Encuesta oEncuesta)
        {
            Boolean bResp = false;

            try
            {
                int nId = 0;

                if (Servicios.TraerParametro(9))
                    nId = Servicios.nValor1;
                else
                    throw new System.ArgumentException("No se pudo obtener el siguiente número de Encuesta", "nId");

                //Inserto la Encuesta
                string strCmd = "SPTCADD_tcEncuesta";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nId", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = nId;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@dFechaFin", SqlDbType.DateTime);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEncuesta.dFechaFin;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEncuesta.nHab;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@sTitulo", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEncuesta.sTitulo;
                prm.Size = 80;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@sPregunta", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEncuesta.sPregunta;
                prm.Size = 255;
                cmd.Parameters.Add(prm);
                
                cmds.Add(cmd);

                //Agrego las respuestas
                foreach (TuCuento.Entidades.EncuestaDetalle oDetalle in oEncuesta.lstDetalle)
                {
                    strCmd = "SPTCADD_tcEncuestaDetalle";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;
                    
                    prm = new SqlParameter("@nId", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = nId;
                    cmd.Parameters.Add(prm);

                    prm = new SqlParameter("@nIdRespuesta", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oDetalle.nIdRespuesta;
                    cmd.Parameters.Add(prm);

                    prm = new SqlParameter("@sRespuesta", SqlDbType.VarChar);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oDetalle.sRespuesta;
                    prm.Size = 255;
                    cmd.Parameters.Add(prm);

                    cmds.Add(cmd);
                }

                //Agrego los usuarios asignados
                foreach (TuCuento.Entidades.Usuario oUsuario in oEncuesta.lstUsuario)
                {
                    strCmd = "SPTCADD_tcEncuestaUsuario";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;

                    prm = new SqlParameter("@nId", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = nId;
                    cmd.Parameters.Add(prm);

                    prm = new SqlParameter("@sCod_Usuario", SqlDbType.VarChar);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oUsuario.sCod_Usuario;
                    prm.Size = 15;
                    cmd.Parameters.Add(prm);

                    cmds.Add(cmd);
                }

                bResp = Servicios.ejecutarTransaccion(cmds);

            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
 public static DataTable TraerFamiliasUsuario(TuCuento.Entidades.Usuario oUsuario)
 {
     DataTable oFamilias = new DataTable();
     TuCuento.DAL.Usuario_DAL.TraerFamiliasUsuario(oUsuario, oFamilias);
     return oFamilias;
 }
        public Boolean AgregarEntidad(TuCuento.Entidades.Entidad oEntidad)
        {
            Boolean bResp = false;

            try
            {
                int nCod_Entidad = 0;

                if (Servicios.TraerParametro(1))
                    nCod_Entidad = Servicios.nValor1;
                else
                    throw new System.ArgumentException("No se pudo obtener el siguiente número de entidad", "nCod_Entidad");
                
                //Inserto la entidad
                string strCmd = "SPTCADD_tcEntidad";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Entidad", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = nCod_Entidad;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sNombre", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEntidad.sNombre;
                prm.Size = 50;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDescripcion", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEntidad.sDescripcion;
                prm.Size = 100;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEntidad.nHab;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                foreach (TuCuento.Entidades.EntidadAtributo oAtributo in oEntidad.Atributos)
                {
                    //Inserto los atributos
                    strCmd = "SPTCADD_tcEntidadAtributo";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;

                    prm = new SqlParameter("@nCod_Entidad", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = nCod_Entidad;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@sNombre", SqlDbType.VarChar);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAtributo.sNombre;
                    prm.Size = 50;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@sDescripcion", SqlDbType.VarChar);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAtributo.sDescripcion;
                    prm.Size = 100;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nHab", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAtributo.nHab;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nCod_TipoAtributo", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAtributo.nCod_TipoAtributo;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nCod_EntidadTipo", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAtributo.TipoEntidad.nCod_Entidad;
                    cmd.Parameters.Add(prm);

                    cmds.Add(cmd);
                }
                bResp = Servicios.ejecutarTransaccion(cmds);

            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public Boolean ActualizarEntidad(TuCuento.Entidades.Entidad oEntidad)
        {
            Boolean bResp = false;

            try
            {
                string strCmd = "SPTCUPD_tcEntidad";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Entidad", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEntidad.nCod_Entidad;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sNombre", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEntidad.sNombre;
                prm.Size = 50;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDescripcion", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEntidad.sDescripcion;
                prm.Size = 100;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oEntidad.nHab;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                foreach (TuCuento.Entidades.EntidadAtributo oAtributo in oEntidad.Atributos)
                {
                    //Por cada atributo veo si esta o no, e inserto o actualizo según corresponda
                    DataTable dtAtributo = new DataTable();
                    
                    TraerAtributo(oEntidad.nCod_Entidad, oAtributo.nCod_Atributo, -1, dtAtributo);

                    if (dtAtributo.Rows.Count == 0)
                    {
                        //Inserto el atributo
                        strCmd = "SPTCADD_tcEntidadAtributo";
                        cmd = new SqlCommand(strCmd);
                        cmd.CommandType = CommandType.StoredProcedure;

                        prm = new SqlParameter("@nCod_Entidad", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oEntidad.nCod_Entidad;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@sNombre", SqlDbType.VarChar);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.sNombre;
                        prm.Size = 50;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@sDescripcion", SqlDbType.VarChar);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.sDescripcion;
                        prm.Size = 100;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@nHab", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.nHab;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@nCod_TipoAtributo", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.nCod_TipoAtributo;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@nCod_EntidadTipo", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.TipoEntidad.nCod_Entidad;
                        cmd.Parameters.Add(prm);
                    }
                    else
                    {
                        //Actualizo el atributo
                        strCmd = "SPTCUPD_tcEntidadAtributo";
                        cmd = new SqlCommand(strCmd);
                        cmd.CommandType = CommandType.StoredProcedure;

                        prm = new SqlParameter("@nCod_Entidad", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oEntidad.nCod_Entidad;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@nCod_Atributo", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.nCod_Atributo;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@sNombre", SqlDbType.VarChar);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.sNombre;
                        prm.Size = 50;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@sDescripcion", SqlDbType.VarChar);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.sDescripcion;
                        prm.Size = 100;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@nHab", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.nHab;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@nCod_TipoAtributo", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.nCod_TipoAtributo;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@nCod_EntidadTipo", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oAtributo.TipoEntidad.nCod_Entidad;
                        cmd.Parameters.Add(prm);
                    }

                    cmds.Add(cmd);
                }
                bResp = Servicios.ejecutarTransaccion(cmds);


            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public static Boolean Persistir(TuCuento.Entidades.Cuento oCuento)
        {
            Boolean bResp = false;
            DataTable dtCuento = new DataTable();
            TuCuento.DAL.Cuento_DAL oDAL = new TuCuento.DAL.Cuento_DAL();

            if (oDAL.AgregarCuento(oCuento))
                bResp = true;
            
            return bResp;
        }
    private void CargarDetalleInferencia(TuCuento.Entidades.HistoriaDetInf oDetalle)
    {
        lvCondiciones.DataSource = lstCondiciones;
        lvCondiciones.DataTextField = "sNombre";
        lvCondiciones.DataValueField = "nCod_Condicion";
        lvCondiciones.DataBind();

        lvAcciones.DataSource = lstAcciones;
        lvAcciones.DataTextField = "sNombre";
        lvAcciones.DataValueField = "nCod_Accion";
        lvAcciones.DataBind();

        if (oDetalle != null)
        {
            //Muevo las condiciones
            List<ListItem> elementos = new List<ListItem>();
            foreach (ListItem item in lvCondiciones.Items)
            {
                foreach (TuCuento.Entidades.Condicion oCondicion in oDetalle.Condiciones)
                {
                    if (item.Value == oCondicion.nCod_Condicion.ToString())
                    {
                        elementos.Add(item);
                        lvCondicionesSel.Items.Add(item);
                    }
                }
            }

            lvCondicionesSel.SelectedIndex = -1;

            foreach (ListItem item in elementos)
            {
                lvCondiciones.Items.Remove(item);
            }

            //Muevo la accion
            elementos = new List<ListItem>();
            foreach (ListItem item in lvAcciones.Items)
            {
                foreach (TuCuento.Entidades.Accion oAccion in oDetalle.Accion)
                {
                    if (item.Value == oAccion.nCod_Accion.ToString())
                    {
                        elementos.Add(item);
                        lvAccionesSel.Items.Add(item);
                    }
                }
            }

            lvAccionesSel.SelectedIndex = -1;

            foreach (ListItem item in elementos)
            {
                lvAcciones.Items.Remove(item);
            }

        }
        
    }
 public static DataTable TraerPatentesUsuario(TuCuento.Entidades.Usuario oUsuario)
 {
     DataTable oPatentes = new DataTable();
     TuCuento.DAL.Usuario_DAL.TraerPatentesUsuario(oUsuario, oPatentes);
     return oPatentes;
 }
        public Boolean ActualizarFamilia(TuCuento.Entidades.Familia oFamilia)
        {
            Boolean bResp = false;

            try
            {
                string strCmd = "SPTCUPD_tcFamilia";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Flia", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oFamilia.nCod_Flia;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDesc_Flia", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oFamilia.sDesc_Flia;
                prm.Size = 50;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oFamilia.nHab;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                //Borro todas las patentes asociadas
                strCmd = "SPTCDEL_tcFamilia_Patente";
                cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;

                prm = new SqlParameter("@nCod_Flia", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oFamilia.nCod_Flia;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                //Inserto las patentes
                foreach (TuCuento.Entidades.Patente oPatente in oFamilia.lstPatentes)
                {
                    strCmd = "SPTCADD_tcFamilia_Patente";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;

                    prm = new SqlParameter("@nCod_Flia", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oFamilia.nCod_Flia;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nCod_Patente", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oPatente.nCod_Patente;
                    cmd.Parameters.Add(prm);

                    cmds.Add(cmd);
                }


                bResp = Servicios.ejecutarTransaccion(cmds);


            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public Boolean AgregarAccion(TuCuento.Entidades.Accion oAccion)
        {
            Boolean bResp = false;

            try
            {
                int nCod_Accion = 0;

                if (Servicios.TraerParametro(3))
                    nCod_Accion = Servicios.nValor1;
                else
                    throw new System.ArgumentException("No se pudo obtener el siguiente número de Accion", "nCod_Accion");

                //Inserto la Accion
                string strCmd = "SPTCADD_tcAccion";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Accion", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = nCod_Accion;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sNombre", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.sNombre;
                prm.Size = 50;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDescripcion", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.sDescripcion;
                prm.Size = 100;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.nHab;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nCod_TipoAccion", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.nCod_TipoAccion;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nCod_Dominio", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.nCod_Dominio;
                cmd.Parameters.Add(prm);
                
                cmds.Add(cmd);

                if (oAccion.Hecho != null)
                {
                    strCmd = "SPTCADD_tcAccionHecho";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;
                    
                    prm = new SqlParameter("@nCod_Accion", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = nCod_Accion;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nCod_Entidad", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.Hecho.nCod_Entidad;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nCod_Atributo", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.Hecho.nCod_Atributo;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nValor", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.Hecho.nValor;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@sValor", SqlDbType.VarChar);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.Hecho.sValor;
                    prm.Size = 20;
                    cmd.Parameters.Add(prm);
                    
                    cmds.Add(cmd);
                }

                if (oAccion.Historia != null)
                {
                    strCmd = "SPTCADD_tcAccionHistoria";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;

                    prm = new SqlParameter("@nCod_Accion", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = nCod_Accion;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nCod_Historia", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.Historia.nCod_Historia;
                    cmd.Parameters.Add(prm);

                    cmds.Add(cmd);
                }

                bResp = Servicios.ejecutarTransaccion(cmds);

            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public Boolean ActualizarPreguntaClave(TuCuento.Entidades.PreguntaClave oPreguntaClave)
        {
            Boolean bResp = false;

            try
            {
                string strCmd = "SPTCUPD_tcPreguntaClave";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Pregunta", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oPreguntaClave.nCod_Pregunta;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sPregunta", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oPreguntaClave.sPregunta;
                prm.Size = 100;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oPreguntaClave.nHab;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                bResp = Servicios.ejecutarTransaccion(cmds);


            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public Boolean ActualizarCondicion(TuCuento.Entidades.Condicion oCondicion)
        {
            Boolean bResp = false;

            try
            {
                string strCmd = "SPTCUPD_tcCondicion";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Condicion", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.nCod_Condicion;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sNombre", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.sNombre;
                prm.Size = 50;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDescripcion", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.sDescripcion;
                prm.Size = 100;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.nHab;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nCod_Entidad", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.nCod_Entidad;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nCod_Atributo", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.nCod_Atributo;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nCod_Dominio", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.nCod_Dominio;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                //Primero elimino todos los valores posibles
                //strCmd = "SPTCDEL_tcCondicionValPosible";
                //cmd = new SqlCommand(strCmd);
                //cmd.CommandType = CommandType.StoredProcedure;

                //prm = new SqlParameter("@nCod_Condicion", SqlDbType.Int);
                //prm.Direction = ParameterDirection.Input;
                //prm.Value = oCondicion.nCod_Condicion;
                //cmd.Parameters.Add(prm);

                //cmds.Add(cmd);

                foreach (TuCuento.Entidades.CondicionValPosible oValPosible in oCondicion.lstValPosible)
                {
                    //Consulto si esta o no en la bd y según eso actualizo o inserto
                    DataTable oTabla = new DataTable();

                    TraerValoresPosibles(oCondicion.nCod_Condicion, oValPosible.nCod_ValPosible, oTabla);

                    if (oTabla.Rows.Count > 0)
                    {
                        //Actualizo los valores posibles
                        strCmd = "SPTCUPD_tcCondicionValPosible";
                        cmd = new SqlCommand(strCmd);
                        cmd.CommandType = CommandType.StoredProcedure;

                        prm = new SqlParameter("@nCod_Condicion", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oCondicion.nCod_Condicion;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@nCod_ValPosible", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oValPosible.nCod_ValPosible;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@sValor", SqlDbType.VarChar);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oValPosible.sValor;
                        prm.Size = 255;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@sOperadorLogico", SqlDbType.VarChar);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oValPosible.sOperadorLogico;
                        prm.Size = 20;
                        cmd.Parameters.Add(prm);

                        cmds.Add(cmd);
                    }
                    else
                    {
                        //Inserto los valores posibles
                        strCmd = "SPTCADD_tcCondicionValPosible";
                        cmd = new SqlCommand(strCmd);
                        cmd.CommandType = CommandType.StoredProcedure;

                        prm = new SqlParameter("@nCod_Condicion", SqlDbType.Int);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oCondicion.nCod_Condicion;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@sValor", SqlDbType.VarChar);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oValPosible.sValor;
                        prm.Size = 255;
                        cmd.Parameters.Add(prm);
                        prm = new SqlParameter("@sOperadorLogico", SqlDbType.VarChar);
                        prm.Direction = ParameterDirection.Input;
                        prm.Value = oValPosible.sOperadorLogico;
                        prm.Size = 20;
                        cmd.Parameters.Add(prm);

                        cmds.Add(cmd);
                    }
                }
                bResp = Servicios.ejecutarTransaccion(cmds);


            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public Boolean ActualizarPSWUsuario(TuCuento.Entidades.Usuario oUsuario)
        {
            Boolean bResp = false;

            try
            {
                string strCmd = "SPTCUPD_tcUsuario_Psw";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@sCod_Usuario", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oUsuario.sCod_Usuario;
                cmd.Parameters.Add(prm);

                prm = new SqlParameter("@sPSW", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oUsuario.sPSW;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                bResp = Servicios.ejecutarTransaccion(cmds);

            }
            catch (Exception ex)
            {
                bResp = false;
            }

            return bResp;
        }
        public Boolean AgregarCondicion(TuCuento.Entidades.Condicion oCondicion)
        {
            Boolean bResp = false;

            try
            {
                int nCod_Condicion = 0;

                if (Servicios.TraerParametro(2))
                    nCod_Condicion = Servicios.nValor1;
                else
                    throw new System.ArgumentException("No se pudo obtener el siguiente número de Condicion", "nCod_Condicion");

                //Inserto la Condicion
                string strCmd = "SPTCADD_tcCondicion";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Condicion", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = nCod_Condicion;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sNombre", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.sNombre;
                prm.Size = 50;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDescripcion", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.sDescripcion;
                prm.Size = 100;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.nHab;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nCod_Entidad", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.nCod_Entidad;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nCod_Atributo", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.nCod_Atributo;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nCod_Dominio", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oCondicion.nCod_Dominio;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                foreach (TuCuento.Entidades.CondicionValPosible oValPosible in oCondicion.lstValPosible)
                {
                    //Inserto los valores posibles
                    strCmd = "SPTCADD_tcCondicionValPosible";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;

                    prm = new SqlParameter("@nCod_Condicion", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = nCod_Condicion;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@sValor", SqlDbType.VarChar);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oValPosible.sValor;
                    prm.Size = 255;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@sOperadorLogico", SqlDbType.VarChar);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oValPosible.sOperadorLogico;
                    prm.Size = 20;
                    cmd.Parameters.Add(prm);
                    
                    cmds.Add(cmd);
                }
                bResp = Servicios.ejecutarTransaccion(cmds);

            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public Boolean ActualizarAccion(TuCuento.Entidades.Accion oAccion)
        {
            Boolean bResp = false;

            try
            {
                string strCmd = "SPTCUPD_tcAccion";
                List<SqlCommand> cmds = new List<SqlCommand>();
                SqlCommand cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter prm;

                prm = new SqlParameter("@nCod_Accion", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.nCod_Accion;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sNombre", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.sNombre;
                prm.Size = 50;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@sDescripcion", SqlDbType.VarChar);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.sDescripcion;
                prm.Size = 100;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nHab", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.nHab;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nCod_TipoAccion", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.nCod_TipoAccion;
                cmd.Parameters.Add(prm);
                prm = new SqlParameter("@nCod_Dominio", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.nCod_Dominio;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                //Primero elimino los hijos
                strCmd = "SPTCDEL_tcAccionHistoria";
                cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;

                prm = new SqlParameter("@nCod_Accion", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.nCod_Accion;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                strCmd = "SPTCDEL_tcAccionHecho";
                cmd = new SqlCommand(strCmd);
                cmd.CommandType = CommandType.StoredProcedure;

                prm = new SqlParameter("@nCod_Accion", SqlDbType.Int);
                prm.Direction = ParameterDirection.Input;
                prm.Value = oAccion.nCod_Accion;
                cmd.Parameters.Add(prm);

                cmds.Add(cmd);

                if (oAccion.Hecho != null)
                {
                    strCmd = "SPTCADD_tcAccionHecho";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;

                    prm = new SqlParameter("@nCod_Accion", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.nCod_Accion;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nCod_Entidad", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.Hecho.nCod_Entidad;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nCod_Atributo", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.Hecho.nCod_Atributo;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nValor", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.Hecho.nValor;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@sValor", SqlDbType.VarChar);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.Hecho.sValor;
                    prm.Size = 20;
                    cmd.Parameters.Add(prm);

                    cmds.Add(cmd);
                }

                if (oAccion.Historia != null)
                {
                    strCmd = "SPTCADD_tcAccionHistoria";
                    cmd = new SqlCommand(strCmd);
                    cmd.CommandType = CommandType.StoredProcedure;

                    prm = new SqlParameter("@nCod_Accion", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.nCod_Accion;
                    cmd.Parameters.Add(prm);
                    prm = new SqlParameter("@nCod_Historia", SqlDbType.Int);
                    prm.Direction = ParameterDirection.Input;
                    prm.Value = oAccion.Historia.nCod_Historia;
                    cmd.Parameters.Add(prm);

                    cmds.Add(cmd);
                }
                
                bResp = Servicios.ejecutarTransaccion(cmds);


            }
            catch (Exception excp)
            {
                bResp = false;
            }

            return bResp;
        }
        public static Boolean ActualizarEstado(TuCuento.Entidades.Usuario oUsuario)
        {
            Boolean bResp = false;

            TuCuento.DAL.Usuario_DAL oDAL = new TuCuento.DAL.Usuario_DAL();
            bResp = oDAL.ActualizarEstadoUsuario(oUsuario);
                    
            return bResp;
        }