/// <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(); } }
/// <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(); } }
/// <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(); } }
/// <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); }
/// <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); }
/// <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); }
/// <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(); } }
/// <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); }
/// <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); }
/// <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(); } }