From d003e4c42794673ebd38c404faa45e958bf8ef42 Mon Sep 17 00:00:00 2001 From: carlos Date: Fri, 22 Dec 2023 14:38:41 -0600 Subject: [PATCH] insert y select de productos agregada --- .gitignore | 45 +++++- .vs/compabetov2/v17/.suo | Bin 75776 -> 79872 bytes database/DAO.cs | 131 ++++++++++++++---- database/modelos/Categoria.cs | 22 +++ database/modelos/Producto.cs | 28 ++++ database/service.cs | 33 +++++ .../DesignTimeResolveAssemblyReferences.cache | Bin 139 -> 139 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 3803 -> 3803 bytes ...compabetov2.csproj.AssemblyReference.cache | Bin 12367 -> 12367 bytes 9 files changed, 228 insertions(+), 31 deletions(-) create mode 100644 database/modelos/Categoria.cs create mode 100644 database/modelos/Producto.cs diff --git a/.gitignore b/.gitignore index a4d6d9c..eea4eeb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,44 @@ -.vs/ \ No newline at end of file +# Carpeta de salida de compilación +/bin/ +/obj/ + +# Archivos temporales +*.user +*.userosscache +*.suo +*.cache +*.vscode +*.vs + +# Carpeta de paquetes NuGet +packages/ + +# Carpeta de dependencias de proyectos .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# Carpeta de configuración de Visual Studio +.vs2019/ +.vscode/ + +# Carpeta de salida de publicación +publish/ + +# Archivos de registro y crash dumps +*.log +*.swp +*.swo +*.mdmp + +# Archivos de configuración +*.suo +*.user +*.userosscache +*.sln.docstates + +# Carpeta de caché de Rider +.idea/ +*.suo +*.user +*.userosscache diff --git a/.vs/compabetov2/v17/.suo b/.vs/compabetov2/v17/.suo index c3aa8c0f61b01429e0ccf74200e0b218b3987b9e..594b135018151d75ce1d8743fb07f3952e8ecc4d 100644 GIT binary patch delta 4234 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 diff --git a/database/DAO.cs b/database/DAO.cs index 9f079cd..eaab0c8 100644 --- a/database/DAO.cs +++ b/database/DAO.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using compabetov2.database; +using compabetov2.database.modelos; namespace compabetov2.database { @@ -16,38 +17,46 @@ namespace compabetov2.database var db_conexion = new Conexion(); try { - SQLiteConnection conexion = db_conexion.get_connection(); - conexion.Open(); + + using (SQLiteConnection conexion = db_conexion.get_connection()) { + conexion.Open(); - string sql = "SELECT usuario, contra FROM Login WHERE usuario = @param0"; - SQLiteCommand command = new SQLiteCommand(sql, conexion); - command.Parameters.AddWithValue($"@param{0}", usuario); - SQLiteDataReader reader = command.ExecuteReader(); + string sql = "SELECT usuario, contra FROM Login WHERE usuario = @param0"; + SQLiteCommand command = new SQLiteCommand(sql, conexion); + command.Parameters.AddWithValue($"@param{0}", usuario); + SQLiteDataReader reader = command.ExecuteReader(); - if (reader.HasRows) - { - while (reader.Read()) + if (reader.HasRows) { - if (reader["contra"].Equals(contra)) + while (reader.Read()) { - return true; - } - else - { - MessageBox.Show("Usuario o contraseña incorrectos"); - return false; + if (reader["contra"].Equals(contra)) + { + conexion.Close(); + return true; + } + else + { + MessageBox.Show("Usuario o contraseña incorrectos"); + conexion.Close(); + return false; + } } + MessageBox.Show("Usuario o contraseña incorrectos"); + conexion.Close(); + return false; + } + else + { + MessageBox.Show("Usuario o contraseña incorrectos"); + conexion.Close(); + return false; } - MessageBox.Show("Usuario o contraseña incorrectos"); - return false; - } - else - { - MessageBox.Show("Usuario o contraseña incorrectos"); - return false; - } + } } + + catch (SQLiteException ex) { if (ex.Message.Contains("no such table")) @@ -65,6 +74,61 @@ namespace compabetov2.database } } + public static SQLiteDataReader conseguirProductosDAO() + { + SQLiteDataReader reader = null; + var db_conexion = new Conexion(); + try + { + using (SQLiteConnection conexion = db_conexion.get_connection()) + { + conexion.Open(); + + string sql = "SELECT * FROM Producto INNER JOIN Categoria ON Producto.fk_idcategoria = Categoria.idcategoria"; + SQLiteCommand command = new SQLiteCommand(sql, conexion); + reader = command.ExecuteReader(); + + return reader; + } + } + catch (SQLiteException ex) { + MessageBox.Show(ex.Message); + return reader; + } + } + + public static bool insertarProductoDAO(Producto producto) + { + var db_conexion = new Conexion(); + try + { + using (SQLiteConnection conexion = db_conexion.get_connection()) + { + conexion.Open(); + + string sql = "INSERT INTO Producto (nombre, descripcion, precio, stock, idcategoria) "+ + "VALUES (@nombre, @descripcion, @precio, @stock, @idcategoria)"; + using (SQLiteCommand command = new SQLiteCommand(sql, conexion)) + { + command.Parameters.AddWithValue("@nombre", producto.nombre); + command.Parameters.AddWithValue("@descripcion", producto.descripcion); + command.Parameters.AddWithValue("@precio", producto.precion); + command.Parameters.AddWithValue("@stock", producto.stock); + command.Parameters.AddWithValue("@idcategoria", producto.categoria.idCategoria); + int filasAfectadas = command.ExecuteNonQuery(); + + if(filasAfectadas > 0) { return true; } + else { return false; } + } + } + } + catch (SQLiteException ex) + { + MessageBox.Show(ex.Message); + return false; + } + } + private static void crearDB() { var db_conexion = new Conexion(); @@ -74,15 +138,22 @@ namespace compabetov2.database conexion.Open(); string[] consultas = new string[] { - "DROP TABLE IF EXISTS Empleado", "DROP TABLE IF EXISTS Login", + "DROP TABLE IF EXISTS Empleado", + "DROP TABLE IF EXISTS Producto", + "DROP TABLE IF EXISTS Categoria", - "CREATE TABLE Empleado (idempleado INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT, "+ - "apellido TEXT, calle TEXT, fecha_contratacion TEXT, colonia TEXT, cp TEXT, no_ext TEXT" + - "no_int TEXT, referencia TEXT, fecha_nac TEXT, telefono TEXT, activo INTEGER)", + "CREATE TABLE Empleado (idempleado INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT NOT NULL, "+ + "apellido TEXT NOT NULL, calle TEXT NOT NULL, fecha_contratacion TEXT NOT NULL, colonia TEXT NOT NULL, cp TEXT NOT NULL, no_ext TEXT NOT NULL" + + "no_int TEXT NOT NULL, referencia TEXT NOT NULL, fecha_nac TEXT NOT NULL, telefono TEXT NOT NULL, activo INTEGER NOT NULL)", - "CREATE TABLE Login (idlogin INTEGER PRIMARY KEY AUTOINCREMENT, tipo TEXT, usuario TEXT, "+ - "contra TEXT, fk_idempleado INTEGER, FOREIGN KEY (fk_idempleado) REFERENCES Empleado (idempleado))", + "CREATE TABLE Login (idlogin INTEGER PRIMARY KEY AUTOINCREMENT, tipo TEXT NOT NULL, usuario TEXT NOT NULL, "+ + "contra TEXT NOT NULL, fk_idempleado INTEGER NOT NULL, FOREIGN KEY (fk_idempleado) REFERENCES Empleado (idempleado))", + + "CREATE TABLE Categoria (idcategoria INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT NOT NULL, descripcion TEXT NOT NULL)", + + "CREATE TABLE Producto (idproducto INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT NOT NULL, descripcion TEXT NOT NULL, "+ + "precio DECIMAL(10, 2) NOT NULL, stock INTEGER NOT NULL, fk_idcategoria INTEGER NOT NULL, FOREIGN KEY (fk_idcategoria) REFERENCES Categoria (idcategoria))", "INSERT INTO Empleado ( nombre, apellido, calle, fecha_contratacion, colonia, cp, no_ext, referencia, fecha_nac, telefono, activo) VALUES('jefe', '', '', '', '', '', '', '', '', '', 0);", "INSERT INTO Login ( tipo, usuario, contra, fk_idempleado) VALUES('admin', 'admin', '12345', 1);" diff --git a/database/modelos/Categoria.cs b/database/modelos/Categoria.cs new file mode 100644 index 0000000..c44dc3a --- /dev/null +++ b/database/modelos/Categoria.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace compabetov2.database.modelos +{ + internal class Categoria + { + public int idCategoria; + public string nombre; + public string descricion; + + public Categoria(int idCategoria, string nombre = "", string descricion = "") + { + this.idCategoria = idCategoria; + this.nombre = nombre; + this.descricion = descricion; + } + } +} diff --git a/database/modelos/Producto.cs b/database/modelos/Producto.cs new file mode 100644 index 0000000..842cab7 --- /dev/null +++ b/database/modelos/Producto.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace compabetov2.database.modelos +{ + internal class Producto + { + public int idProducto; + public string nombre; + public string descripcion; + public decimal precion; + public int stock; + public Categoria categoria; + + public Producto( string nombre, string descripcion, decimal precion, Categoria categoria, int stock = 0, int idProducto = 0) + { + this.idProducto = idProducto; + this.nombre = nombre; + this.descripcion = descripcion; + this.precion = precion; + this.stock = stock; + this.categoria = categoria; + } + } +} diff --git a/database/service.cs b/database/service.cs index 178f20d..dc46f39 100644 --- a/database/service.cs +++ b/database/service.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Data.SQLite; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -14,5 +15,37 @@ namespace compabetov2.database { return DAO.iniciarSesionDAO(usuario.nombreUsuario, usuario.contra); } + + public static List conseguirProductos() + { + List productos = new List(); + + SQLiteDataReader reader = DAO.conseguirProductosDAO(); + + while (reader.Read()) + { + Categoria categoria = new Categoria( + (int)reader["idcategoria"], + reader["nombre"].ToString(), + reader["descripcion"].ToString()); + + Producto producto = new Producto( + reader["nombre"].ToString(), + reader["descripcion"].ToString(), + (decimal)reader["precio"], + categoria, + (int)reader["stock"], + (int)reader["idproducto"]); + + productos.Add(producto); + } + + return productos; + } + + public static bool insertarProducto(Producto producto) + { + return DAO.insertarProductoDAO(producto); + } } } diff --git a/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/obj/Debug/DesignTimeResolveAssemblyReferences.cache index 10a1a652211a8c8e47c50a8ce093068129af4b02..4382aa9fb887a8e407ce43095d41dbb07cdd8c24 100644 GIT binary patch delta 30 lcmeBX>}H%$BEFv?Eo1Uk4h9AWMy@gwJp(;s17kx=1^|cj2XX)a delta 30 lcmeBX>}H%$BCdY)c){eW91IK$j9g_VdIoyN2F8Y#3;>hQ2nYZG diff --git a/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index d36806ba7f12ff2d52895bde342fc5aa01ee11b3..328fd89eb0ce6e49cb724c289e61296786c55f6c 100644 GIT binary patch delta 406 zcmcaDds}vbHb-%OX;E@&Owr^G?2;3G#Nqsj*|rGw1|)R_OwyD0GxAR6W)y)dm<$qh zVw6S|Xke5<71+<7!#T;EX)W;gWX}rEQYG3oLLT4 zU delta 406 zcmcaDds}vbHb-!NX;E@&Owi;F?2;3G#Nqsj*|rGw1|)R_OwyD0GxAR6W)y)dm<$qh zVw6S|Xke5<71+<7!#T;EX)W;gWX}rEQYG3oLLT4 zUtI!1!DIl0l5h!X#fBK delta 102 zcmX?~a6VzeJ&xe~(xT+ln4rn^yi%JO%~(+cCNUaJ4q)foJdN!k8(d;@J+A@_oCnk= UJ-I+kX!8}pN>tI!1!DIl0e0ymDF6Tf