465 lines
19 KiB
Dart
465 lines
19 KiB
Dart
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 <EstudanteModelo> alunos;
|
|
int indiceAluno;
|
|
|
|
TelaPasse({
|
|
required this.alunos,
|
|
required this.indiceAluno
|
|
});
|
|
|
|
@override
|
|
State<TelaPasse> createState() => _TelaPasseState();
|
|
}
|
|
|
|
class _TelaPasseState extends State<TelaPasse> {
|
|
|
|
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,
|
|
),
|
|
)
|
|
],
|
|
),
|
|
);
|
|
}
|
|
),
|
|
),
|
|
],
|
|
)
|
|
),
|
|
);
|
|
}
|
|
}
|