示例#1
0
 /// <summary>
 /// Metodo que elimina el registro de la base de datos que determina si el usuario quiere notificaciones por correo
 /// </summary>
 /// <param name="id_usuario">Id del usuario al que se desea eliminar el registro</param>
 /// <returns>true si elimina existosamente, false en caso de error</returns>
 public Boolean EliminarNotificacion(int id_usuario)
 {
     try
     {
         con = new ConexionBase();
         con.Conectar();
         comm             = new NpgsqlCommand("eliminar_notificacion", con.SqlConexion);
         comm.CommandType = CommandType.StoredProcedure;
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, id_usuario);
         pgread = comm.ExecuteReader();
         pgread.Read();
         Boolean resp = pgread.GetBoolean(0);
         con.Desconectar();
         return(resp);
     }
     catch (NpgsqlException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (Exception e)
     {
         con.Desconectar();
         throw e;
     }
 }
示例#2
0
        /// <summary>
        /// Clase provisional para buscar usuario.
        /// </summary>
        /// <param name="id_usuario">id del usuario</param>
        /// <returns>El usuario cuyo id sea igual al parametro</returns>
        public Usuario Buscar_Usuario(int id_usuario)
        {
            Usuario Usuario = new Usuario();

            try
            {
                con = new ConexionBase();
                con.Conectar();
                comm             = new NpgsqlCommand("consultarusuariosoloid", con.SqlConexion);
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, id_usuario);
                NpgsqlDataReader pgread = comm.ExecuteReader();

                //Se recorre los registros devueltos.
                if (pgread.Read())
                {
                    Usuario.NombreUsuario = pgread.GetString(0);
                    Usuario.Correo        = pgread.GetString(1);
                }
                con.Desconectar();
                return(Usuario);
            }
            catch (NpgsqlException e)
            {
                con.Desconectar();
                throw e;
            }
            catch (Exception e)
            {
                con.Desconectar();
                throw e;
            }
        }
示例#3
0
 /// <summary>
 /// Metodo que elimina un item existente de un itinerario existente
 /// </summary>
 /// <param name="it">item del cual se elimina el lugar turistico</param>
 /// <param name="lt">item a eliminar del itinerario</param>
 /// <returns>true si se elimino el item exitosamente, false en caso de error</returns>
 public Boolean EliminarItem_It(string tipo, int idit, int iditem)
 {
     try
     {
         con = new ConexionBase();
         con.Conectar();
         comm             = new NpgsqlCommand("del_item_it", con.SqlConexion);
         comm.CommandType = CommandType.StoredProcedure;
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, tipo);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, iditem);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, idit);
         pgread = comm.ExecuteReader();
         pgread.Read();
         Boolean resp = pgread.GetBoolean(0);
         con.Desconectar();
         return(resp);
     }
     catch (NpgsqlException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (InvalidCastException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (Exception e)
     {
         con.Desconectar();
         throw e;
     }
 }
示例#4
0
 /// <summary>
 /// Metodo que modifica un itinerario de la base de datos
 /// </summary>
 /// <param name="it">el itinerario a modificar</param>
 /// <returns>true si modifica existosamente, false en caso de error</returns>
 public Itinerario ModificarItinerario(Itinerario it)
 {
     try
     {
         con = new ConexionBase();
         con.Conectar();
         comm             = new NpgsqlCommand("mod_itinerario", con.SqlConexion);
         comm.CommandType = CommandType.StoredProcedure;
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, it.Id);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, it.Nombre);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Date, it.FechaInicio);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Date, it.FechaFin);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, it.IdUsuario);
         pgread = comm.ExecuteReader();
         pgread.Read();
         con.Desconectar();
         return(it);
     }
     catch (NpgsqlException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (InvalidCastException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (Exception e)
     {
         con.Desconectar();
         throw e;
     }
 }
示例#5
0
        /// <summary>
        /// Activar o desactivar la visibilidad del itinerario en el calendario
        /// </summary>
        /// <param name="idusuario">id del usuario al cual le pertenecen los itinerarios</param>
        /// <param name="iditinerario">id del itinerario a Activar/Desactivar</param>
        /// <param name="visible">parametro que determina si se activa(true) o desactiva(false) el itinerario en el calendario</param>
        /// <returns>true si se Activo/Desactivo exitosamente, false de lo contrario</returns>
        public Boolean SetVisible(int idusuario, int iditinerario, Boolean visible)
        {
            Boolean visible_sql = false;

            try
            {
                con = new ConexionBase();
                con.Conectar();
                comm             = new NpgsqlCommand("setVisible", con.SqlConexion);
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, idusuario);
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Boolean, visible);
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, iditinerario);
                pgread = comm.ExecuteReader();
                pgread.Read();
                visible_sql = pgread.GetBoolean(0);
                con.Desconectar();
                return(visible_sql);
            }
            catch (NpgsqlException sql)
            {
                con.Desconectar();
                throw sql;
            }
            catch (InvalidCastException cast)
            {
                con.Desconectar();
                throw cast;
            }
            catch (Exception e)
            {
                con.Desconectar();
                throw e;
            }
        }
示例#6
0
 /// <summary>
 /// Metodo que modifica si el registro de notificaciones por correo  de la base de datos
 /// </summary>
 /// <param name="id_usuario">Id del usuario al que se desea modificar las notificaciones</param>
 /// <param name="correo">Variable que determina si se desea recibir o no, notificaciones por correo</param>
 /// <returns>True si modifica existosamente, false en caso de error</returns>
 public bool ModificarNotificacion(int id_usuario, bool correo)
 {
     try
     {
         con = new ConexionBase();
         con.Conectar();
         comm             = new NpgsqlCommand("modificar_notificacion", con.SqlConexion);
         comm.CommandType = CommandType.StoredProcedure;
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, id_usuario);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Boolean, correo);
         //La siguiente linea determina si se desea recibir notificaciones push, en caso de implementarlo.
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Boolean, true);
         pgread = comm.ExecuteReader();
         con.Desconectar();
         return(true);
     }
     catch (NpgsqlException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (InvalidCastException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (Exception e)
     {
         con.Desconectar();
         throw e;
     }
 }
示例#7
0
        /// <summary>
        /// Metodo para consultar el id del usuario a través de su nombre de usuario
        /// </summary>
        /// <param name="nombreUsuario">Nombre de usuario</param>
        /// <exception cref="NpgsqlException">Ocurrio un error al buscar en la base de datos</exception>
        /// <exception cref="Exception">Se desconoce la excepcion</exception>
        /// <returns>Id del usuario, si retorna -1 es que no existe</returns>
        public int ConsultarIdDelUsuario(string nombreUsuario)
        {
            int id;

            id = 0;
            try
            {
                conexion.Conectar();
                ConexionBase  con  = new ConexionBase();
                NpgsqlCommand comm = new NpgsqlCommand("consultarusuariosolonombre", conexion.SqlConexion);
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, nombreUsuario);
                NpgsqlDataReader pgread = comm.ExecuteReader();

                while (pgread.Read())
                {
                    id = pgread.GetInt32(0);
                }

                return(id);
            }
            catch (NpgsqlException e)
            {
                throw new BaseDeDatosExcepcion(e);
            }
            catch (Exception e)
            {
                return(-1);
            }
            finally
            {
                conexion.Desconectar();
            }
        }
示例#8
0
        /// <summary>
        /// Consulta si se desea recibir notificaciones por correo.
        /// </summary>
        /// <param name="id_usuario">Id del usuario al que se desea verificar si desea notificaciones por correo..</param>
        /// <returns>Retorna True en caso que se desee notificaciones y False en caso contrario</returns>
        public bool ConsultarNotificacion(int id_usuario)
        {
            try
            {
                con = new ConexionBase();
                con.Conectar();
                comm             = new NpgsqlCommand("consultar_notificaciones", con.SqlConexion);
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, id_usuario);
                pgread = comm.ExecuteReader();

                if (pgread.Read())
                {
                    return(pgread.GetBoolean(0));
                }
                con.Desconectar();
                return(false);
            }
            catch (NpgsqlException e)
            {
                con.Desconectar();
                throw e;
            }
            catch (System.InvalidOperationException e)
            {
                con.Desconectar();
                throw e;
            }
            catch (Exception e)
            {
                con.Desconectar();
                throw e;
            }
        }
示例#9
0
 /// <summary>
 /// Metodo que agrega un lugar turistico existente a un itinerario existente
 /// </summary>
 /// <param name="it">itinerario al cual se le agrega el lugar turistico</param>
 /// <param name="lt">lugar turistico a agregar en el itinerario</param>
 /// <returns>true si se agrego el lugar turistico exitosamente, false en caso de error</returns>
 public Boolean AgregarItem_It(string tipo, int idit, int iditem, DateTime fechaini, DateTime fechafin)
 {
     try
     {
         con = new ConexionBase();
         con.Conectar();
         if ((tipo == "Lugar Turistico") || (tipo == "Actividad") || (tipo == "Evento"))
         {
             if (tipo == "Lugar Turistico")
             {
                 comm = new NpgsqlCommand("add_lugar_it", con.SqlConexion);
             }
             if (tipo == "Actividad")
             {
                 comm = new NpgsqlCommand("add_actividad_it", con.SqlConexion);
             }
             if (tipo == "Evento")
             {
                 comm = new NpgsqlCommand("add_evento_it", con.SqlConexion);
             }
         }
         else
         {
             con.Desconectar();
             return(false);
         }
         comm.CommandType = CommandType.StoredProcedure;
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, iditem);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, idit);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Date, fechaini);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Date, fechafin);
         pgread = comm.ExecuteReader();
         pgread.Read();
         Boolean resp = pgread.GetBoolean(0);
         con.Desconectar();
         return(resp);
     }
     catch (NpgsqlException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (Exception e)
     {
         con.Desconectar();
         throw e;
     }
 }
示例#10
0
        /// <summary>
        ///  Consulta los lugares turisticos por nombre, o similiares.
        /// </summary>
        /// <param name="busqueda">Palabra cuya similitud se busca en el nombre de la actividad que se esta buscando.</param>
        /// <returns>Retorna una lista con las actividades que tengan coincidencia.</returns>
        public List <Actividad> ConsultarActividades(string busqueda)
        {
            List <Actividad> list_actividades = new List <Actividad>();

            try
            {
                con = new ConexionBase();
                con.Conectar();
                comm             = new NpgsqlCommand("consultar_actividades", con.SqlConexion);
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, busqueda);
                pgread = comm.ExecuteReader();

                //Se recorre los registros devueltos.
                while (pgread.Read())
                {
                    Actividad actividad = new Actividad();
                    actividad.Id     = pgread.GetInt32(0);
                    actividad.Nombre = pgread.GetString(1);
                    //actividad.Foto = pgread.GetString(2);


                    list_actividades.Add(actividad);
                }

                con.Desconectar();
                return(list_actividades);
            }
            catch (NpgsqlException e)
            {
                con.Desconectar();
                throw e;
            }
            catch (Exception e)
            {
                con.Desconectar();
                throw e;
            }
        }
示例#11
0
 /// <summary>returns
 /// Metodo que agrega en la base de datos un nuevo itinerario
 /// </summary>
 /// <param name="it">el itinerario a agregar</param>
 /// <returns>true si agrega existosamente, false en caso de error</>
 public Itinerario AgregarItinerario(Itinerario it)
 {
     try
     {
         con = new ConexionBase();
         con.Conectar();
         comm             = new NpgsqlCommand("add_itinerario", con.SqlConexion);
         comm.CommandType = CommandType.StoredProcedure;
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, it.Nombre);
         comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, it.IdUsuario);
         pgread = comm.ExecuteReader();
         pgread.Read();
         it.Id     = pgread.GetInt16(0);
         it.Nombre = pgread.GetString(1);
         con.Desconectar();
         return(it);
     }
     catch (NpgsqlException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (InvalidCastException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (NullReferenceException e)
     {
         con.Desconectar();
         throw e;
     }
     catch (Exception e)
     {
         con.Desconectar();
         throw e;
     }
 }
示例#12
0
        //----------------------------------------------------------------------------------------------
        /// <summary>
        /// Metodo que agrega en la base de datos si el usuario desea recibir notificaciones por correo
        /// </summary>
        /// <param name="id_usuario">Id del usuario a que se le agregara el registro</param>
        /// <returns>true si agrega existosamente, false en caso de error</>
        public bool AgregarNotificacion(int id_usuario)
        {
            bool rs;

            try
            {
                con = new ConexionBase();
                con.Conectar();
                comm             = new NpgsqlCommand("agregar_notificacion", con.SqlConexion);
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, id_usuario);
                pgread = comm.ExecuteReader();
                pgread.Read();
                rs = pgread.GetBoolean(0);
                con.Desconectar();
                return(rs);
            }
            catch (NpgsqlException e)
            {
                con.Desconectar();
                throw e;
            }
            catch (InvalidCastException e)
            {
                con.Desconectar();
                throw e;
            }
            catch (NullReferenceException e)
            {
                con.Desconectar();
                throw e;
            }
            catch (Exception e)
            {
                con.Desconectar();
                throw e;
            }
        }
示例#13
0
        /// <summary>
        /// Consulta los lugares turisticos por nombre, o similiares.
        /// </summary>
        /// <param name="busqueda">Palabra cuya similitud se busca en el nombre del lugar turistico que se esta buscando.</param>
        /// <returns>Retorna una lista con los lugares turisticos que tengan coincidencia.</returns>
        public List <LugarTuristico> ConsultarLugarTuristico(string busqueda)
        {
            List <LugarTuristico> list_lugaresturisticos = new List <LugarTuristico>();

            try
            {
                con = new ConexionBase();
                con.Conectar();
                comm             = new NpgsqlCommand("consultar_lugarturistico", con.SqlConexion);
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, busqueda);
                pgread = comm.ExecuteReader();

                //Se recorre los registros devueltos.
                while (pgread.Read())
                {
                    LugarTuristico lugarTuristico = new LugarTuristico();
                    lugarTuristico.Id     = pgread.GetInt32(0);
                    lugarTuristico.Nombre = pgread.GetString(1);

                    list_lugaresturisticos.Add(lugarTuristico);
                }

                con.Desconectar();
                return(list_lugaresturisticos);
            }
            catch (NpgsqlException e)
            {
                con.Desconectar();
                throw e;
            }
            catch (Exception e)
            {
                con.Desconectar();
                throw e;
            }
        }
示例#14
0
        /// <summary>
        /// Consulta los eventos por nombre, o similiares.
        /// </summary>
        /// <param name="busqueda">Palabra cuya similitud se busca en el nombre del evento que se esta buscando.</param>
        /// <returns>Retorna una lista con los eventos que tengan coincidencia.</returns>
        public List <Evento> ConsultarEventos(string busqueda, DateTime fechainicio, DateTime fechafin)
        {
            List <Evento> list_eventos = new List <Evento>();

            try
            {
                con = new ConexionBase();
                con.Conectar();
                comm             = new NpgsqlCommand("consultar_eventos", con.SqlConexion);
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, busqueda);
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Date, fechainicio);
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Date, fechafin);
                pgread = comm.ExecuteReader();

                //Se recorre los registros devueltos.
                while (pgread.Read())
                {
                    Evento evento = new Evento(pgread.GetInt32(0), pgread.GetString(1));
                    evento.Foto = pgread.GetString(2);
                    list_eventos.Add(evento);
                }

                con.Desconectar();
                return(list_eventos);
            }
            catch (NpgsqlException e)
            {
                con.Desconectar();
                throw e;
            }
            catch (Exception e)
            {
                con.Desconectar();
                throw e;
            }
        }
示例#15
0
        /// <summary>
        /// Metodo que agrega eventos y retorna ecenario de exito y fallo
        /// </summary>
        /// <param name="evento"> Objeto del tipo Evento</param>
        /// <returns> Respuesta de Agregar con exito</returns>
        ///

        public int AgregarEvento(Evento evento)
        {
            int respuesta = -1;

            try
            {
                comando             = new NpgsqlCommand("InsertarEvento", conexion.SqlConexion);
                comando.CommandType = CommandType.StoredProcedure;
                //Aqui registro los valores
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, evento.Nombre);
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, evento.Descripcion);
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, evento.Precio);
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Timestamp, evento.FechaInicio);
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Timestamp, evento.FechaFin);
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Time, evento.HoraInicio.Hour + ":" + evento.HoraInicio.Minute + "00");
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Time, evento.HoraFin.Hour + ":" + evento.HoraFin.Minute + "00");
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, evento.Foto);
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, evento.IdLocalidad);
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, evento.IdCategoria);
                read = comando.ExecuteReader();
                read.Read();
                respuesta = read.GetInt32(0);
            }
            catch (BaseDeDatosExcepcion e)
            {
                e.NombreMetodos.Add(this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name);
                e.Mensaje = "Problemas en la base de datos, en Peticion Insertar Evento";
                throw e;
            }

            finally
            {
                conexion.Desconectar();
            }
            return(respuesta);
        }
        /**
         * <summary>Metodo para agregar una localidad a la base de datos</summary>
         * **/


        public int AgregarLocalidadEvento(LocalidadEvento lEvento)
        {
            int respuesta = 0;

            try
            {
                conexion.Comando = conexion.SqlConexion.CreateCommand();
                comando          = new NpgsqlCommand("InsertarLocalidad", conexion.SqlConexion);

                comando.CommandType = CommandType.StoredProcedure;
                //Aqui se registran los valores de localidad evento
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, lEvento.Nombre);
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, lEvento.Descripcion);
                comando.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Varchar, lEvento.Coordenadas);
                read = comando.ExecuteReader();

                try
                {
                    if (read.Read())
                    {
                        Int32.TryParse(read.GetValue(0).ToString(), out respuesta);
                    }
                    if (respuesta == 0)
                    {
                        throw new ItemNoEncontradoException($"No se encontro el evento con el nombre {lEvento.Nombre}");
                    }
                }
                catch (System.InvalidCastException e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            catch (BaseDeDatosExcepcion e)
            {
                e.NombreMetodos.Add(this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name);
                throw e;
            }

            finally {
                conexion.Desconectar();
            }

            return(respuesta);
        }
示例#17
0
        public List <Itinerario> ConsultarItinerariosCorreo(int id_usuario)
        {
            List <Itinerario> itinerarios = new List <Itinerario>(); // Lista de itinerarios de un usuario

            try
            {
                con = new ConexionBase();
                con.Conectar();
                comm             = new NpgsqlCommand("consultar_itinerarios_correo", con.SqlConexion);
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.AddWithValue(NpgsqlTypes.NpgsqlDbType.Integer, id_usuario);
                NpgsqlDataReader pgread = comm.ExecuteReader();
                int auxiliar            = 0;
                //Recorremos los registros devueltos
                while (pgread.Read())
                {
                    Itinerario iti;
                    if (!pgread.IsDBNull(2) && (!pgread.IsDBNull(3)))
                    {
                        iti = new Itinerario(pgread.GetInt32(0), pgread.GetString(1), pgread.GetDateTime(2), pgread.GetDateTime(3), id_usuario, true);
                    }
                    else
                    {
                        iti = new Itinerario(pgread.GetInt32(0), pgread.GetString(1), id_usuario, true);
                    }

                    //Se revisa si el registro de itinerario en la base ya se encuentra en la lista de itinerarios del usuario
                    if (itinerarios.Count == 0)
                    {
                        itinerarios.Add(iti);
                    }
                    foreach (Itinerario itinerario in itinerarios)
                    {
                        if (itinerario.Id == iti.Id)
                        {
                            auxiliar = 1;
                        }
                    }
                    if (auxiliar != 1)
                    {
                        itinerarios.Add(iti);
                    }
                    auxiliar = 0;

                    //Agregamos los eventos, actividades y lugares a la lista correspondiente
                    //Si existe lugar turistico en este registro
                    if (!pgread.IsDBNull(4))
                    {
                        dynamic lugar = new System.Dynamic.ExpandoObject();
                        lugar.Nombre      = pgread.GetString(4);
                        lugar.Descripcion = pgread.GetString(5);
                        lugar.Tipo        = "Lugar Turistico";

                        itinerarios[itinerarios.Count - 1].Items_agenda.Add(lugar);
                    }

                    //Si existe actividad en este registro
                    if (!pgread.IsDBNull(6))
                    {
                        dynamic actividad = new System.Dynamic.ExpandoObject();
                        actividad.Nombre      = pgread.GetString(6);
                        actividad.Descripcion = pgread.GetString(7);
                        actividad.Tipo        = "Actividad";

                        itinerarios[itinerarios.Count - 1].Items_agenda.Add(actividad);
                    }

                    //Si existe eventos en este registro.
                    if (!pgread.IsDBNull(8))
                    {
                        dynamic evento = new System.Dynamic.ExpandoObject();
                        evento.Nombre      = pgread.GetString(8);
                        evento.Descripcion = pgread.GetString(9);
                        evento.Tipo        = "Evento";

                        itinerarios[itinerarios.Count - 1].Items_agenda.Add(evento);
                    }
                }
                con.Desconectar();
                return(itinerarios);
            }
            catch (NpgsqlException sql)
            {
                con.Desconectar();
                throw sql;
            }
            catch (ArgumentException arg)
            {
                con.Desconectar();
                throw arg;
            }
            catch (InvalidCastException cast)
            {
                con.Desconectar();
                throw cast;
            }
            catch (Exception e)
            {
                con.Desconectar();
                throw e;
            }
        }
示例#18
0
        public int ConsultarUsuarioCorreo(Usuario usuario)
        {
            try
            {
                conexion.Conectar();
                conexion.Comando             = conexion.SqlConexion.CreateCommand();
                conexion.Comando.CommandText = "ConsultarUsuarioCorreo";
                conexion.Comando.CommandType = CommandType.StoredProcedure;

                conexion.Comando.Parameters.Add(AgregarParametro(NpgsqlDbType.Varchar, usuario.Correo));
                conexion.Comando.Parameters.Add(AgregarParametro(NpgsqlDbType.Varchar, usuario.Clave));
                leerDatos = conexion.Comando.ExecuteReader();
                if (leerDatos.Read())
                {
                    usuario.Id = leerDatos.GetInt32(0);
                }
                else
                {
                    usuario.Id = 0;
                }

                leerDatos.Close();
            }
            catch (NpgsqlException e)
            {
                throw e;
            }
            catch (FormatException e)
            {
                throw e;
            }
            finally
            {
                conexion.Desconectar();
            }
            return(usuario.Id);
        }
示例#19
0
        /// <summary>
        /// Se encarga de buscar todas las notificaciones de eventos, actividad y lugares turisticos
        /// con una semana de intervalo, es decir, buscar esos eventos pendientes entre hoy a una semana,
        /// con el fin de enviarlo por correo.
        /// </summary>
        /// <param name="id_usuario">Id del usuario a quien se le buscara la información</param>
        /// <returns>Devuelve "Exitoso" en caso de no haber incovenientes, y una excepcion en caso contrario</returns>
        public string EnviarCorreo(int id_usuario)
        {
            Usuario           usuario;
            List <Itinerario> itinerarios; // Lista de itinerarios de un usuario
            string            Body_Correo = "";
            //PeticionLogin peticion;
            //peticion = new PeticionLogin();

            string lugarturistico = "";
            string actividad      = "";
            string evento         = "";

            try
            {
                usuario     = Buscar_Usuario(id_usuario);
                usuario.Id  = id_usuario;
                itinerarios = ConsultarItinerariosCorreo(id_usuario);

                foreach (Itinerario itinerario in itinerarios)
                {
                    foreach (dynamic objeto in itinerario.Items_agenda)
                    {
                        switch (objeto.Tipo)
                        {
                        case "Lugar Turistico":
                            lugarturistico = lugarturistico + "{0}" +
                                             objeto.Nombre + "{0}" +
                                             objeto.Descripcion;
                            break;

                        case "Actividad":
                            actividad = actividad + "{0}" +
                                        objeto.Nombre + "{0}" +
                                        objeto.Descripcion;;
                            break;

                        case "Evento":
                            evento = evento + "{0}" +
                                     objeto.Nombre + "{0}" +
                                     objeto.Descripcion;
                            break;
                        }
                    }
                }

                Body_Correo = string.Format(" Hola " + usuario.NombreUsuario + ", {0}   Este es un correo para recordarte tu agenda en CocoTrip {0}" +
                                            "     Contenido de su itinerario:{0}" +
                                            "       Lugares Turisticos agendados:{0}" + lugarturistico + "{0}{0}{0}" +
                                            "       Actividades agendadas:{0}" + actividad + "{0}{0}{0}" +
                                            "       Eventos agendadas:{0}" + evento + "{0}{0}{0}", Environment.NewLine);


                MailMessage mail       = new MailMessage();
                SmtpClient  SmtpServer = new SmtpClient("smtp.gmail.com");
                mail.From = new MailAddress("*****@*****.**");
                mail.To.Add(usuario.Correo);
                mail.Subject = "Recordatorio de itinerario CocoTrip.";
                mail.Body    = Body_Correo;

                SmtpServer.Port        = 587;
                SmtpServer.Credentials = new System.Net.NetworkCredential("cocotrip17", "arepascocotrip");
                SmtpServer.EnableSsl   = true;

                SmtpServer.Send(mail);
            }
            catch (NpgsqlException)
            {
                con.Desconectar();
                throw new HttpResponseException(HttpStatusCode.InternalServerError);
            }
            catch (InvalidCastException)
            {
                con.Desconectar();
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            catch (ArgumentNullException)
            {
                con.Desconectar();
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            catch (HttpResponseException)
            {
                con.Desconectar();
                throw new HttpResponseException(HttpStatusCode.InternalServerError);
            }
            catch (Exception e)
            {
                con.Desconectar();
                throw e;
            }
            return("Exitoso");
        }