Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
6b842fe
se crearon las tablas de la base de datos
GokuPrograming Oct 17, 2024
86c370d
se creo el modelo de categoria y se mando a mostrar al menu de la app…
GokuPrograming Oct 17, 2024
ce69e82
creacion de modelos y controladores
GokuPrograming Oct 17, 2024
a297c49
modelos, controlladores basicos han sido creados, la vista principal …
GokuPrograming Oct 18, 2024
dd99b17
pantallas creadas= producto, drawer, menu,button
GokuPrograming Oct 18, 2024
f665f06
se agregó el calendario, la modal del calendario, los puntos en el ca…
GokuPrograming Oct 19, 2024
bf4f4f9
Vista carrito funcional, faltan pulir detalles y averiguar como manda…
GokuPrograming Oct 20, 2024
0df1834
Correccion general
GokuPrograming Oct 20, 2024
112eb14
Se agregaron las pantallas de historial, pendientes y completadas
JSalinas13 Oct 20, 2024
3b1a9a1
se agrego el crud de categorias, solo falata eliminar
GokuPrograming Oct 21, 2024
756a57a
Crud Municipios Listo
GokuPrograming Oct 21, 2024
3750536
CRUD de comunidad completado sobre todo y dropDown
GokuPrograming Oct 22, 2024
25e75d3
puntos de colores agregados en el calendario, cagregar/actualizarProd…
GokuPrograming Oct 25, 2024
74e427c
arregle los productos
GokuPrograming Oct 25, 2024
09c9cb2
Se registra pedido o servicio
JSalinas13 Oct 28, 2024
d0b2fe0
agregar image picker para editar foto
GokuPrograming Oct 28, 2024
988ca2e
pull con develop
GokuPrograming Oct 28, 2024
cd01792
Merge branch 'feat/cruds' into develop
GokuPrograming Oct 28, 2024
f10afdb
merge con ultima rama
GokuPrograming Oct 28, 2024
d79102e
combobox de comunidad y municipio estan completados al moemnto de cre…
GokuPrograming Oct 28, 2024
538d6fd
Bugs de caendario arreglados
GokuPrograming Oct 28, 2024
9f005e4
ya borra en carrito
GokuPrograming Oct 28, 2024
d9eaa2b
SE ME OLVIDO CAMBIAR DE RAMA SALU2, ya esta el cambio de estado del p…
JSalinas13 Oct 29, 2024
b21ceea
actualiza imagen GGS Bro gracias pinche salinas
GokuPrograming Oct 30, 2024
7c74736
otra veztu=
GokuPrograming Oct 30, 2024
878e0b0
Merge branch 'chino' into develop
GokuPrograming Oct 30, 2024
75f75f0
seagrego el icon de carrito pero esta bug
GokuPrograming Oct 30, 2024
23645e0
Bug Carrito contador arreglado
GokuPrograming Oct 31, 2024
cf1472f
final commit
GokuPrograming Dec 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
analyzer:
errors:
unnecessary_brace_in_string_interps: ignore
include: package:flutter_lints/flutter.yaml

linter:
Expand Down
6 changes: 3 additions & 3 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {

android {
namespace = "com.example.store_sqlite"
compileSdk = flutter.compileSdkVersion
compileSdk = 34
ndkVersion = flutter.ndkVersion

compileOptions {
Expand All @@ -24,8 +24,8 @@ android {
applicationId = "com.example.store_sqlite"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
minSdk = 26
targetSdk = 34
versionCode = flutter.versionCode
versionName = flutter.versionName
}
Expand Down
59 changes: 30 additions & 29 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,41 +1,42 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:label="store_sqlite"
android:name="${applicationName}"
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.store_sqlite">

<!-- Permisos de almacenamiento y Google Play -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/> <!-- Nuevo permiso -->

<application
android:requestLegacyExternalStorage="true"
android:label="store_sqlite"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">

<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"
android:enableOnBackInvokedCallback="true">

<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme"/>

<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />

<meta-data android:name="flutterEmbedding" android:value="2"/>
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.

In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
Expand Down
Binary file modified android/app/src/main/res/mipmap-hdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/logo_pizza.jfif
Binary file not shown.
4 changes: 2 additions & 2 deletions ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
Expand Down Expand Up @@ -484,7 +484,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions lib/config/globalValues.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import 'package:flutter/material.dart';

class Globalvalues {
static ValueNotifier banMoviemientoActualizar = ValueNotifier(true);
static ValueNotifier<bool> refrescarWidget = ValueNotifier(true);
static ValueNotifier<bool> refrescarCarrito_desde_borrar =
ValueNotifier(true);
static ValueNotifier<int> carritoContador = ValueNotifier<int>(0);
static ValueNotifier<int> id_Municipio = ValueNotifier(0);
static ValueNotifier<bool> refrescarCalendario = ValueNotifier(true);
static ValueNotifier<bool> refrescarCarrito = ValueNotifier(true);
static ValueNotifier<bool> refrecarCarritoContador = ValueNotifier(true);
}
59 changes: 59 additions & 0 deletions lib/controller/Comunidad_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import 'package:store_sqlite/database/database.dart';
import 'package:store_sqlite/models/comunidad_model.dart';

class ComunidadController {
final TiendaDataBase _dataBase = TiendaDataBase();

Future<int> insertarComunidad(String table, Map<String, dynamic> row) async {
final db = await _dataBase.database;
return await db.insert(table, row);
}

Future<List<ComunidadModel>?> mostrarTodasLasComunidades() async {
var con = await _dataBase.database;
var result = await con.query('comunidad');
return result
.map((comunidad) => ComunidadModel.fromMap(comunidad))
.toList();
}

Future<int> actualizarComunidad(
String table, Map<String, dynamic> row) async {
var con = await _dataBase.database;
return await con.update(table, row,
where: 'id_comunidad = ?', whereArgs: [row['id_comunidad']]);
}

Future<int> eliminarComunidad(String table, int id_comunidad) async {
var con = await _dataBase.database;
return await con
.delete(table, where: 'id_comunidad = ?', whereArgs: [id_comunidad]);
}

Future<List<Map<String, dynamic>>?> mostrarComunidadYMunicipio() async {
var con = await _dataBase.database;
var result = await con.rawQuery(
'''
SELECT *
FROM comunidad c
inner join municipio m on c.id_municipio=m.id_municipio
''',
);
return result;
}

Future<List<ComunidadModel>?> mostrarComunidadByIdMunicipio(
int idMunicipio) async {
var con = await _dataBase.database;
var result = await con.rawQuery('''
SELECT * FROM comunidad c
JOIN municipio m ON c.id_municipio = m.id_municipio
WHERE c.id_municipio = ?
''', [idMunicipio]);

if (result.isNotEmpty) {
return result.map((map) => ComunidadModel.fromMap(map)).toList();
}
return null;
}
}
50 changes: 50 additions & 0 deletions lib/controller/carrito_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import 'package:store_sqlite/database/database.dart';
import 'package:store_sqlite/models/carrito_model.dart';

class CarritoController {
final TiendaDataBase _dataBase = TiendaDataBase();

Future<int> insertCarrito(String table, Map<String, dynamic> row) async {
final db = await _dataBase.database;
return await db.insert(table, row);
}

Future<List<CarritoModel>?> mostrarCarritos() async {
var con = await _dataBase.database;
var result = await con.query('id_carrito');
return result.map((carrito) => CarritoModel.fromMap(carrito)).toList();
}

Future<List<Map<String, dynamic>>?> mostrarTodosLosCarritos() async {
var con = await _dataBase.database;
var result = await con.rawQuery('''
SELECT *,sum(cantidad) as cantidad, sum(subtotal) as subtotal
FROM carrito c
inner join producto p on c.id_producto = p.id_producto
group by p.id_producto
'''); // Aquí se pasa el parámetro
print(result);
return result;
}

Future<int> actualizarCarrito(String table, Map<String, dynamic> row) async {
var con = await _dataBase.database;
return await con.update(table, row,
where: 'id_carrito = ?', whereArgs: [row['id_carrito']]);
}

Future<int> eliminarCarrito(String table, int id_producto) async {
var con = await _dataBase.database;
return await con
.delete(table, where: 'id_producto = ?', whereArgs: [id_producto]);

}

Future<List<Map<String, Object?>>> conteoDeArticulosEnCarrito() async {
var con = await _dataBase.database;
String sql = 'select sum(cantidad) from carrito';
var result = await con.rawQuery(sql);
print(result);
return result;
}
}
30 changes: 30 additions & 0 deletions lib/controller/categoria_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import 'package:sqflite/sqflite.dart';
import 'package:store_sqlite/database/database.dart';
import 'package:store_sqlite/models/categoria_model.dart';

class CategoriaController {
final TiendaDataBase _dataBase = TiendaDataBase();

Future<int> insertCategoria(String table, Map<String, dynamic> row) async {
final db = await _dataBase.database;
return await db.insert(table, row);
}

Future<List<CategoriaModel>?> mostrarTodasLasCategorias() async {
var con = await _dataBase.database;
var result = await con.query('categoria');
return result.map((categoria)=>CategoriaModel.fromMap(categoria)).toList();
}

Future<int> actualizarCategoria(String table, Map<String, dynamic> row) async {
var con = await _dataBase.database;
return await con
.update(table, row, where: 'id_categoria = ?', whereArgs: [row['id_categoria']]);
}
Future<int> eliminarCategoria(String table, int id_categoria) async {
var con = await _dataBase.database;
return await con.delete(table, where: 'id_categoria = ?', whereArgs: [id_categoria]);
}

// Métodos adicionales como update, delete, etc.
}
28 changes: 28 additions & 0 deletions lib/controller/direccion_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import 'package:store_sqlite/database/database.dart';
import 'package:store_sqlite/models/direccion_model.dart';

class DireccionController {
final TiendaDataBase _dataBase = TiendaDataBase();

Future<int> insertDireccion(String table, Map<String, dynamic> row) async {
final db = await _dataBase.database;
return await db.insert(table, row);
}

Future<List<DireccionModel>?> mostrarTodasLasDirecciones() async {
var con = await _dataBase.database;
var result = await con.query('categoria');
return result.map((direccion)=>DireccionModel.fromMap(direccion)).toList();
}

Future<int> actualizarDireccion(String table, Map<String, dynamic> row) async {
var con = await _dataBase.database;
return await con
.update(table, row, where: 'id_direccion = ?', whereArgs: [row['id_direccion']]);
}
Future<int> eliminarDireccion(String table, int id_direccion) async {
var con = await _dataBase.database;
return await con.delete(table, where: 'id_direccion = ?', whereArgs: [id_direccion]);
}

}
28 changes: 28 additions & 0 deletions lib/controller/listaPedido_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import 'package:store_sqlite/database/database.dart';
import 'package:store_sqlite/models/lista_pedido_model.dart';

class ListapedidoController {
final TiendaDataBase _dataBase = TiendaDataBase();

Future<int> insertarListaPedido(String table, Map<String, dynamic> row) async {
final db = await _dataBase.database;
return await db.insert(table, row);
}

Future<List<ListaPedidoModel>?> mostrarTodosLosListaPedidos() async {
var con = await _dataBase.database;
var result = await con.query('lista_pedido');
return result.map((lista_pedido)=>ListaPedidoModel.fromMap(lista_pedido)).toList();
}

Future<int> actualizarListaPedido(String table, Map<String, dynamic> row) async {
var con = await _dataBase.database;
return await con
.update(table, row, where: 'id_lista_pedido = ?', whereArgs: [row['id_lista_pedido']]);
}
Future<int> eliminarListaPedido(String table, int id_lista_pedido) async {
var con = await _dataBase.database;
return await con.delete(table, where: 'id_lista_pedido = ?', whereArgs: [id_lista_pedido]);
}

}
44 changes: 44 additions & 0 deletions lib/controller/municipio_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import 'package:store_sqlite/database/database.dart';
import 'package:store_sqlite/models/municipio_model.dart';

class MunicipioController {
final TiendaDataBase _dataBase = TiendaDataBase();

Future<int> insertarMunicipio(String table, Map<String, dynamic> row) async {
final db = await _dataBase.database;
return await db.insert(table, row);
}

Future<List<MunicipioModel>?> mostrarTodosLosMunicipios() async {
var con = await _dataBase.database;
var result = await con.query('municipio');
return result
.map((municipio) => MunicipioModel.fromMap(municipio))
.toList();
}

Future<int> actualizarMunicipio(
String table, Map<String, dynamic> row) async {
var con = await _dataBase.database;
return await con.update(table, row,
where: 'id_municipio = ?', whereArgs: [row['id_municipio']]);
}

Future<int> eliminarMunicipio(String table, int id_municipio) async {
var con = await _dataBase.database;
return await con
.delete(table, where: 'id_municipio = ?', whereArgs: [id_municipio]);
}

Future<List<Map<String, dynamic>>?> mostrarmunicipioById(
int id_comunidad) async {
var con = await _dataBase.database;
var result = await con.rawQuery('''
SELECT m.municipio AS municipio, m.id_municipio AS id_municipio
FROM municipio m
JOIN comunidad c ON m.id_municipio = c.id_municipio
WHERE c.id_comunidad = ?
''', [id_comunidad]);
return result;
}
}
Loading