diff --git a/lib/componentes/drawer_custom.dart b/lib/componentes/drawer_custom.dart index 0f41e90..3293af1 100644 --- a/lib/componentes/drawer_custom.dart +++ b/lib/componentes/drawer_custom.dart @@ -93,12 +93,12 @@ class DrawerCustom extends StatelessWidget { texto: 'Agenda Escolar', onPressed: ()=>Navigator.push(context, MaterialPageRoute(builder: (context)=>TelaAgenda(estudanteModelo: estudanteModelo))), ), - Container(height: 1,color: PaletaCores.divider,margin: EdgeInsets.symmetric(horizontal: 20),), - ItemDrawer( - icone: LineIcons.calendarTimes, - texto: 'Eventos Escolares', - onPressed: ()=>Navigator.push(context, MaterialPageRoute(builder: (context)=>TelaEventos(estudanteModelo: estudanteModelo))), - ), + // Container(height: 1,color: PaletaCores.divider,margin: EdgeInsets.symmetric(horizontal: 20),), + // ItemDrawer( + // icone: LineIcons.calendarTimes, + // texto: 'Eventos Escolares', + // onPressed: ()=>Navigator.push(context, MaterialPageRoute(builder: (context)=>TelaEventos(estudanteModelo: estudanteModelo))), + // ), Container(height: 1,color: PaletaCores.divider,margin: EdgeInsets.symmetric(horizontal: 20),), ItemDrawer( icone: LineIcons.mobilePhone, diff --git a/lib/componentes/item_evento_home.dart b/lib/componentes/item_evento_home.dart new file mode 100644 index 0000000..8b90087 --- /dev/null +++ b/lib/componentes/item_evento_home.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; +import 'package:rkm_educa_app/componentes/text_custom.dart'; +import '../utils/dimensoes.dart'; +class ItemEventoHome extends StatelessWidget { + String titulo; + String data; + + ItemEventoHome({ + required this.titulo, + required this.data +}); + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Container( + width: Dimensoes.width*0.5, + child: TextCustom(text: titulo,) + ), + Container( + alignment: Alignment.center, + width: Dimensoes.width*0.3, + child: TextCustom(text: data,) + ), + ], + ); + } +} diff --git a/lib/modelos/evento_modelo.dart b/lib/modelos/evento_modelo.dart new file mode 100644 index 0000000..d56bc3f --- /dev/null +++ b/lib/modelos/evento_modelo.dart @@ -0,0 +1,9 @@ +class EventoModelo{ + String titulo; + String data; + + EventoModelo({ + required this.titulo, + required this.data, + }); +} \ No newline at end of file diff --git a/lib/telas/tela_botetim.dart b/lib/telas/tela_botetim.dart index 8f92cdb..ba47232 100644 --- a/lib/telas/tela_botetim.dart +++ b/lib/telas/tela_botetim.dart @@ -36,10 +36,10 @@ class _TelaBoletimState extends State { List listDisciplinas4 = []; bool carregando = true; - buscarBoletim()async{ + buscarNotas()async{ - final url = 'http://192.168.18.2:8000/boletim?MATRICULA=${widget.estudanteModelo.dados[widget.estudanteModelo.nroAluno]['CD_MATRICULA']}&CIDADE=${widget.estudanteModelo.cidade}'; - print(url); + final url = 'http://192.168.18.2:8000/boletim_notas?MATRICULA=${widget.estudanteModelo.dados[widget.estudanteModelo.nroAluno]['CD_MATRICULA']}&CIDADE=${widget.estudanteModelo.cidade}'; + // print(url); final response = await http.get(Uri.parse(url)); var map = json.decode(response.body); // print(map); @@ -56,6 +56,80 @@ class _TelaBoletimState extends State { listDisciplinas3.add(ItemDisciplina(disciplina: list[i]['NO_DISCIPLINA'], nota: list[i]['NOTA_3']==null?0:int.parse(list[i]['NOTA_3']??0), falta: 0)); listDisciplinas4.add(ItemDisciplina(disciplina: list[i]['NO_DISCIPLINA'], nota: list[i]['NOTA_4']==null?0:int.parse(list[i]['NOTA_4']??0), falta: 0)); } + buscarFaltas(); + } + }else{ + showSnackBar(context, 'Notas não encontradas', Colors.red); + carregando = false; + setState(() {}); + } + } + + buscarFaltas()async{ + + final url = 'http://192.168.18.2:8000/boletim_faltas?MATRICULA=${widget.estudanteModelo.dados[widget.estudanteModelo.nroAluno]['CD_MATRICULA']}&CIDADE=${widget.estudanteModelo.cidade}'; + // print(url); + final response = await http.get(Uri.parse(url)); + var map = json.decode(response.body); + // print(map); + if(map!=false){ + List list = map; + if(list.isEmpty){ + showSnackBar(context, 'Faltas não encontradas', Colors.red); + carregando = false; + setState(() {}); + }else{ + for(int i = 0; list.length>i;i++){ + if(list[i]['PERIODO'].toString().trim()=='1'){ + // print(list[i]['PERIODO'].toString().trim()); + for(int i2 = 0; listDisciplinas1.length>i2;i2++){ + // print(list[i]['DESCRICAO']); + // print(listDisciplinas1[i2].disciplina); + if(list[i]['DESCRICAO']==listDisciplinas1[i2].disciplina){ + // print('falta ${list[i]['FALTA']}'); + // print('disciplina ${list[i]['DESCRICAO']}'); + listDisciplinas1[i2].falta = list[i]['FALTA']??0; + // print('falta na lista1 ${listDisciplinas1[i2].falta}'); + } + } + }else if(list[i]['PERIODO'].toString().trim()=='2'){ + // print(list[i]['PERIODO'].toString().trim()); + for(int i2 = 0; listDisciplinas2.length>i2;i2++){ + // print(list[i]['DESCRICAO']); + // print(listDisciplinas1[i2].disciplina); + if(list[i]['DESCRICAO']==listDisciplinas2[i2].disciplina){ + // print('falta ${list[i]['FALTA']}'); + // print('disciplina ${list[i]['DESCRICAO']}'); + listDisciplinas2[i2].falta = list[i]['FALTA']??0; + // print('falta na lista2 ${listDisciplinas2[i2].falta}'); + } + } + }else if(list[i]['PERIODO'].toString().trim()=='3'){ + // print(list[i]['PERIODO'].toString().trim()); + for(int i2 = 0; listDisciplinas3.length>i2;i2++){ + // print(list[i]['DESCRICAO']); + // print(listDisciplinas1[i2].disciplina); + if(list[i]['DESCRICAO']==listDisciplinas3[i2].disciplina){ + // print('falta ${list[i]['FALTA']}'); + // print('disciplina ${list[i]['DESCRICAO']}'); + listDisciplinas3[i2].falta = list[i]['FALTA']??0; + // print('falta na lista3 ${listDisciplinas3[i2].falta}'); + } + } + }else if(list[i]['PERIODO'].toString().trim()=='4'){ + // print(list[i]['PERIODO'].toString().trim()); + for(int i2 = 0; listDisciplinas4.length>i2;i2++){ + // print(list[i]['DESCRICAO']); + // print(listDisciplinas1[i2].disciplina); + if(list[i]['DESCRICAO']==listDisciplinas4[i2].disciplina){ + // print('falta ${list[i]['FALTA']}'); + // print('disciplina ${list[i]['DESCRICAO']}'); + listDisciplinas4[i2].falta = list[i]['FALTA']??0; + // print('falta na lista4 ${listDisciplinas4[i2].falta}'); + } + } + } + } carregando = false; setState(() {}); } @@ -69,7 +143,7 @@ class _TelaBoletimState extends State { @override void initState() { super.initState(); - buscarBoletim(); + buscarNotas(); } @override @@ -102,7 +176,7 @@ class _TelaBoletimState extends State { physics: NeverScrollableScrollPhysics(), itemCount: listDisciplinas1.length, itemBuilder: (context,index){ - return ItemDisciplina(disciplina: listDisciplinas1[index].disciplina, nota: listDisciplinas1[index].nota, falta: 0); + return ItemDisciplina(disciplina: listDisciplinas1[index].disciplina, nota: listDisciplinas1[index].nota, falta: listDisciplinas1[index].falta); } ), ) @@ -117,7 +191,7 @@ class _TelaBoletimState extends State { physics: NeverScrollableScrollPhysics(), itemCount: listDisciplinas2.length, itemBuilder: (context,index){ - return ItemDisciplina(disciplina: listDisciplinas2[index].disciplina, nota: listDisciplinas2[index].nota, falta: 0); + return ItemDisciplina(disciplina: listDisciplinas2[index].disciplina, nota: listDisciplinas2[index].nota, falta: listDisciplinas2[index].falta); } ), ) @@ -132,7 +206,7 @@ class _TelaBoletimState extends State { physics: NeverScrollableScrollPhysics(), itemCount: listDisciplinas3.length, itemBuilder: (context,index){ - return ItemDisciplina(disciplina: listDisciplinas3[index].disciplina, nota: listDisciplinas3[index].nota, falta: 0); + return ItemDisciplina(disciplina: listDisciplinas3[index].disciplina, nota: listDisciplinas3[index].nota, falta: listDisciplinas3[index].falta); } ), ) @@ -147,7 +221,7 @@ class _TelaBoletimState extends State { physics: NeverScrollableScrollPhysics(), itemCount: listDisciplinas4.length, itemBuilder: (context,index){ - return ItemDisciplina(disciplina: listDisciplinas4[index].disciplina, nota: listDisciplinas4[index].nota, falta: 0); + return ItemDisciplina(disciplina: listDisciplinas4[index].disciplina, nota: listDisciplinas4[index].nota, falta: listDisciplinas4[index].falta); } ), ) diff --git a/lib/telas/tela_situacao_escolar.dart b/lib/telas/tela_situacao_escolar.dart index 9704df5..0d6a4ab 100644 --- a/lib/telas/tela_situacao_escolar.dart +++ b/lib/telas/tela_situacao_escolar.dart @@ -1,4 +1,7 @@ +import 'dart:convert'; +import 'package:http/http.dart' as http; import 'package:flutter/material.dart'; +import 'package:rkm_educa_app/componentes/item_evento_home.dart'; import 'package:rkm_educa_app/modelos/estudante_modelo.dart'; import 'package:rkm_educa_app/telas/tela_avisos.dart'; import 'package:rkm_educa_app/utils/cores.dart'; @@ -6,6 +9,8 @@ import 'package:rkm_educa_app/componentes/text_custom.dart'; import 'package:rkm_educa_app/utils/dimensoes.dart'; import 'package:syncfusion_flutter_charts/charts.dart'; import '../componentes/drawer_custom.dart'; +import '../componentes/snackBars.dart'; +import '../modelos/evento_modelo.dart'; class TelaSituacaoEscolar extends StatefulWidget { EstudanteModelo estudanteModelo; @@ -22,15 +27,55 @@ class _TelaSituacaoEscolarState extends State { late List<_ChartData> data; late TooltipBehavior _tooltip; + List eventos = []; + List ocorrencias = []; + bool carregandoEventos = true; + bool carregandoOcorrencias = true; + + buscarEventos()async{ + final url = 'http://192.168.18.2:8000/calendario_home?' + 'HOJE=${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day}&' + 'COD_ESCOLA=${widget.estudanteModelo.dados[widget.estudanteModelo.nroAluno]['CD_CAD_DIVERSO']}&' + 'CIDADE=${widget.estudanteModelo.cidade}'; + print(url); + final response = await http.get(Uri.parse(url)); + var map = json.decode(response.body); + print(map); + List list = map; + for(int i=0; list.length>i;i++){ + List data = list[i]['DT_CALENDARIO'].toString().split('-'); + eventos.add(EventoModelo(titulo: list[i]['NO_EVENTO'], data: '${data[2]}/${data[1]}/${data[0]}')); + } + carregandoEventos = false; + setState(() {}); + } + + buscarOcorrencia()async{ + final url = 'http://192.168.18.2:8000/ocorrencia?' + 'MATRICULA=${widget.estudanteModelo.dados[widget.estudanteModelo.nroAluno]['CD_MATRICULA']}&' + 'CIDADE=${widget.estudanteModelo.cidade}'; + print(url); + final response = await http.get(Uri.parse(url)); + var map = json.decode(response.body); + if(map==false){ + ocorrencias.add(EventoModelo(titulo: 'Nenhuma ocorrência', data: '')); + }else{ + ocorrencias.add(EventoModelo(titulo: map['DESC_OCORRENCIA'], data: map['DATA'])); + } + carregandoOcorrencias = false; + setState(() {}); + } @override void initState() { super.initState(); - data = [ - _ChartData('Faltas', 10,Color(0xffD9D9D9)), - _ChartData('Presenças', 90,Color(0xff43A65F)), - ]; - _tooltip = TooltipBehavior(enable: true); + buscarEventos(); + buscarOcorrencia(); + // data = [ + // _ChartData('Faltas', 10,Color(0xffD9D9D9)), + // _ChartData('Presenças', 90,Color(0xff43A65F)), + // ]; + // _tooltip = TooltipBehavior(enable: true); } Widget graph(BuildContext context) { @@ -83,32 +128,26 @@ class _TelaSituacaoEscolarState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextCustom(text: 'Próximos Eventos',fontWeight: FontWeight.bold,), - Row( - children: [ - Container( - width: Dimensoes.width*0.5, - child: TextCustom(text: 'Viagem para o Museu',) - ), - Container( - alignment: Alignment.center, - width: Dimensoes.width*0.3, - child: TextCustom(text: '01/06/2023',) - ), - ], - ), - Row( - children: [ - Container( - width: Dimensoes.width*0.5, - child: TextCustom(text: 'Apresentação dia dos pais',) - ), - Container( - alignment: Alignment.center, - width: Dimensoes.width*0.3, - child: TextCustom(text: '13/08/2023',) - ), - ], - ), + carregandoEventos?Container( + padding: EdgeInsets.all(50), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + CircularProgressIndicator(color: PaletaCores.cinzaClaro), + SizedBox(width: 20,), + TextCustom(text: 'Carregando Eventos') + ], + ), + ):Container( + height: eventos.length*23, + child: ListView.builder( + physics: NeverScrollableScrollPhysics(), + itemCount: eventos.length, + itemBuilder: (context,index){ + return ItemEventoHome(titulo: eventos[index].titulo,data: eventos[index].data,); + } + ), + ) ], ), ), @@ -124,16 +163,26 @@ class _TelaSituacaoEscolarState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextCustom(text: 'Última Ocorrência',fontWeight: FontWeight.bold,), - Row( + carregandoEventos?Container( + padding: EdgeInsets.all(50), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + CircularProgressIndicator(color: PaletaCores.cinzaClaro), + SizedBox(width: 20,), + TextCustom(text: 'Carregando Ocorrência') + ], + ), + ):Row( children: [ Container( width: Dimensoes.width*0.5, - child: TextCustom(text: 'Aluno Ausente',) + child: TextCustom(text:ocorrencias.length==0?'': ocorrencias[0].titulo,) ), Container( alignment: Alignment.center, width: Dimensoes.width*0.3, - child: TextCustom(text: '08/06/2023',) + child: TextCustom(text:ocorrencias.length==0?'': ocorrencias[0].data,) ), ], ),