import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:rkm_educa_app/componentes/alert_default.dart'; import 'package:rkm_educa_app/componentes/appbar_custom.dart'; import 'package:rkm_educa_app/componentes/drawer_custom.dart'; import 'package:rkm_educa_app/componentes/snackBars.dart'; import 'package:rkm_educa_app/componentes/text_custom.dart'; import 'package:rkm_educa_app/modelos/estudante_modelo.dart'; import 'package:http/http.dart' as http; import 'package:rkm_educa_app/utils/dimensoes.dart'; import '../componentes/buttom_custom.dart'; import '../controllers/main_controllers.dart'; import '../utils/cores.dart'; class TelaPasse extends StatefulWidget { List alunos; int indiceAluno; TelaPasse({ required this.alunos, required this.indiceAluno }); @override State createState() => _TelaPasseState(); } class _TelaPasseState extends State { List dadosPasse=[]; List dadosFrequncia = []; List dadosCarteira = []; bool carregando = true; String dataNasc = ''; String dataEmissao = ''; getPasse()async{ String teste_passe = '4E275A169EA2432E949FF90DF8D2CF10'; String passe = widget.alunos[widget.indiceAluno].dados[widget.indiceAluno]['CD_ALUNO']; final url = '${widget.alunos[widget.indiceAluno].URL}/passe?CD_ALUNO=${teste_passe}&CIDADE=${widget.alunos[widget.indiceAluno].cidade}'; print(url); final response = await http.get(Uri.parse(url)); var map = json.decode(response.body); dadosPasse = map; print(dadosPasse); String dataBD = dadosPasse[0]['DT_NASCIMENTO']??''; if(dataBD!=''){ dataNasc = '${dataBD.substring(6,8)} / ${dataBD.substring(4,6)} / ${dataBD.substring(0,4)}'; } String dataDBEmissao = dadosPasse[0]['VALIDADE_CARTEIRINHA']??''; if(dataDBEmissao!=''){ List list = dataDBEmissao.toString().split('-'); dataEmissao = '${list[2]} / ${list[1]} / ${list[0]}'; } if(dadosPasse.length==0){ showSnackBar(context, 'Nenhum passe disponível', Colors.red); carregando = false; setState(() {}); }else{ getFrequencia(teste_passe); } } getFrequencia(String CD_ALUNO)async{ dadosFrequncia.clear(); final url = '${widget.alunos[widget.indiceAluno].URL}/frequencia?CD_ALUNO=${CD_ALUNO}&CIDADE=${widget.alunos[widget.indiceAluno].cidade}'; print(url); final response = await http.get(Uri.parse(url)); var map = json.decode(response.body); dadosFrequncia = map; print(dadosFrequncia); if(dadosPasse.length==0){ showSnackBar(context, 'Nenhuma frequência registrada', Colors.red); }else{ dadosFrequncia = [ {'DIA':1,'PRESENTE':0}, {'DIA':2,'PRESENTE':0}, {'DIA':3,'PRESENTE':0}, {'DIA':4,'PRESENTE':0}, {'DIA':5,'PRESENTE':0}, {'DIA':6,'PRESENTE':0}, {'DIA':7,'PRESENTE':0}, {'DIA':8,'PRESENTE':0}, {'DIA':9,'PRESENTE':0}, {'DIA':10,'PRESENTE':0}, {'DIA':11,'PRESENTE':0}, {'DIA':12,'PRESENTE':0}, {'DIA':13,'PRESENTE':0}, {'DIA':14,'PRESENTE':0}, {'DIA':15,'PRESENTE':0}, {'DIA':16,'PRESENTE':0}, {'DIA':17,'PRESENTE':0}, {'DIA':18,'PRESENTE':0}, {'DIA':19,'PRESENTE':0}, {'DIA':20,'PRESENTE':0}, {'DIA':21,'PRESENTE':0}, {'DIA':22,'PRESENTE':0}, {'DIA':23,'PRESENTE':0}, {'DIA':24,'PRESENTE':0}, {'DIA':25,'PRESENTE':0}, {'DIA':26,'PRESENTE':0}, {'DIA':27,'PRESENTE':0}, {'DIA':28,'PRESENTE':0}, {'DIA':29,'PRESENTE':0}, {'DIA':30,'PRESENTE':0}, {'DIA':31,'PRESENTE':0}, ]; } carregando = false; setState(() {}); // print(dadosFrequncia); } getCarteira()async{ dadosCarteira.clear(); carregando = true; setState(() {}); String teste_passe = '4E275A169EA2432E949FF90DF8D2CF10'; String CD_ALUNO = widget.alunos[widget.indiceAluno].dados[widget.indiceAluno]['CD_ALUNO']; final url = '${widget.alunos[widget.indiceAluno].URL}/carteira?CD_ALUNO=${teste_passe}&CIDADE=${widget.alunos[widget.indiceAluno].cidade}'; print(url); final response = await http.get(Uri.parse(url)); var map = json.decode(response.body); dadosCarteira = map; print(dadosCarteira); carregando = false; setState(() {}); AlertDefault().alert( context, Dimensoes.height*0.8, SafeArea( child: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ Container( alignment: Alignment.topCenter, width: 378, height: 270, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: Column( children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width: 124, height: 159, alignment: Alignment.center, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: TextCustom(text: '3x4',size: 12.0,fontWeight: FontWeight.bold,color: Colors.black,), ), Column( children: [ Container( width: 235, height: 65, alignment: Alignment.center, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: Row( children: [ Container( width: 53, height: 49, child: Image.asset('assets/images/logo_carteirinha_${widget.alunos[widget.indiceAluno].cidade.toLowerCase()}.png'), ), TextCustom(text: widget.alunos[widget.indiceAluno].cidade,size: 16.0,fontWeight: FontWeight.bold,color: Colors.black,), ], ), ), Container( width: 235, height: 20, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: TextCustom(text: '1ª Via - Transporte Escolar',size: 12.0,fontWeight: FontWeight.bold,color: Colors.black,), ), Container( width: 235, height: 20, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: TextCustom(text: 'RA: ${dadosCarteira[0]['NR_RA']}',size: 12.0,fontWeight: FontWeight.bold,color: Colors.black,), ), Container( width: 235, height: 54, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: TextCustom(text: 'Nome: ${dadosCarteira[0]['NO_ALUNO']}',size: 12.0,fontWeight: FontWeight.bold,color: Colors.black), ), ], ), ], ), Container( width: 373, height: 27.5, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: TextCustom(text: ' Endereço: ${dadosCarteira[0]['NO_LOGRADOURO']}, ${dadosCarteira[0]['NR_LOGRADOURO']}, ${dadosCarteira[0]['DESC_BAIRRO']}',size: 12.0,fontWeight: FontWeight.bold,color: Colors.black,), ), Container( width: 373, height: 26.5, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: TextCustom( text: ' Fone: (${dadosCarteira[0]['NR_DDD_TELEFONE']}) ${dadosCarteira[0]['NR_TELEFONE']} Escola: ${dadosCarteira[0]['NO_FANTASIA']}', size: 12.0,fontWeight: FontWeight.bold,color: Colors.black,), ), Container( width: 373, height: 26.5, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: TextCustom( text: ' Celular: (${dadosCarteira[0]['NR_DDD_CELULAR']}) ${dadosCarteira[0]['NR_CELULAR']} Validade: ${dadosCarteira[0]['VALIDADE_CARTEIRINHA']} CEAC: ${dadosCarteira[0]['CEAC'].toString().trim()=='N'?'NÃO':'SIM'}', size: 12.0,fontWeight: FontWeight.bold,color: Colors.black,), ), Container( width: 373, height: 26.5, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: TextCustom(text: ' Tipo Transp.: ${dadosCarteira[0]['FL_TIPO_TRANSPORTE'].toString().trim()=='R'?'TRANSPORTE MUNICIPAL':'TRANSPORTE INTERMUNICIPAL'}',size: 12.0,fontWeight: FontWeight.bold,color: Colors.black,), ), ], ), ), Container( width: 378, height: 270, decoration: BoxDecoration( border: Border.all(width: 4.0) ), child: Row( children: [ Column( children: [ SizedBox(height: 14,), Container( width: 212, height: 60, child: TextCustom( text:'Respeite a orientação do condutor do veículo, pois ele é seu amigo. Obrigatória apresentação desta identificação, diariamente.', maxLines: 4, size: 12.0, textAlign: TextAlign.justify, fontWeight: FontWeight.bold, color: Colors.black, ), ), SizedBox(height: 12,), Container( width: 211, height: 45, child: TextCustom( text:'Casos de insubordinação serão comunicados aos pais e estarão sujeitos a advertência.', maxLines: 3, size: 12.0, textAlign: TextAlign.justify, fontWeight: FontWeight.bold, color: Colors.black, ), ), SizedBox(height: 70,), Container( margin: EdgeInsets.symmetric(horizontal: 5), width: 211, height: 2, color: Colors.black, ), Container( width: 211, height: 45, child: TextCustom( text:'Coordenadoria de Educação', maxLines: 3, size: 12.0, textAlign: TextAlign.center, fontWeight: FontWeight.bold, color: Colors.black, ), ), ], ), Column( children: [ SizedBox(height: 14,), Container( width: 132, height: 112, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: TextCustom(text: 'Ano:', size: 12.0,color: Colors.black,fontWeight: FontWeight.bold), ), SizedBox(height: 14,), Container( width: 132, height: 112, decoration: BoxDecoration( border: Border.all(width: 2.0) ), child: TextCustom(text: 'Ano:', size: 12.0,color: Colors.black,fontWeight: FontWeight.bold), ) ], ), ], ), ), Spacer(), ButtonCustom( text: 'Voltar', fontsize: 14.0, colorBorder: PaletaCores.cinzaClaro, colorButton: PaletaCores.cinzaClaro, colorText: Colors.white, widthCustom: 0.25, heightCustom: 0.05, onPressed: ()=>Navigator.of(context).pop(), ), ], ), ), ) ); } @override void initState() { super.initState(); MainControllers().salvarLog(widget.alunos[widget.indiceAluno], 'PASSE'); getPasse(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBarCustom().appbar(context, 'PASSE ESCOLAR'), drawer: DrawerCustom(alunos: widget.alunos,indiceFilhos: widget.indiceAluno), bottomSheet: carregando?SizedBox(width: 0,height: 0,): Container( width: Dimensoes.width, height: 70, alignment: Alignment.center, child: ButtonCustom( text: 'Exibir Carteira', fontsize: 14.0, colorBorder: PaletaCores.cinzaClaro, colorButton: PaletaCores.cinzaClaro, colorText: Colors.white, widthCustom: 0.8, heightCustom: 0.05, onPressed: ()=>getCarteira(), ), ), body: carregando?Center( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ CircularProgressIndicator(color: PaletaCores.cinzaClaro,), SizedBox(width: 20,), TextCustom(text: 'Buscando dados ...') ], ), ):Container( alignment: Alignment.center, margin: EdgeInsets.all(10), height: Dimensoes.height, child: ListView( children: [ Container( color: Colors.black, child: TextCustom(text: widget.alunos[widget.indiceAluno].NO_ALUNO,fontWeight: FontWeight.bold,color: Colors.white,textAlign: TextAlign.center), ), Row( children: [ Column( children: [ Container( width: Dimensoes.width*0.55, child: TextCustom(text: 'RA: ${dadosPasse[0]['NR_RA']}',size: 14.0, fontWeight: FontWeight.bold) ), Container( width: Dimensoes.width*0.55, child: TextCustom(text: 'DATA NASC: $dataNasc',size: 14.0, fontWeight: FontWeight.bold,) ), ], ), Container( width: Dimensoes.width*0.4, alignment: Alignment.center, child: TextCustom(text: 'CARTEIRA N°: ${dadosPasse[0]['NR_CARTEIRA']}',size: 16.0, fontWeight: FontWeight.bold,) ), ], ), TextCustom(text: 'DATA EMISSÃO: $dataEmissao',size: 14.0, fontWeight: FontWeight.bold,), TextCustom(text: 'LINHA: ${dadosPasse[0]['NR_TRANSPORTE']}',size: 14.0, fontWeight: FontWeight.bold,), TextCustom(text: 'SÉRIE: ${dadosPasse[0]['DESC_SERIE']} - ${dadosPasse[0]['GRAU']}' ' TURNO: ${dadosPasse[0]['TURNO'].toString().trim()=='1'?'MANHÃ':dadosPasse[0]['GRAU'].toString().trim()=='2'?'TARDE':''}',size: 14.0, fontWeight: FontWeight.bold,), TextCustom(text: 'ESCOLA: ${widget.alunos[widget.indiceAluno].ESCOLA}',size: 14.0, fontWeight: FontWeight.bold,), Container( margin: EdgeInsets.symmetric(vertical: 20), color: Colors.black, alignment: Alignment.center, child: TextCustom(text: 'FREQUÊNCIA USO DO PASSE MÊS ${DateTime.now().month}',fontWeight: FontWeight.bold,color: Colors.white,), ), Container( width: Dimensoes.width*0.9, height: Dimensoes.height*0.5, child: GridView.builder( physics: NeverScrollableScrollPhysics(), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 7, mainAxisSpacing: 25, crossAxisSpacing: 0 ), itemCount: dadosFrequncia.length, itemBuilder: (context,index){ return Container( height: 40, width: 40, child: Column( mainAxisSize: MainAxisSize.min, children: [ Container( alignment: Alignment.center, width: 20, height: 15, child: TextCustom(text: dadosFrequncia[index]['DIA'].toString(),size: 15.0,)), Container( width: 30, height: 30, child: Checkbox( value: dadosFrequncia[index]['PRESENTE'].toString()=='1'?true:false, onChanged: (v){}, activeColor: PaletaCores.cinzaClaro, ), ) ], ), ); } ), ), ], ) ), ); } }