diff --git a/lib/src/views/admin/screen/home/constants/home_admin.dart b/lib/src/views/admin/home/constants/home_admin.dart similarity index 100% rename from lib/src/views/admin/screen/home/constants/home_admin.dart rename to lib/src/views/admin/home/constants/home_admin.dart diff --git a/lib/src/views/admin/screen/item/item_details_screen.dart b/lib/src/views/admin/item/item_details_screen.dart similarity index 100% rename from lib/src/views/admin/screen/item/item_details_screen.dart rename to lib/src/views/admin/item/item_details_screen.dart diff --git a/lib/src/views/admin/screen/item/widgets/additem.dart b/lib/src/views/admin/item/widgets/additem.dart similarity index 100% rename from lib/src/views/admin/screen/item/widgets/additem.dart rename to lib/src/views/admin/item/widgets/additem.dart diff --git a/lib/src/views/admin/screen/home/home_screen.dart b/lib/src/views/admin/screen/home/home_screen.dart deleted file mode 100644 index f58a417..0000000 --- a/lib/src/views/admin/screen/home/home_screen.dart +++ /dev/null @@ -1,206 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:pizzaria/src/shared/constants/app.dart'; -import 'package:pizzaria/src/shared/controllers/order_controller.dart'; -import 'package:pizzaria/src/shared/models/order_model.dart'; -import 'package:pizzaria/src/views/admin/screen/home/constants/home_admin.dart'; -import 'package:pizzaria/src/views/admin/screen/item/item_screen.dart'; -import 'package:pizzaria/src/shared/controllers/auth_controller.dart'; -import 'package:pizzaria/src/shared/themes/colors/color_schemes.g.dart'; -import 'package:pizzaria/src/shared/services/util_service.dart'; -import 'package:pizzaria/src/views/admin/screen/user/user_screen.dart'; -import 'package:stomp_dart_client/stomp.dart'; -import 'package:stomp_dart_client/stomp_config.dart'; -import 'package:stomp_dart_client/stomp_frame.dart'; - -class HomeAdminScreen extends StatefulWidget { - const HomeAdminScreen({super.key}); - - @override - State createState() => _HomeAdminScreenState(); -} - -class _HomeAdminScreenState extends State { - late StompClient stompClient; - - void onConnect(StompClient stompClient, StompFrame stompFrame) { - stompClient.subscribe( - destination: '/topic/message', - callback: (frame) { - if (frame.body != null) { - setState(() {}); - } - }); - } - - @override - void initState() { - super.initState(); - - stompClient = StompClient( - config: StompConfig.SockJS( - url: "${AppConstants.baseUrl}/ws-message", - onConnect: (stompFrame) => onConnect(stompClient, stompFrame), - ), - ); - - stompClient.activate(); - } - - @override - Widget build(BuildContext context) { - final utilService = UtilService(); - final authController = AuthController(); - final orderController = OrderController(); - return Scaffold( - //Appbar - appBar: AppBar( - title: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Painel administrativo", - ), - IconButton( - onPressed: () async { - authController.signOut(); - }, - icon: const Icon( - Icons.logout, - ), - ) - ], - ), - ), - - //Body - body: Column( - children: [ - Expanded( - child: GridView.count( - crossAxisSpacing: 0, - crossAxisCount: MediaQuery.of(context).size.width < 800 ? 2 : 6, - children: List.generate( - HomeAdmin.labels.length, - (index) => Padding( - padding: const EdgeInsets.all(6.0), - - //Containers menu - child: GestureDetector( - onTap: () => index.isEqual(1) - ? Get.to(const ItemAdminScreen()) - : index.isEqual(0) - ? Get.to(const UserAdminScreen()) - : null, - child: Container( - decoration: BoxDecoration( - border: Border.all( - color: lightColorScheme.primary, - ), - color: lightColorScheme.background, - borderRadius: BorderRadius.circular(12), - ), - - //Title, icon, description - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - CircleAvatar( - maxRadius: - utilService.screenDeviceWidth(13, 30, context), - child: Icon(HomeAdmin.icons[index]), - ), - const SizedBox(height: 10), - Text(HomeAdmin.labels[index]), - Text( - HomeAdmin.description[index], - style: TextStyle(color: Colors.grey.shade500), - ), - ], - ), - ), - ), - ), - ), - ), - ), - - //Orders - const Padding( - padding: EdgeInsets.all(8.0), - child: Row( - children: [ - Text( - 'Pedidos em andamento', - style: TextStyle(fontSize: 32), - ), - ], - ), - ), - Expanded( - child: FutureBuilder( - future: orderController.get(), - builder: (context, snapshot) { - if (!snapshot.hasData) { - return const Center( - child: CircularProgressIndicator(), - ); - } - - return ListView.separated( - separatorBuilder: (context, index) => const Divider(), - itemCount: snapshot.data!.length, - itemBuilder: (context, index) { - final orderModel = - OrderModel.fromMap(snapshot.data?[index] ?? {}); - - //List oreder - return ListTile( - //ID - title: Text(orderModel.id!), - - //Items in order - subtitle: Row( - children: List.generate( - orderModel.item!.length, - (index) => - Text("+ ${orderModel.item![index]['name']} ")), - ), - - //Total price - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - utilService.convertToBRL(orderModel.total ?? 0), - style: const TextStyle(fontSize: 16), - ), - IconButton( - onPressed: () async { - await orderController.delete(id: orderModel.id!); - setState(() {}); - }, - icon: const Icon( - Icons.delete, - color: Colors.red, - ), - ), - ], - ), - ); - }, - ); - }, - ), - ), - ], - ), - ); - } - - @override - void dispose() { - stompClient.deactivate(); - super.dispose(); - } -} diff --git a/lib/src/views/admin/screen/item/item_screen.dart b/lib/src/views/admin/screen/item/item_screen.dart deleted file mode 100644 index 7f2300e..0000000 --- a/lib/src/views/admin/screen/item/item_screen.dart +++ /dev/null @@ -1,112 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:pizzaria/src/views/admin/screen/item/item_details_screen.dart'; -import 'package:pizzaria/src/views/admin/screen/item/widgets/additem.dart'; -import 'package:pizzaria/src/shared/services/util_service.dart'; -import 'package:pizzaria/src/shared/controllers/item_controller.dart'; -import 'package:pizzaria/src/shared/models/item_model.dart'; -import 'package:pizzaria/src/shared/themes/colors/color_schemes.g.dart'; -import 'package:pizzaria/src/widgets/progress_custom.dart'; - -class ItemAdminScreen extends StatefulWidget { - const ItemAdminScreen({super.key}); - - @override - State createState() => _ItemAdminScreenState(); -} - -class _ItemAdminScreenState extends State { - final itemController = ItemController(); - final utilService = UtilService(); - - @override - void initState() { - itemController.addListener(() => setState(() {})); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text("Gerenciamento de itens"), - ), - body: StreamBuilder( - stream: itemController.getLikeStream(), - builder: (context, snapshot) { - //Progress data. - if (!snapshot.hasData) { - return const ProgressCustom( - height: 25, - width: 25, - ); - } - - //List items - return ListView.separated( - itemBuilder: (context, index) { - //Constructor item model. - final itemModel = - ItemModel.fromMap(snapshot.data?[index] ?? {}); - - return GestureDetector( - onTap: () => Navigator.push( - context, - MaterialPageRoute( - builder: (context) => ItemAdminDetailsScreen( - itemModel: itemModel, - ), - ), - ), - child: ListTile( - title: Text(itemModel.name!), - subtitle: Text( - itemModel.description ?? "Não há descrição neste item"), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - //Price - IconButton( - onPressed: () {}, - icon: Text( - utilService.convertToBRL(itemModel.price!), - ), - ), - //Delete - IconButton( - onPressed: () async { - await itemController.delete(itemModel.id!); - }, - icon: Icon( - Icons.delete, - color: lightColorScheme.error, - ), - ) - ], - ), - ), - ); - }, - separatorBuilder: (context, index) => const Divider(), - itemCount: snapshot.data?.length ?? 0); - }, - ), - - //Add items - floatingActionButton: FloatingActionButton.extended( - onPressed: () { - showDialog( - context: context, - builder: (context) => const Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - AddItemWindow(), - ], - ), - ); - }, - label: const Text("Adicionar"), - ), - ); - } -} diff --git a/lib/src/views/admin/screen/user/user_screen.dart b/lib/src/views/admin/screen/user/user_screen.dart deleted file mode 100644 index 500789c..0000000 --- a/lib/src/views/admin/screen/user/user_screen.dart +++ /dev/null @@ -1,72 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:pizzaria/src/shared/controllers/user_controller.dart'; -import 'package:pizzaria/src/shared/handlers/handlers.dart'; -import 'package:pizzaria/src/shared/models/user_model.dart'; -import 'package:pizzaria/src/shared/themes/colors/color_schemes.g.dart'; -import 'package:pizzaria/src/views/admin/screen/user/user_details_screen.dart'; -import 'package:pizzaria/src/views/auth/register_screen.dart'; -import 'package:pizzaria/src/widgets/progress_custom.dart'; - -class UserAdminScreen extends StatelessWidget { - const UserAdminScreen({super.key}); - - @override - Widget build(BuildContext context) { - final userController = UserController(); - return Scaffold( - appBar: AppBar( - title: const Text("Gerenciamento de usuários"), - ), - - //Body - body: StreamBuilder( - stream: userController.getByLikeStream(), - builder: (context, snapshot) { - if (!snapshot.hasData) { - return const ProgressCustom(); - } - - return ListView.separated( - padding: const EdgeInsets.only(top: 10), - separatorBuilder: (context, index) => const Divider(), - itemCount: snapshot.data!.length, - itemBuilder: (context, index) { - final userModel = UserModel.fromMap(snapshot.data?[index] ?? {}); - return GestureDetector( - onTap: () => Get.to(UserDetailsScreen(userModel: userModel)), - child: ListTile( - leading: const CircleAvatar( - child: Icon(Icons.person), - ), - title: Text(userModel.email!), - trailing: IconButton( - onPressed: () async { - await userController.delete(id: userModel.id!).then( - (value) => Handlers.message( - message: "Usuário deletado", - iconData: Icons.check, - context: context)); - }, - icon: Icon( - Icons.delete, - color: lightColorScheme.error, - ), - ), - ), - ); - }, - ); - }, - ), - - floatingActionButton: FloatingActionButton.extended( - onPressed: () { - Get.to(RegisterScreen()); - }, - icon: const Icon(Icons.person_add), - label: const Text("Registrar usuário"), - ), - ); - } -} diff --git a/lib/src/views/admin/screen/user/user_details_screen.dart b/lib/src/views/admin/user/user_details_screen.dart similarity index 100% rename from lib/src/views/admin/screen/user/user_details_screen.dart rename to lib/src/views/admin/user/user_details_screen.dart