using System; using System.Collections.Generic; using System.Data.SQLite; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using compabetov2.database; using compabetov2.database.modelos; namespace compabetov2.database { internal class service { public static bool iniciarSesion(Usuario usuario) { return DAO.iniciarSesionDAO(usuario.nombreUsuario, usuario.contra); } public static LoginModel conseguirInicioSesion(string usuario) { SQLiteDataReader reader = DAO.conseguirInicioSesionDAO(usuario); while (reader.Read()) { return new LoginModel( reader["usuario"].ToString(), "", reader["tipo"].ToString() ); } return null; } public static bool crearLogin(LoginModel loginModel, int idEmpleado) { return DAO.crearLoginDAO(loginModel, idEmpleado); } public static List conseguirProductos() { List productos = new List(); SQLiteDataReader reader = DAO.conseguirProductosDAO(); while (reader.Read()) { Categoria categoria = new Categoria(); Producto producto = new Producto( int.Parse(reader["idproducto"].ToString()), reader["nombre"].ToString(), reader["descripcion"].ToString(), decimal.Parse(reader["precio"].ToString()), reader["img"].ToString(), int.Parse(reader["stock"].ToString()), categoria); productos.Add(producto); } return productos; } public static bool insertarProducto(Producto producto) { return DAO.insertarProductoDAO(producto); } public static bool editarProducto(Producto producto) { return DAO.editarProductoDAO(producto); } public static bool eliminarProducto(Producto producto) { return DAO.eliminarProductoDAO(producto); } public static bool insertarCliente(Cliente cliente) { return DAO.insertarClienteDAO(cliente); } public static bool eliminarCliente(Cliente cliente) { return DAO.eliminarClienteDAO(cliente); } public static List conseguirCliente() { List clientes = new List(); SQLiteDataReader reader = DAO.conseguirClientesDAO(); while (reader.Read()) { Cliente cliente = new Cliente( (int)reader["idCliente"], reader["nombres"].ToString(), reader["apellidos"].ToString(), reader["calle"].ToString(), reader["colonia"].ToString(), reader["cp"].ToString(), reader["no_ext"].ToString(), reader["no_int"].ToString(), reader["referencia"].ToString(), reader["telefono"].ToString(), reader["telefono_extra"].ToString() ); clientes.Add(cliente); } return clientes; } public static bool insertarEmpleado(Empleado empleado) { return DAO.insertarEmpleadoDAO(empleado); } public static List conseguirEmpleados() { List empleados = new List(); using (SQLiteDataReader reader = DAO.conseguirEmpleadosDAO()) { while (reader.Read()) { long fkIdLoginTemp = reader.GetInt64(14); int fkIdLogin = Convert.ToInt32(fkIdLoginTemp); long id = reader.GetInt64(0); Empleado empleado = new Empleado( Convert.ToInt32(id), reader["nombre"].ToString(), reader["apellidos"].ToString(), reader["calle"].ToString(), reader["fecha_contratacion"].ToString(), reader["estado"].ToString(), reader["colonia"].ToString(), reader["cp"].ToString(), reader["no_ext"].ToString(), reader["no_int"].ToString(), reader["referencia"].ToString(), reader["fecha_nac"].ToString(), reader["telefono"].ToString(), reader["img"].ToString(), fkIdLogin ) ; empleados.Add(empleado); } return empleados; } } public static bool aumentarStock(List stockNuevo) { return DAO.aumentarStockDAO(stockNuevo); } public static bool eliminarEmpleado(Empleado empleado) { return DAO.eliminarEmpleadoDAO(empleado); } public static bool actualizarEmpleado(Empleado empleado) { return DAO.actualizarEmpleadoDAO(empleado); } public static bool verificarExistenciaLogin(LoginModel loginModel) { return DAO.verificarExistenciaLoginDAO(loginModel); } public static bool eliminarLogin(Empleado empleado) { return DAO.eliminarLoginDAO(empleado); } public static bool modificarContra(Empleado empleado, string contra) { return DAO.modificarContraDAO(empleado, contra); } public static List conseguirMerma() { List mermas = new List(); SQLiteDataReader reader = DAO.conseguirMermaDAO(); while (reader.Read()) { Merma merma = new Merma( reader.GetInt64(0), reader.GetString(1), reader.GetString(2), reader.GetString(3) ); mermas.Add(merma); } return mermas; } public static bool crearVentaDAO(VentaModel venta, List detalleVentas, List importes) { return DAO.crearVentaDAO(venta, detalleVentas,importes); } public static bool devolverImporte(List importes) { return DAO.devolverImporteDAO(importes); } public static bool insertarMerma(Merma merma) { return DAO.insertarMermaDAO(merma); } public static bool eliminarMerma(Merma merma) { return DAO.eliminarMermaDAO(merma); } public static bool actualizarMerma(Merma merma) { return DAO.actualizarMermaDAO(merma); } public static bool crearCuenta(Cuenta cuenta, List detalleCuentas, List importes) { return DAO.crearCuentaDAO(cuenta, detalleCuentas, importes); } public static List conseguirCuentaDAO() { List cuentas = new List(); SQLiteDataReader reader = DAO.conseguirCuentaDAO(); while(reader.Read()) { long idCuenta = reader.GetInt64(0); long total = reader.GetInt64(1); string fecha = reader["fecha"].ToString(); string estado = reader["estado"].ToString(); string descripcion = reader["descripcion"].ToString(); string cliente = reader["cliente"].ToString(); Cuenta cuenta = new Cuenta( (int) total, fecha, estado, descripcion, cliente, (int)idCuenta ); cuentas.Add(cuenta); } return cuentas; } public static List conseguirDetalleCuante(int idCuenta) { List detallesCuentas = new List(); SQLiteDataReader reader = DAO.conseguirDetalleCuanteDAO(idCuenta); while (reader.Read()) { int idVariaante = (int)reader.GetInt64(0); decimal precioCompra = reader.GetOrdinal("precioCompra"); DetalleCuentaModel detalleCuenta = new DetalleCuentaModel( new Variante(idVariaante, reader["nombre"].ToString(),0,(int)reader.GetInt64(2),"",(int)reader.GetInt64(3), precioCompra), (int)reader.GetInt64(4) ); detallesCuentas.Add(detalleCuenta); } return detallesCuentas; } public static List conseguirImportesCuenta(int idCuenta) { List importes = new List(); SQLiteDataReader reader = DAO.conseguirImportesCuentaDAO(idCuenta); while (reader.Read()) { int idImporte = (int)reader.GetInt64(1); DetalleImporteCuenta importe = new DetalleImporteCuenta( idImporte, (int)reader.GetInt64(2),//cantidad (int)reader.GetDecimal(3),// precio (int)reader.GetInt64(4)//fk_cuenta ); importes.Add(importe); } return importes; } public static bool cancelarCuenta(int idCuenta) { return DAO.cancelarCuentaDAO(idCuenta); } public static bool saldarCuenta(Cuenta cuenta, List detallesCuentas, List importes) { return DAO.saldarCuentaDAO(cuenta, detallesCuentas, importes); } /*public static Dictionary filtrarVentaFechaMes(DateTime fecha) { Dictionary estadisticas = new Dictionary(); SQLiteDataReader reader = DAO.filtrarVentaFechaMesDAO(fecha); string formatoFecha = "dd/MM/yyyy h:mm:ss tt"; decimal totalDia = 0; decimal totalMes = 0; List ventas = new List(); while (reader.Read()) { VentaModel venta = new VentaModel( reader.GetDecimal(2), (int)reader.GetInt64(0), reader.GetString(1) ); DateTime fechaVenta = DateTime.ParseExact(venta.fecha, formatoFecha, CultureInfo.InvariantCulture); if (fecha.Day == fechaVenta.Day) { totalDia += venta.total; } totalMes += venta.total; ventas.Add(venta); } estadisticas.Add("ventasDia", totalDia); estadisticas.Add("ventasMes", totalMes); MessageBox.Show($"{totalDia} -- {totalMes}"); return estadisticas; }*/ public static bool crearEnvio(Envio envio, List detallesEnvio, List importes) { return DAO.crearEnvio(envio, detallesEnvio,importes); } public static List> conseguirEnvio() { List> envios = new List>(); SQLiteDataReader reader = DAO.conseguirEnvioDAO(); while (reader.Read()) { Dictionary dict = new Dictionary(); decimal total = reader.GetDecimal(6); Envio envio = new Envio( (int)reader.GetInt64(0), reader.GetString(1), reader.GetString(2), reader.GetString(3), reader.GetString(4), reader.GetString(5), reader.GetString(7), total ) ; dict.Add("envio", envio); List importes = new List(); SQLiteDataReader readerImporte = DAO.conseguirImporteEnvio(envio.id); while (readerImporte.Read()) { decimal precio = readerImporte.GetDecimal(3); importes.Add(new DetalleImporteEnvio( (int)readerImporte.GetInt64(1),//id (int)readerImporte.GetInt64(2),//cantidad precio,//precio (int)readerImporte.GetInt64(4)//fk_envio )); } dict.Add("importes",importes); envios.Add(dict); } return envios; } public static List conseguirDetalleEnvio(int idEnvio) { List detallesEnvio = new List(); SQLiteDataReader reader = DAO.conseguirDetalleEnvioDAO(idEnvio); while (reader.Read()) { int idVariante = (int)reader.GetInt64(0); decimal precioCompra = reader.GetOrdinal("precioCompra"); DetalleEnvioModel detalleEnvio = new DetalleEnvioModel( idEnvio, new Variante(idVariante, reader["nombre"].ToString(),0,(int)reader.GetInt64(2),"", (int)reader.GetInt64(3), precioCompra),//fkproducto (int)reader.GetInt64(4)//cantidad ); detallesEnvio.Add(detalleEnvio); } return detallesEnvio; } public static bool editarEnvio(Envio envio) { return DAO.editarEnvioDAO(envio); } public static bool cancelarEnvio(Envio envio, List detalles) { return DAO.cancelarEnvioDAO(envio, detalles); } public static bool concluirEnvio(Envio envio, List detallesEnvio, List importes) { return DAO.concluirEnvioDAO(envio, detallesEnvio, importes); } public static List conseguirVentasMes(DateTime fecha) { List ventasMes = new List(); SQLiteDataReader readerVentas = DAO.conseguirVentasMesDAO(fecha); while (readerVentas.Read()) { VentaModel venta = new VentaModel( readerVentas.GetDecimal(2),//total (int)readerVentas.GetInt64(0),//id readerVentas.GetString(1),//fecha readerVentas.GetString(3)//resposable ); ventasMes.Add(venta); } return ventasMes; } public static List conseguirVentasDia(DateTime fecha) { List ventasDia = new List(); SQLiteDataReader readerVentas = DAO.conseguirVentasMesDAO(fecha); string formato = "dd/MM/yyyy"; while (readerVentas.Read()) { VentaModel venta = new VentaModel( readerVentas.GetDecimal(2), (int)readerVentas.GetInt64(0), readerVentas.GetString(1), readerVentas.GetString(3) ); string[] fecha_hora = venta.fecha.Split(' '); string fechaVentaStr = fecha_hora[0]; DateTime.TryParseExact(fechaVentaStr, formato, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime fechaVenta); if (fecha.Day == fechaVenta.Day) { ventasDia.Add(venta); } } return ventasDia; } public static List conseguirProductosFiltrados(string nombreProducto) { List productos = new List(); SQLiteDataReader reader = DAO.conseguirProductosFiltradosDAO(nombreProducto); int idIndex = reader.GetOrdinal("idVariante"); int nombreIndex = reader.GetOrdinal("nombre"); int precioIndex = reader.GetOrdinal("precio"); int cantidadIndex = reader.GetOrdinal("cantidad"); int imgIndex = reader.GetOrdinal("img"); int fkProductoIndex = reader.GetOrdinal("fk_producto"); decimal precioCompra = reader.GetOrdinal("precioCompra"); while (reader.Read()) { Variante producto = new Variante( reader.GetInt32(idIndex), reader.GetString(nombreIndex), reader.GetDecimal(precioIndex), reader.GetInt32(cantidadIndex), reader.GetString(imgIndex), reader.GetInt32(fkProductoIndex), precioCompra ); productos.Add(producto); } return productos; } public static List conseguirDetallesVenta(VentaModel venta) { List detallesVenta = new List(); SQLiteDataReader readerDetalleVenta = DAO.conseguirDetalleVenta(venta); while (readerDetalleVenta.Read()) { decimal precioCompra = readerDetalleVenta.GetDecimal(3); Variante variante = new Variante( (int)readerDetalleVenta.GetInt64(5),//id readerDetalleVenta["nombre"].ToString(),//nombre readerDetalleVenta.GetDecimal(4),//precioVenta (int)readerDetalleVenta.GetInt64(8),//cantidad "",//img (int)readerDetalleVenta.GetInt64(10),//fkProducto precioCompra); DetalleVentaModel detalleVenta = new DetalleVentaModel( (int)readerDetalleVenta.GetInt64(2), variante ); detallesVenta.Add( detalleVenta ); } return detallesVenta; } public static Dictionary> conseguirEnvioMes(DateTime fecha) { Dictionary> dic = new Dictionary>(); string formato = "dd/MM/yyyy"; List enviosDia = new List(); List enviosMes = new List(); SQLiteDataReader reader = DAO.conseguirEnvioMesDAO(fecha); while (reader.Read()) { Envio envio = new Envio((int)reader.GetInt64(0),reader.GetString(1),"","", "","","",0); string[] fecha_hora = envio.fecha.Split(' '); string fechaVentaStr = fecha_hora[0]; DateTime.TryParseExact(fechaVentaStr, formato, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime fechaVenta); if (fecha.Day == fechaVenta.Day) { enviosDia.Add(envio); } enviosMes.Add(envio); } dic.Add("mes", enviosMes); dic.Add("dia", enviosDia); return dic; } public static List conseguirVariantes() { List variantes = new List(); SQLiteDataReader reader = DAO.conseguirVariantesDAO(); while (reader.Read()) { decimal precio = reader.GetDecimal(2); decimal precioCompra = reader.GetDecimal(6); int cantidad = (int)reader.GetInt64(3); int fkProducto = (int)reader.GetInt64(5); Variante vaiante = new Variante( (int)reader.GetInt64(0), reader["nombre"].ToString(), precio, cantidad, reader["img"].ToString(), fkProducto, precioCompra ); variantes.Add(vaiante); } return variantes; } public static List conseguirVariante(int idProducto) { List variantes = new List(); SQLiteDataReader reader = DAO.conseguirVarianteDAO(idProducto); while (reader.Read()) { int idVariante = (int)reader.GetInt64(0); string nombre = reader.GetString(1); decimal precio = reader.GetDecimal(2); int cantidad = (int)reader.GetInt64(3); string img = reader.GetString(4); int fkProducto = (int)reader.GetInt64(5); decimal precioCompra = reader.GetDecimal(6); variantes.Add(new Variante( idVariante, nombre, precio, cantidad, img, fkProducto, precioCompra )); } return variantes; } public static bool insertarVariante(Variante variante) { return DAO.insertarVarianteDAO(variante); } public static bool eliminarVariante(int idVariante) { return DAO.eliminarVarianteDAO(idVariante); } public static bool editarVariante(Variante variante) { return DAO.editarVarianteDAO(variante); } public static List conseguirImportes() { List importes = new List(); SQLiteDataReader reader = DAO.conseguirImportesDAO(); while (reader.Read()) { ImporteModel importe = new ImporteModel( (int)reader.GetInt64(0), //id reader.GetString(1), //tipo reader.GetDecimal(2), //precion reader.GetString(3) //imagen ); importes.Add(importe); } return importes; } } }