Пример #1
0
        /// <summary>
        /// Método Insertar, Inserta una localidad.
        /// </summary>
        /// <param name="objeto"> Entidad(localidad) a insertar</param>
        public override void Insertar(Entidad objeto)
        {
            try
            {
                localidad = (LocalidadEvento)objeto;
                Conectar();
                Comando             = SqlConexion.CreateCommand();
                Comando.CommandText = "InsertarLocalidad";
                Comando.CommandType = CommandType.StoredProcedure;

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Varchar;
                parametro.Value        = ((LocalidadEvento)localidad).Nombre;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Varchar;
                parametro.Value        = ((LocalidadEvento)localidad).Descripcion;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Varchar;
                parametro.Value        = ((LocalidadEvento)localidad).Coordenadas;
                Comando.Parameters.Add(parametro);

                leerDatos = Comando.ExecuteReader();
                leerDatos.Close();
            }
            catch (NpgsqlException e)
            {
                BaseDeDatosExcepcion ex = new BaseDeDatosExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }
            catch (InvalidCastException e)
            {
                CasteoInvalidoExcepcion ex = new CasteoInvalidoExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                Desconectar();
            }
        }
Пример #2
0
        /// <summary>
        /// Agrea una categoria con sub categoria
        /// </summary>
        /// <param name="categoria"></param>

        /// <exception cref="NombreDuplicadoException"></exception>
        /// <exception cref="BaseDeDatosExcepcion"></exception>
        /// <exception cref="PostgresException"></exception>

        public void AgregarCategoria(Categoria categoria)
        {
            try
            {
                int exitoso = 0;
                conexion.Conectar();
                conexion.Comando             = conexion.SqlConexion.CreateCommand();
                conexion.Comando.CommandText = "m9_agregarsubcategoria";
                conexion.Comando.CommandType = CommandType.StoredProcedure;

                conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Varchar, categoria.Nombre);      //Nombre de la categoria
                conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Varchar, categoria.Descripcion); //descripcion de la categoría
                conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Integer, categoria.Nivel);       //nivel de la categoria
                conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Boolean, true);                  // status de la categoria, en true.


                if (categoria.CategoriaSuperior == 0)
                {
                    conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Integer, DBNull.Value);
                }
                else
                {
                    conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Integer, categoria.CategoriaSuperior);
                }

                exitoso = conexion.Comando.ExecuteNonQuery();
            }

            catch (PostgresException ex)
            {
                throw new NombreDuplicadoException($"Esta Categoria id:{categoria.Id} No se puede agregar con el nombre:{categoria.Nombre} Porque este nombre ya existe");
            }
            catch (NpgsqlException ex)
            {
                BaseDeDatosExcepcion bdException = new BaseDeDatosExcepcion(ex)
                {
                    DatosAsociados = $" ID : {categoria.Id}, ESTATUS: {categoria.Estatus}",
                    Mensaje        = $"Error al momento de agregar la catgoria {categoria.Id}"
                };
                throw bdException;
            }
            finally
            {
                conexion.Desconectar();
            }
        }
Пример #3
0
        /// <summary>
        /// Método Eliminar, Elimina un evento.
        /// </summary>
        /// <param name="objeto"> Entidad(evento) a eliminar</param>
        public override void Eliminar(Entidad objeto)
        {
            try
            {
                evento = (Evento)objeto;
                Conectar();
                Comando             = SqlConexion.CreateCommand();
                Comando.CommandText = "eliminareventoporid";
                Comando.CommandType = CommandType.StoredProcedure;

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Integer;
                parametro.Value        = evento.Id;
                Comando.Parameters.Add(parametro);
                leerDatos = Comando.ExecuteReader();
                leerDatos.Close();
            }
            catch (NpgsqlException e)
            {
                BaseDeDatosExcepcion ex = new BaseDeDatosExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }
            catch (InvalidCastException e)
            {
                CasteoInvalidoExcepcion ex = new CasteoInvalidoExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }

            catch (InvalidOperationException e)
            {
                OperacionInvalidaExcepcion ex = new OperacionInvalidaExcepcion(e);
                ex.NombreMetodos.Add(this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name);
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                Desconectar();
            }
        }
Пример #4
0
        /// <summary>
        /// Obtener el id de una categorida dado el nombre de la misma
        /// </summary>
        /// <param name="categoria"></param>
        /// <exception cref="BaseDeDatosExcepcion"></exception>
        public Categoria ObtenerIdCategoriaPorNombre(Categoria categoria)
        {
            try
            {
                int Superior = 0;
                conexion.Conectar();
                conexion.Comando             = conexion.SqlConexion.CreateCommand();
                conexion.Comando.CommandType = CommandType.StoredProcedure;
                conexion.Comando.CommandText = "m9_devolverid";
                conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Varchar, categoria.Nombre);
                leerDatos = conexion.Comando.ExecuteReader();
                if (leerDatos.Read())
                {
                    Int32.TryParse(leerDatos.GetValue(0).ToString(), out Superior);
                }

                if (Superior == 0)
                {
                    throw new ItemNoEncontradoException($"No se encontro la categoria con el nombre {categoria.Nombre}");
                }

                categoria.Id = Superior;
            }
            catch (NpgsqlException ex)
            {
                BaseDeDatosExcepcion bdException = new BaseDeDatosExcepcion(ex)
                {
                    Mensaje = $"Error al momento de buscar el id de una categoria a partir del nombre"
                };
                throw bdException;
            }
            finally
            {
                conexion.Desconectar();
            }

            return(categoria);
        }
Пример #5
0
        /// <summary>
        /// Método ConsultarLista, consulta todas las localidades y las retorna en una lista.
        /// </summary>
        /// <param name="objeto"> Entidad para utilizar si se desea filtrar la lista</param>
        public override List <Entidad> ConsultarLista(Entidad objeto)
        {
            try
            {
                Conectar();
                Comando             = SqlConexion.CreateCommand();
                Comando.CommandText = "consultarlocalidades";
                Comando.CommandType = CommandType.StoredProcedure;

                leerDatos = Comando.ExecuteReader();
                while (leerDatos.Read())
                {
                    localidad = FabricaEntidad.CrearEntidadLocalidad();
                    ((LocalidadEvento)localidad).Id          = leerDatos.GetInt32(0);
                    ((LocalidadEvento)localidad).Nombre      = leerDatos.GetString(1);
                    ((LocalidadEvento)localidad).Descripcion = leerDatos.GetString(2);
                    ((LocalidadEvento)localidad).Coordenadas = leerDatos.GetString(3);
                    lista.Add(localidad);
                }
                leerDatos.Close();
            }
            catch (NpgsqlException e)
            {
                BaseDeDatosExcepcion ex = new BaseDeDatosExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                Desconectar();
            }

            return(lista);
        }
Пример #6
0
        /// <summary>
        /// Obtener la lista de la categoria
        /// </summary>
        /// <param name="categoria"></param>
        /// <exception cref="BaseDeDatosExcepcion"></exception>

        public IList <Categoria> ObtenerCategorias(Categoria categoria)
        {
            IList <Categoria> listaCategorias = new List <Categoria>();

            try
            {
                conexion.Conectar();
                conexion.Comando             = conexion.SqlConexion.CreateCommand();
                conexion.Comando.CommandType = CommandType.StoredProcedure;
                if (categoria.Id == -1)
                {
                    conexion.Comando.CommandText = "m9_obtenerCategoriaTop";
                }
                else
                {
                    conexion.Comando.CommandText = "m9_obtenerCategoriaNoTop";
                    conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Integer, categoria.Id);
                }

                leerDatos       = conexion.Comando.ExecuteReader();
                listaCategorias = SetListaCategoria();
            }
            catch (NpgsqlException ex)
            {
                BaseDeDatosExcepcion bdException = new BaseDeDatosExcepcion(ex)
                {
                    DatosAsociados = $" ID : {categoria.Id}",
                    Mensaje        = $"Error al momento de buscar las categorias"
                };
                throw bdException;
            }
            finally
            {
                conexion.Desconectar();
            }
            return(listaCategorias);
        }
Пример #7
0
        /// <summary>
        /// Método Insertar, Inserta un evento.
        /// </summary>
        /// <param name="objeto"> Entidad(evento) a insertar</param>
        public override void Insertar(Entidad objeto)
        {
            try
            {
                evento = (Evento)objeto;
                Conectar();
                Comando             = SqlConexion.CreateCommand();
                Comando.CommandText = "InsertarEvento";
                Comando.CommandType = CommandType.StoredProcedure;

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Varchar;
                parametro.Value        = ((Evento)evento).Nombre;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Varchar;
                parametro.Value        = ((Evento)evento).Descripcion;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Double;
                parametro.Value        = ((Evento)evento).Precio;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Timestamp;
                parametro.Value        = ((Evento)evento).FechaInicio;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Timestamp;
                parametro.Value        = ((Evento)evento).FechaFin;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Time;
                parametro.Value        = ((Evento)evento).HoraInicio.Hour + ":" + ((Evento)evento).HoraInicio.Minute + ":"
                                         + ((Evento)evento).HoraInicio.Second;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Time;
                parametro.Value        = ((Evento)evento).HoraFin.Hour + ":" + ((Evento)evento).HoraFin.Minute + ":"
                                         + ((Evento)evento).HoraFin.Second;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Varchar;
                parametro.Value        = ((Evento)evento).Foto;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Integer;
                parametro.Value        = ((Evento)evento).IdLocalidad;
                Comando.Parameters.Add(parametro);

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Integer;
                parametro.Value        = ((Evento)evento).IdCategoria;
                Comando.Parameters.Add(parametro);

                leerDatos = Comando.ExecuteReader();
                leerDatos.Close();
            }
            catch (NpgsqlException e)
            {
                BaseDeDatosExcepcion ex = new BaseDeDatosExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }
            catch (InvalidCastException e)
            {
                CasteoInvalidoExcepcion ex = new CasteoInvalidoExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }

            catch (InvalidOperationException e)
            {
                OperacionInvalidaExcepcion ex = new OperacionInvalidaExcepcion(e);
                ex.NombreMetodos.Add(this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name);
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                Desconectar();
            }
        }
Пример #8
0
        /// <summary>
        /// Método ConsultarPorId, consulta un evento dado su id y lo retorna como una entidad.
        /// </summary>
        /// <param name="objeto"> Entidad que contiene el id del evento a consultar</param>
        public override Entidad ConsultarPorId(Entidad objeto)
        {
            try
            {
                evento = (Evento)objeto;
                Conectar();
                Comando             = SqlConexion.CreateCommand();
                Comando.CommandText = "ConsultarEventoPorIdEvento";
                Comando.CommandType = CommandType.StoredProcedure;

                parametro = new NpgsqlParameter();
                parametro.NpgsqlDbType = NpgsqlDbType.Integer;
                parametro.Value        = evento.Id;
                Comando.Parameters.Add(parametro);

                leerDatos = Comando.ExecuteReader();
                leerDatos.Read();

                DateTime horaInicio = new DateTime();
                horaInicio = horaInicio.AddHours(leerDatos.GetTimeSpan(6).Hours);
                horaInicio = horaInicio.AddMinutes(leerDatos.GetTimeSpan(6).Minutes);
                horaInicio = horaInicio.AddSeconds(leerDatos.GetTimeSpan(6).Seconds);
                DateTime horaFin = new DateTime();
                horaFin = horaFin.AddHours(leerDatos.GetTimeSpan(7).Hours);
                horaFin = horaFin.AddMinutes(leerDatos.GetTimeSpan(7).Minutes);
                horaFin = horaFin.AddSeconds(leerDatos.GetTimeSpan(7).Seconds);

                evento.Id = leerDatos.GetInt32(0);
                ((Evento)evento).Nombre      = leerDatos.GetString(1);
                ((Evento)evento).Descripcion = leerDatos.GetString(2);
                ((Evento)evento).Precio      = leerDatos.GetDouble(3);
                ((Evento)evento).FechaInicio = leerDatos.GetDateTime(4);
                ((Evento)evento).FechaFin    = leerDatos.GetDateTime(5);
                ((Evento)evento).HoraInicio  = horaInicio;
                ((Evento)evento).HoraFin     = horaFin;
                ((Evento)evento).Foto        = leerDatos.GetString(8);
                ((Evento)evento).IdLocalidad = leerDatos.GetInt32(9);
                ((Evento)evento).IdCategoria = leerDatos.GetInt32(10);
                leerDatos.Close();
            }
            catch (NpgsqlException e)
            {
                BaseDeDatosExcepcion ex = new BaseDeDatosExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }
            catch (InvalidCastException e)
            {
                CasteoInvalidoExcepcion ex = new CasteoInvalidoExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }

            catch (InvalidOperationException e)
            {
                OperacionInvalidaExcepcion ex = new OperacionInvalidaExcepcion(e);
                ex.NombreMetodos.Add(this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name);
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                Desconectar();
            }
            return(evento);
        }
Пример #9
0
        /// <summary>
        /// Metodo ConsultarLista, consulta todos los eventos.
        /// </summary>
        /// <param name="objeto"> Entidad para utilizar en la consulta</param>
        /// <returns></returns>
        public override List <Entidad> ConsultarLista(Entidad objeto)
        {
            lista = new List <Entidad>();
            try
            {
                Conectar();
                Comando             = SqlConexion.CreateCommand();
                Comando.CommandText = "ConsultarEventos";
                Comando.CommandType = CommandType.StoredProcedure;

                leerDatos = Comando.ExecuteReader();
                while (leerDatos.Read())
                {
                    evento = FabricaEntidad.CrearEntidadEvento();

                    DateTime horaInicio = new DateTime();

                    horaInicio = horaInicio.AddHours(leerDatos.GetTimeSpan(6).Hours);
                    horaInicio = horaInicio.AddMinutes(leerDatos.GetTimeSpan(6).Minutes);
                    horaInicio = horaInicio.AddSeconds(leerDatos.GetTimeSpan(6).Seconds);

                    DateTime horaFin = new DateTime();

                    horaFin = horaFin.AddHours(leerDatos.GetTimeSpan(7).Hours);
                    horaFin = horaFin.AddMinutes(leerDatos.GetTimeSpan(7).Minutes);
                    horaFin = horaFin.AddSeconds(leerDatos.GetTimeSpan(7).Seconds);

                    ((Evento)evento).Id          = leerDatos.GetInt32(0);
                    ((Evento)evento).Nombre      = leerDatos.GetString(1);
                    ((Evento)evento).Descripcion = leerDatos.GetString(2);
                    ((Evento)evento).Precio      = leerDatos.GetDouble(3);
                    ((Evento)evento).FechaInicio = leerDatos.GetDateTime(4);
                    ((Evento)evento).FechaFin    = leerDatos.GetDateTime(5);
                    ((Evento)evento).HoraInicio  = horaInicio;
                    ((Evento)evento).HoraFin     = horaFin;
                    ((Evento)evento).Foto        = leerDatos.GetString(8);
                    ((Evento)evento).IdLocalidad = leerDatos.GetInt32(9);
                    ((Evento)evento).IdCategoria = leerDatos.GetInt32(10);
                    lista.Add(evento);
                }
            }
            catch (NpgsqlException e)
            {
                BaseDeDatosExcepcion ex = new BaseDeDatosExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }
            catch (InvalidCastException e)
            {
                CasteoInvalidoExcepcion ex = new CasteoInvalidoExcepcion(e);
                ex.NombreMetodos = this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name;
                throw ex;
            }

            catch (InvalidOperationException e)
            {
                OperacionInvalidaExcepcion ex = new OperacionInvalidaExcepcion(e);
                ex.NombreMetodos.Add(this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name);
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                Desconectar();
            }
            return(lista);
        }
Пример #10
0
        /// <summary>
        /// Modifica los datos de una categoria
        /// </summary>
        /// <param name="categoria"></param>
        /// <exception cref="PostgresException"></exception>
        /// <exception cref="HijoConDePendenciaException"></exception>
        /// <exception cref="NombreDuplicadoException"></exception>
        /// <exception cref="BaseDeDatosExcepcion"></exception>
        public void ModificarCategoria(Categoria categoria)
        {
            int exitoso = 0;

            try
            {
                conexion.Conectar();
                conexion.Comando             = conexion.SqlConexion.CreateCommand();
                conexion.Comando.CommandText = "m9_ModificarCategoria";
                conexion.Comando.CommandType = CommandType.StoredProcedure;
                PeticionCategoria peticion   = new PeticionCategoria();
                IList <Categoria> Lcategoria = peticion.ObtenerCategoriaPorId(categoria);



                if (Lcategoria.First <Categoria>().Nivel == categoria.Nivel)
                {
                    conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Integer, categoria.Id);
                    conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Varchar, categoria.Nombre);
                    conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Varchar, categoria.Descripcion);
                    conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Integer, categoria.Nivel);
                }
                else
                {
                    //categories = listaCategorias.Where(s => s.Id == id).First();
                    IList <Categoria> Listacategoria = peticion.ObtenerTodasLasCategorias();
                    var hijos = Listacategoria.Where(item => item.CategoriaSuperior == categoria.Id).ToList();
                    if (hijos.Count == 0)
                    {
                        conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Integer, categoria.Id);
                        conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Varchar, categoria.Nombre);
                        conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Varchar, categoria.Descripcion);
                        conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Integer, categoria.Nivel);
                    }
                    else
                    {
                        throw new HijoConDePendenciaException($"Esta categoria id:{categoria.Id} nombre:{categoria.Nombre} tiene hijos");
                    }
                }
                if (categoria.CategoriaSuperior == 0)
                {
                    conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Integer, DBNull.Value);
                }
                else
                {
                    conexion.Comando.Parameters.AddWithValue(NpgsqlDbType.Integer, categoria.CategoriaSuperior);
                }
                exitoso = conexion.Comando.ExecuteNonQuery();
            }

            catch (PostgresException ex)
            {
                throw new NombreDuplicadoException($"Esta Categoria id:{categoria.Id} No se puede agregar con el nombre:{categoria.Nombre} Porque este nombre ya existe");
            }

            catch (NpgsqlException ex)
            {
                BaseDeDatosExcepcion bdException = new BaseDeDatosExcepcion(ex)
                {
                    DatosAsociados = $" ID : {categoria.Id}, NOMBRE : {categoria.Nombre}, DESCRIPCION : {categoria.Descripcion}, CATEGORIASUPERIOR : {categoria.CategoriaSuperior}, NIVEL : {categoria.Nivel} ",
                    Mensaje        = $"Error al momento de actualizar la catgoria {categoria.Id}"
                };
                throw bdException;
            }
            finally
            {
                conexion.Desconectar();
            }
        }