Skip to content

Commit e4ddf84

Browse files
authored
Merge pull request #38 from map-os/update-final
final update v2
2 parents 25bdcba + 2fb83e2 commit e4ddf84

File tree

7 files changed

+1619
-129
lines changed

7 files changed

+1619
-129
lines changed

lib/controllers/os/osController.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class ControllerOs {
103103
throw Exception('${data['message']}');
104104
}
105105
} else {
106-
throw Exception('Erro ao buscar Ordens');
106+
throw Exception('Ordem de Servico não Encomtrada');
107107
}
108108
}
109109

lib/pages/dashboard/dashboard_page.dart

Lines changed: 64 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'dashboard_controller.dart';
1111
import 'package:http/http.dart' as http;
1212
import 'package:mapos_app/providers/theme_provider.dart';
1313
import 'package:provider/provider.dart';
14+
import 'package:mapos_app/pages/os/os_view_page.dart';
1415

1516
class DashboardPage extends StatefulWidget {
1617
@override
@@ -88,6 +89,50 @@ class _DashboardPageState extends State<DashboardPage> {
8889
}
8990
}
9091

92+
void _navigateToOsView(String osNumber) {
93+
if (osNumber.isEmpty) {
94+
ScaffoldMessenger.of(context).showSnackBar(
95+
const SnackBar(
96+
content: Text('Por favor, digite um número de OS válido'),
97+
backgroundColor: Colors.red,
98+
),
99+
);
100+
return;
101+
}
102+
103+
// Verifica se o número contém apenas dígitos
104+
if (!RegExp(r'^\d+$').hasMatch(osNumber)) {
105+
ScaffoldMessenger.of(context).showSnackBar(
106+
const SnackBar(
107+
content: Text('O número da OS deve conter apenas dígitos'),
108+
backgroundColor: Colors.red,
109+
),
110+
);
111+
return;
112+
}
113+
114+
final osId = int.tryParse(osNumber);
115+
if (osId == null) {
116+
ScaffoldMessenger.of(context).showSnackBar(
117+
const SnackBar(
118+
content: Text('Número de OS inválido'),
119+
backgroundColor: Colors.red,
120+
),
121+
);
122+
return;
123+
}
124+
125+
// Navega para a página de visualização da OS
126+
Navigator.push(
127+
context,
128+
MaterialPageRoute(
129+
builder: (context) => VisualizarOrdemServicoPage(idOrdemServico: osId),
130+
),
131+
).then((_) {
132+
// Atualiza o dashboard quando retornar da visualização da OS
133+
_loadDashboardData();
134+
});
135+
}
91136
@override
92137
Widget build(BuildContext context) {
93138
final themeProvider = Provider.of<ThemeProvider>(context, listen: false);
@@ -177,26 +222,38 @@ class _DashboardPageState extends State<DashboardPage> {
177222
}
178223

179224
Widget _buildSearchField() {
225+
final TextEditingController _osSearchController = TextEditingController();
226+
180227
return Container(
181228
padding: const EdgeInsets.symmetric(horizontal: 16),
182229
decoration: BoxDecoration(
183-
color: Colors.white,
230+
color: Theme.of(context).cardColor,
184231
borderRadius: BorderRadius.circular(8),
185-
boxShadow: const [
232+
boxShadow: [
186233
BoxShadow(
187-
color: Colors.black12,
234+
color: Colors.black.withOpacity(0.1),
188235
blurRadius: 6,
189-
offset: Offset(0, 2),
236+
offset: const Offset(0, 2),
190237
),
191238
],
192239
),
193-
child: const TextField(
240+
child: TextField(
241+
controller: _osSearchController,
194242
decoration: InputDecoration(
195243
border: InputBorder.none,
196-
hintText: 'Digite o numero de uma OS',
197-
icon: Icon(Icons.search),
244+
hintText: 'Digite o número de uma OS',
245+
icon: const Icon(Icons.search),
246+
suffixIcon: IconButton(
247+
icon: const Icon(Icons.arrow_forward),
248+
onPressed: () {
249+
_navigateToOsView(_osSearchController.text);
250+
},
251+
),
198252
),
199253
keyboardType: TextInputType.number,
254+
onSubmitted: (value) {
255+
_navigateToOsView(value);
256+
},
200257
),
201258
);
202259
}

lib/pages/os/os_edit_page.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart';
3+
import 'package:mapos_app/api/apiConfig.dart';
34
import 'package:mapos_app/pages/os/tabs/detalhes_tab.dart';
45
import 'package:mapos_app/pages/os/tabs/descontos_tab.dart';
56
import 'package:mapos_app/pages/os/tabs/servicos_tab.dart';
@@ -35,10 +36,11 @@ class _EditarOsPageState extends State<EditarOsPage> with SingleTickerProviderSt
3536
onAtualizar: _getOs,
3637
),
3738
ProdutosTab(
38-
// onAtualizar: _getOs,
39+
ordemServico: ordemServico,
40+
onAtualizar: _getOs,
3941
),
4042
AnexosTab(ordemServico: ordemServico),
41-
AnotacoesTab()
43+
4244
];
4345
}
4446

@@ -49,7 +51,7 @@ class _EditarOsPageState extends State<EditarOsPage> with SingleTickerProviderSt
4951
Icons.build,
5052
Icons.shopping_cart,
5153
Icons.attachment,
52-
Icons.note
54+
5355
];
5456

5557
@override

lib/pages/os/os_view_page.dart

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,30 @@ class _VisualizarOrdemServicoPageState
106106
return _buildShimmer();
107107
} else if (snapshot.hasError) {
108108
return Center(
109-
child: Text('Erro: ${snapshot.error}',
110-
style: const TextStyle(color: Colors.red, fontSize: 18)));
109+
child: Column(
110+
mainAxisAlignment: MainAxisAlignment.center,
111+
children: [
112+
const Icon(Icons.error_outline, color: Colors.red, size: 60),
113+
const SizedBox(height: 16),
114+
const Text(
115+
'Ordem de serviço não encontrada',
116+
style: TextStyle(
117+
color: Colors.red,
118+
fontSize: 18,
119+
fontWeight: FontWeight.bold,
120+
),
121+
textAlign: TextAlign.center,
122+
),
123+
const SizedBox(height: 8),
124+
Text(
125+
'Não conseguimos encontrar a ordem que você pesquisou, revise o Nº da OS e tente novamente',
126+
style: const TextStyle(color: Colors.black54),
127+
textAlign: TextAlign.center,
128+
),
129+
],
130+
),
131+
);
132+
111133
} else if (!snapshot.hasData || snapshot.data!.isEmpty) {
112134
return const Center(
113135
child: Text('Nenhum detalhe da ordem de serviço encontrado',

0 commit comments

Comments
 (0)