salvas novas chamadas no banco na tela_faltas.dart

This commit is contained in:
Reginaldo
2023-12-07 14:53:09 -03:00
parent 3a5b2bdb44
commit 7fe3a16aef
21 changed files with 456 additions and 144 deletions

View File

@@ -1 +1 @@
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"package_info","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info-2.0.2\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_foundation-2.3.4\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"android":[{"name":"package_info","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info-2.0.2\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_android-2.2.1\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"package_info","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info-2.0.2\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_foundation-2.3.4\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_linux-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_linux-2.3.2\\\\","native_build":false,"dependencies":["path_provider_linux"]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_windows-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_windows","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_windows-2.3.2\\\\","native_build":false,"dependencies":["path_provider_windows"]}],"web":[{"name":"shared_preferences_web","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_web-2.2.1\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"package_info","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]}],"date_created":"2023-12-05 10:48:36.879430","version":"3.13.9"}
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"package_info","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info-2.0.2\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_foundation-2.3.4\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"android":[{"name":"package_info","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info-2.0.2\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_android-2.2.1\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"package_info","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info-2.0.2\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_foundation-2.3.4\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_linux-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_linux-2.3.2\\\\","native_build":false,"dependencies":["path_provider_linux"]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_windows-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_windows","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_windows-2.3.2\\\\","native_build":false,"dependencies":["path_provider_windows"]}],"web":[{"name":"shared_preferences_web","path":"C:\\\\Users\\\\Reginaldo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_web-2.2.1\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"package_info","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]}],"date_created":"2023-12-07 09:13:43.135866","version":"3.13.9"}

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
#Tue Dec 05 10:49:21 BRT 2023
#Thu Dec 07 09:14:43 BRT 2023
base.0=D\:\\PROJETOS\\clientes\\rkm\\rkm_educa_prof_app\\build\\app\\intermediates\\dex\\debug\\mergeDexDebug\\classes.dex
path.0=classes.dex
renamed.0=classes.dex

View File

@@ -1 +1 @@
8c8e0b5ffbd83354391d0b3009cab539f4e22e85
5d83a7fc267472f956633891656b122c82d145d0

View File

@@ -1,46 +1,27 @@
import 'package:flutter/material.dart';
import 'package:rkm_educa_prof_app/componentes/text_custom.dart';
import '../modelos/modelo_presenca_aluno.dart';
import '../utils/cores.dart';
import '../utils/dimensoes.dart';
class ItemAlunoPresenca extends StatelessWidget {
String NO_ALUNO;
bool edit;
int CD_AULA1;
int CD_AULA2;
int CD_AULA3;
int CD_AULA4;
int CD_AULA5;
bool FL_PRESENTE_AUSENTE1;
bool FL_PRESENTE_AUSENTE2;
bool FL_PRESENTE_AUSENTE3;
bool FL_PRESENTE_AUSENTE4;
bool FL_PRESENTE_AUSENTE5;
var onChanged1;
var onChanged2;
var onChanged3;
var onChanged4;
var onChanged5;
ModeloPresencaAluno aluno;
ItemAlunoPresenca({
required this.NO_ALUNO,
required this.edit,
required this.CD_AULA1,
required this.CD_AULA2,
required this.CD_AULA3,
required this.CD_AULA4,
required this.CD_AULA5,
required this.FL_PRESENTE_AUSENTE1,
required this.FL_PRESENTE_AUSENTE2,
required this.FL_PRESENTE_AUSENTE3,
required this.FL_PRESENTE_AUSENTE4,
required this.FL_PRESENTE_AUSENTE5,
required this.onChanged1,
required this.onChanged2,
required this.onChanged3,
required this.onChanged4,
required this.onChanged5,
required this.aluno
});
@override
@@ -51,53 +32,57 @@ class ItemAlunoPresenca extends StatelessWidget {
children: [
Container(
width: Dimensoes.width*0.6,
child: TextCustom(text: NO_ALUNO,size: 12.0)
child: TextCustom(text: aluno.NO_ALUNO,size: 12.0)
),
Spacer(),
CD_AULA1==0?Container():TextCustom(text: '${CD_AULA1}ª',size: 15.0),
CD_AULA1==0?Container():Container(
width: 25,
child: Checkbox(
value: FL_PRESENTE_AUSENTE1,
activeColor: PaletaCores.cinzaEscuro,
onChanged:!edit?null:onChanged1
),
),
CD_AULA2==0?Container():TextCustom(text: '${CD_AULA2}ª',size: 15.0),
CD_AULA2==0?Container():Container(
width: 25,
child: Checkbox(
value: FL_PRESENTE_AUSENTE2,
activeColor: PaletaCores.cinzaEscuro,
onChanged:!edit?null: onChanged2
),
),
CD_AULA3==0?Container():TextCustom(text: '${CD_AULA3}ª',size: 15.0),
CD_AULA3==0?Container():Container(
width: 25,
child: Checkbox(
value: FL_PRESENTE_AUSENTE3,
activeColor: PaletaCores.cinzaEscuro,
onChanged:!edit?null:onChanged3
),
),
CD_AULA4==0?Container():TextCustom(text: '${CD_AULA4}ª',size: 15.0),
CD_AULA4==0?Container():Container(
width: 25,
child: Checkbox(
value: FL_PRESENTE_AUSENTE4,
activeColor: PaletaCores.cinzaEscuro,
onChanged:!edit?null:onChanged4
),
),
CD_AULA5==0?Container():TextCustom(text: '${CD_AULA5}ª',size: 15.0),
CD_AULA5==0?Container():Container(
width: 25,
child: Checkbox(
value: FL_PRESENTE_AUSENTE5,
activeColor: PaletaCores.cinzaEscuro,
onChanged:!edit?null:onChanged5
),
aluno.STATUS!='MATRICULADO'?TextCustom(text: 'TRANSFERIDO', size: 12.0, fontWeight: FontWeight.bold,color: Colors.red,):Row(
children: [
aluno.CD_AULA1==0?Container():TextCustom(text: '${aluno.CD_AULA1}ª',size: 15.0),
aluno.CD_AULA1==0?Container():Container(
width: 25,
child: Checkbox(
value: aluno.FL_PRESENTE_AUSENTE1,
activeColor: PaletaCores.cinzaEscuro,
onChanged:!edit?null:onChanged1
),
),
aluno.CD_AULA2==0?Container():TextCustom(text: '${aluno.CD_AULA2}ª',size: 15.0),
aluno.CD_AULA2==0?Container():Container(
width: 25,
child: Checkbox(
value: aluno.FL_PRESENTE_AUSENTE2,
activeColor: PaletaCores.cinzaEscuro,
onChanged:!edit?null: onChanged2
),
),
aluno.CD_AULA3==0?Container():TextCustom(text: '${aluno.CD_AULA3}ª',size: 15.0),
aluno.CD_AULA3==0?Container():Container(
width: 25,
child: Checkbox(
value: aluno.FL_PRESENTE_AUSENTE3,
activeColor: PaletaCores.cinzaEscuro,
onChanged:!edit?null:onChanged3
),
),
aluno.CD_AULA4==0?Container():TextCustom(text: '${aluno.CD_AULA4}ª',size: 15.0),
aluno.CD_AULA4==0?Container():Container(
width: 25,
child: Checkbox(
value: aluno.FL_PRESENTE_AUSENTE4,
activeColor: PaletaCores.cinzaEscuro,
onChanged:!edit?null:onChanged4
),
),
aluno.CD_AULA5==0?Container():TextCustom(text: '${aluno.CD_AULA5}ª',size: 15.0),
aluno.CD_AULA5==0?Container():Container(
width: 25,
child: Checkbox(
value: aluno.FL_PRESENTE_AUSENTE5,
activeColor: PaletaCores.cinzaEscuro,
onChanged:!edit?null:onChanged5
),
),
],
),
],
),

View File

@@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:gainer_crypto/crypto.dart';
import 'package:http/http.dart' as http;
import 'package:intl/intl.dart';
import 'package:rkm_educa_prof_app/modelos/modelo_presenca_aluno.dart';
class MainControllers{
encrypt(String senhaDigitada,String senhaUsuario) {
@@ -80,4 +81,152 @@ class MainControllers{
return DateTime.now().year-1;
}
}
atualizarChamada(List<ModeloPresencaAluno> dados, List usuario)async{
List<bool> response = [];
for(int i = 0; dados.length > i; i++){
if(dados[i].STATUS_DADOS!='NOVO'){
if(dados[i].CD_AULA1!=0){
response.add(await atualizarPresencaAluno(dados[i],usuario,dados[i].CD_AULA1, dados[i].FL_PRESENTE_AUSENTE1));
print(dados[i].CD_AULA1);
print('foi alterado os dados ${dados[i].NO_ALUNO}');
}
if(dados[i].CD_AULA2!=0){
response.add(await atualizarPresencaAluno(dados[i],usuario,dados[i].CD_AULA2, dados[i].FL_PRESENTE_AUSENTE2));
print(dados[i].CD_AULA2);
print('foi alterado os dados ${dados[i].NO_ALUNO}');
}
if(dados[i].CD_AULA3!=0){
response.add(await atualizarPresencaAluno(dados[i],usuario,dados[i].CD_AULA3, dados[i].FL_PRESENTE_AUSENTE3));
print(dados[i].CD_AULA3);
print('foi alterado os dados ${dados[i].NO_ALUNO}');
}
if(dados[i].CD_AULA4!=0){
response.add(await atualizarPresencaAluno(dados[i],usuario,dados[i].CD_AULA4, dados[i].FL_PRESENTE_AUSENTE4));
print(dados[i].CD_AULA4);
print('foi alterado os dados ${dados[i].NO_ALUNO}');
}
if(dados[i].CD_AULA5!=0){
response.add(await atualizarPresencaAluno(dados[i],usuario,dados[i].CD_AULA5, dados[i].FL_PRESENTE_AUSENTE5));
print(dados[i].CD_AULA5);
print('foi alterado os dados ${dados[i].NO_ALUNO}');
}
}else{
print('nada foi alterado');
}
}
if(!response.contains(false)){
print('TODOS FORAM EDITADOS');
return true;
}else{
print('ALGUM DADOS NÃO ALTERADO');
return false;
}
}
Future<bool> atualizarPresencaAluno(ModeloPresencaAluno dados,List usuario, int AULA, bool FL_PRESENTE_AUSENTE)async{
final url = '${usuario[2]}/editarchamada';
print(dados.DT_DIARIO_CLASSE);
print(AULA);
print(dados.CD_SALA);
print(dados.CD_MATRICULA);
print(usuario[0]);
print(usuario[2]);
final response = await http.post(
Uri.parse(url),
body:{
'DT_DIARIO_CLASSE' : dados.DT_DIARIO_CLASSE.toString(),
'FL_PRESENTE_AUSENTE': FL_PRESENTE_AUSENTE?'A':'P',
'CD_AULA' : AULA.toString(),
'CD_SALA' : dados.CD_SALA.toString(),
'CD_MATRICULA' : dados.CD_MATRICULA.toString(),
'CIDADE' : usuario[0].toString(),
}
);
print('response : ${response.body}');
if(response.body=='editado com sucesso'){
return true;
}else{
return false;
}
}
Future <int> salvarDiarioClasse(List usuario, List dados,int CD_AULA)async{
final url = '${usuario[2]}/salvardiarioclasse';
final response = await http.post(
Uri.parse(url),
body:{
'DT_DIARIO_CLASSE': dados[0].toString(),
'CD_SALA' : dados[1].toString(),
'CD_AULA' : CD_AULA.toString(),
'CD_CALENDARIO' : dados[2].toString(),
'CD_DISCIPLINA' : dados[3].toString(),
'CD_USUARIO' : usuario[8].toString(),
'CIDADE' : usuario[0].toString(),
}
);
print('response : ${response.body}');
if(response.body=='sucesso'){
return CD_AULA;
}else{
return 0;
}
}
Future<bool>verificarDadosNovaChamada(List<ModeloPresencaAluno> dados, List usuario)async{
List<bool> response = [];
for(int i = 0; dados.length > i; i++){
if(dados[i].CD_AULA1!=0){
response.add(await salvarChamadaNova(dados[i],usuario,dados[i].CD_AULA1, dados[i].FL_PRESENTE_AUSENTE1));
print(dados[i].CD_AULA1);
print('salvo novos dados do ${dados[i].NO_ALUNO}');
}
if(dados[i].CD_AULA2!=0){
response.add(await salvarChamadaNova(dados[i],usuario,dados[i].CD_AULA2, dados[i].FL_PRESENTE_AUSENTE2));
print(dados[i].CD_AULA2);
print('salvo novos dados do ${dados[i].NO_ALUNO}');
}
if(dados[i].CD_AULA3!=0){
response.add(await salvarChamadaNova(dados[i],usuario,dados[i].CD_AULA3, dados[i].FL_PRESENTE_AUSENTE3));
print(dados[i].CD_AULA3);
print('salvo novos dados do ${dados[i].NO_ALUNO}');
}
if(dados[i].CD_AULA4!=0){
response.add(await salvarChamadaNova(dados[i],usuario,dados[i].CD_AULA4, dados[i].FL_PRESENTE_AUSENTE4));
print(dados[i].CD_AULA4);
print('salvo novos dados do ${dados[i].NO_ALUNO}');
}
if(dados[i].CD_AULA5!=0){
response.add(await salvarChamadaNova(dados[i],usuario,dados[i].CD_AULA5, dados[i].FL_PRESENTE_AUSENTE5));
print(dados[i].CD_AULA5);
print('salvo novos dados do ${dados[i].NO_ALUNO}');
}
}
if(!response.contains(false)){
print('TODOS FORAM SALVOS');
return true;
}else{
print('ALGUM USUARIO NÃO SALVO');
return false;
}
}
Future<bool>salvarChamadaNova(ModeloPresencaAluno dados,List usuario, int AULA, bool FL_PRESENTE_AUSENTE)async{
final url = '${usuario[2]}/salvarnovachamada';
final response = await http.post(
Uri.parse(url),
body:{
'DT_DIARIO_CLASSE' : dados.DT_DIARIO_CLASSE.toString(),
'CD_SALA' : dados.CD_SALA.toString(),
'CD_AULA' : AULA.toString(),
'CD_MATRICULA' : dados.CD_MATRICULA.toString(),
'FL_PRESENTE_AUSENTE' : FL_PRESENTE_AUSENTE?'A':'P',
'CD_USUARIO_SISTEMA_REGISTRO' : usuario[8].toString(),
'CIDADE' : usuario[0].toString(),
}
);
print('response : ${response.body}');
if(response.body=='sucesso'){
return true;
}else{
return false;
}
}
}

View File

@@ -1,5 +1,6 @@
class ModeloPresencaAluno{
String DT_DIARIO_CLASSE;
int CD_SALA;
int CD_AULA1;
int CD_AULA2;
int CD_AULA3;
@@ -15,9 +16,12 @@ class ModeloPresencaAluno{
String NO_ALUNO;
String NR_TURMA;
int CD_DISCIPLINA;
String STATUS;
String STATUS_DADOS;
ModeloPresencaAluno({
required this.DT_DIARIO_CLASSE,
required this.CD_SALA,
required this.CD_MATRICULA,
required this.CD_ALUNO,
required this.NO_ALUNO,
@@ -33,5 +37,7 @@ class ModeloPresencaAluno{
this.FL_PRESENTE_AUSENTE3 = false,
this.FL_PRESENTE_AUSENTE4 = false,
this.FL_PRESENTE_AUSENTE5 = false,
required this.STATUS,
this.STATUS_DADOS = 'NOVO'
});
}

View File

@@ -10,12 +10,13 @@ import 'package:rkm_educa_prof_app/componentes/dropdown_periodo.dart';
import 'package:rkm_educa_prof_app/componentes/item_aluno_presenca.dart';
import 'package:rkm_educa_prof_app/componentes/snackBars.dart';
import 'package:rkm_educa_prof_app/componentes/text_custom.dart';
import 'package:rkm_educa_prof_app/controllers/main_controllers.dart';
import 'package:rkm_educa_prof_app/modelos/modelo_periodo.dart';
import 'package:rkm_educa_prof_app/modelos/modelo_presenca_aluno.dart';
import '../componentes/appbar_custom.dart';
import '../componentes/drawer_custom.dart';
import '../componentes/item_subtitulo_texto.dart';
import '../modelos/modelo_disciplina.dart';
import '../modelos/modelo_presenca_aluno.dart';
import '../utils/cores.dart';
import '../utils/dimensoes.dart';
@@ -35,6 +36,7 @@ class _TelaFaltasState extends State<TelaFaltas> {
List<ModeloDisciplina> disciplinas = [];
List<ModeloPeriodo> periodos = [];
List<ModeloPresencaAluno> alunos = [];
List<int> AULAS = [];
List turmas = [];
List tipoEnsino = [];
ModeloDisciplina? selecionaDisciplina;
@@ -51,6 +53,10 @@ class _TelaFaltasState extends State<TelaFaltas> {
double hightLine = 40;
int DIA_SEMANA = 0;
bool edit = false;
bool novaChamada = false;
String SIGLA_TIPO_ENSINO = '';
List<int> DIARIO_CLASSE = [];
bool SALVANDO = false;
EventList<Event> _markedDateMap = new EventList<Event>(
events: {},
);
@@ -63,7 +69,7 @@ class _TelaFaltasState extends State<TelaFaltas> {
width: 40,
height: 40,
child: Center(
child: TextCustom(text: dia,fontWeight: FontWeight.bold,size: 14.0,color: cor==Color(0xffee1d24)?Colors.white:PaletaCores.cinza),
child: TextCustom(text: dia,fontWeight: FontWeight.bold,size: 14.0,color: Colors.white),
),
);
@@ -98,6 +104,9 @@ class _TelaFaltasState extends State<TelaFaltas> {
turmas.add(
'${disciplinas[i].GRAU} - ${disciplinas[i].DESC_SERIE} - ${disciplinas[i].TURMA} - ${disciplinas[i].HR_INICIO=='07:00:00'?'MANHA':'TARDE'}'
);
if(SIGLA_TIPO_ENSINO != disciplinas[i].GRAU.toString().trim().toUpperCase()){
SIGLA_TIPO_ENSINO = disciplinas[i].GRAU.toString().trim().toUpperCase();
}
if(turmas.isNotEmpty){
List duplicada = turmas.toSet().toList();
turmas = duplicada;
@@ -151,23 +160,35 @@ class _TelaFaltasState extends State<TelaFaltas> {
buscarGrade(int CD_SALA, int CD_DISCIPLINA)async{
final url = '${widget.dados[2]}/buscargrade?CD_SALA=${CD_SALA}&CD_DISCIPLINA=${CD_DISCIPLINA}&CIDADE=${widget.dados[0]}';
print(url);
// print(url);
final response = await http.get(Uri.parse(url));
List map = json.decode(response.body);
if(map.isNotEmpty){
print(map);
// print(map);
AULAS.clear();
List diasSemana = [];
List semana = ['DOMINGO', 'SEGUNDAS', 'TERÇAS', 'QUARTAS', 'QUINTAS', 'SEXTAS', 'SÁBADOS'];
for(int i = 0; map.length > i; i ++){
diasSemana.add(map[i]['DIA_SEMANA']);
diasSemana.add(int.parse(map[i]['DIA_SEMANA'].toString().trim()));
if(DIA_SEMANA==map[i]['DIA_SEMANA']){
AULAS.add(map[i]['AULA']);
}
}
print('AULAS');
print(AULAS);
List diasAula = diasSemana.toSet().toList();
diasSemana = diasAula;
if(!diasSemana.contains(DIA_SEMANA)){
_dataSelecionada = null;
_markedDateMap.clear();
showSnackBar(context, 'ESSA AULA É AS ${semana[diasSemana[0]]}!', Colors.red);
}else{
if(_dataSelecionada!=null){
buscarchamadasrealizadas(CD_SALA,CD_DISCIPLINA);
// print('dias das aulas');
// print(diasSemana);
// print('aulas');
// print(AULAS);
buscarchamadasrealizadas();
}else{
showSnackBar(context, 'Selecione uma data!', Colors.red);
}
@@ -176,18 +197,20 @@ class _TelaFaltasState extends State<TelaFaltas> {
setState(() {});
}
buscarchamadasrealizadas(int CD_SALA,int CD_DISCIPLINA)async{
buscarchamadasrealizadas()async{
String dia = _dataSelecionada!.day.toString();
String mes = _dataSelecionada!.month.toString();
String ano = _dataSelecionada!.year.toString();
final url = '${widget.dados[2]}/buscarchamadasrealizadas?CD_SALA=${CD_SALA}&CD_DISCIPLINA=${CD_DISCIPLINA}&DATA=$ano-$mes-$dia&CIDADE=${widget.dados[0]}';
print(url);
final url = '${widget.dados[2]}/buscarchamadasrealizadas?'
'CD_SALA=${CD_SALA}&CD_DISCIPLINA=${CD_DISCIPLINA}&DATA=$ano-$mes-$dia&ANO=${int.parse(ano)}&CIDADE=${widget.dados[0]}';
// print(url);
final response = await http.get(Uri.parse(url));
List map = json.decode(response.body);
print(map);
// print(map);
if(map.isNotEmpty){
alunos.clear();
ModeloPresencaAluno? modeloPresencaAluno;
for(int i = 0; map.length > i; i++){
int indexAluno = alunos.indexWhere((aluno) => aluno.CD_MATRICULA == map[i]['CD_MATRICULA']);
@@ -196,6 +219,7 @@ class _TelaFaltasState extends State<TelaFaltas> {
alunos.add(
ModeloPresencaAluno(
DT_DIARIO_CLASSE: map[i]['DT_DIARIO_CLASSE'],
CD_SALA: CD_SALA,
CD_MATRICULA: map[i]['CD_MATRICULA'],
CD_ALUNO: map[i]['CD_ALUNO'],
NO_ALUNO: map[i]['NO_ALUNO'],
@@ -206,11 +230,12 @@ class _TelaFaltasState extends State<TelaFaltas> {
CD_AULA3: map[i]['CD_AULA'] == 3?3:0,
CD_AULA4: map[i]['CD_AULA'] == 4?4:0,
CD_AULA5: map[i]['CD_AULA'] == 5?5:0,
FL_PRESENTE_AUSENTE1: map[i]['FL_PRESENTE_AUSENTE'].toString().toUpperCase()=='A' && map[i]['CD_AULA'] == 1?true:false,
FL_PRESENTE_AUSENTE2: map[i]['FL_PRESENTE_AUSENTE'].toString().toUpperCase()=='A' && map[i]['CD_AULA'] == 2?true:false,
FL_PRESENTE_AUSENTE3: map[i]['FL_PRESENTE_AUSENTE'].toString().toUpperCase()=='A' && map[i]['CD_AULA'] == 3?true:false,
FL_PRESENTE_AUSENTE4: map[i]['FL_PRESENTE_AUSENTE'].toString().toUpperCase()=='A' && map[i]['CD_AULA'] == 4?true:false,
FL_PRESENTE_AUSENTE5: map[i]['FL_PRESENTE_AUSENTE'].toString().toUpperCase()=='A' && map[i]['CD_AULA'] == 5?true:false,
FL_PRESENTE_AUSENTE1: map[i]['FL_PRESENTE_AUSENTE'].toString().toUpperCase()=='A'?true:false,
FL_PRESENTE_AUSENTE2: map[i]['FL_PRESENTE_AUSENTE'].toString().toUpperCase()=='A'?true:false,
FL_PRESENTE_AUSENTE3: map[i]['FL_PRESENTE_AUSENTE'].toString().toUpperCase()=='A'?true:false,
FL_PRESENTE_AUSENTE4: map[i]['FL_PRESENTE_AUSENTE'].toString().toUpperCase()=='A'?true:false,
FL_PRESENTE_AUSENTE5: map[i]['FL_PRESENTE_AUSENTE'].toString().toUpperCase()=='A'?true:false,
STATUS: map[i]['STATUS'],
)
);
}else{
@@ -232,31 +257,137 @@ class _TelaFaltasState extends State<TelaFaltas> {
}
}
}
novaChamada = false;
SALVANDO = false;
edit = false;
print('alunos : ${alunos.length}');
}else{
print('chamada não realizada');
showSnackBar(context, 'Chamada não foi realizada nesta data!', Colors.red);
showSnackBar(context, 'NOVA CHAMADA!', Colors.deepOrangeAccent);
novaChamada = true;
buscarNovaChamada(CD_SALA, ano);
}
setState(() {});
}
buscarNovaChamada(int sala, String ano)async{
final url = '${widget.dados[2]}/buscarnovachamada?''CD_SALA=${sala}&ANO=${ano}&CIDADE=${widget.dados[0]}';
// print(url);
final response = await http.get(Uri.parse(url));
List map = json.decode(response.body);
// print(map);
if(map.isNotEmpty){
String dia = _dataSelecionada!.day.toString();
String mes = _dataSelecionada!.month.toString();
String ano = _dataSelecionada!.year.toString();
alunos.clear();
for(int i = 0; map.length > i; i++){
alunos.add(
new ModeloPresencaAluno(
DT_DIARIO_CLASSE: '$ano-$mes-$dia',
CD_SALA: sala,
CD_MATRICULA: map[i]['CD_MATRICULA'],
CD_ALUNO: map[i]['CD_ALUNO'],
NO_ALUNO: map[i]['NO_ALUNO'],
NR_TURMA: map[i]['NR_TURMA'],
CD_DISCIPLINA: CD_DISCIPLINA,
STATUS: map[i]['STATUS'],
CD_AULA1: AULAS.contains(1)?1:0,
CD_AULA2: AULAS.contains(2)?2:0,
CD_AULA3: AULAS.contains(3)?3:0,
CD_AULA4: AULAS.contains(4)?4:0,
CD_AULA5: AULAS.contains(5)?5:0,
)
);
}
}else{
showSnackBar(context, 'NÃO FOI POSSÍVEL CRIAR UMA NOVA CHAMADA', Colors.red);
}
setState(() {});
}
buscarCodigoCalendario()async{
String dia = _dataSelecionada!.day.toString();
String mes = _dataSelecionada!.month.toString();
String ano = _dataSelecionada!.year.toString();
final url = '${widget.dados[2]}/buscarcodigocalendario?CD_CAD_DIVERSO=${widget.dados[4]}&'
'DT_CALENDARIO=$ano-$mes-$dia&SIGLA=$SIGLA_TIPO_ENSINO&CIDADE=${widget.dados[0]}';
print(url);
final response = await http.get(Uri.parse(url));
List map = json.decode(response.body);
print('CD_CALENDARIO');
print(map[0]['CD_CALENDARIO']);
buscarDiarioClasse(dia, mes, ano, map[0]['CD_CALENDARIO']);
}
buscarDiarioClasse(String dia, String mes, String ano,int CD_CALENDARIO)async{
List<int> buscaAulas = [];
for(int i = 0; AULAS.length > i; i++){
final url = '${widget.dados[2]}/buscardiarioclasse?CD_AULA=${AULAS[i]}&CD_SALA=$CD_SALA&'
'DT_DIARIO_CLASSE=$ano-$mes-$dia&CIDADE=${widget.dados[0]}';
print(url);
final response = await http.get(Uri.parse(url));
List map = json.decode(response.body);
print(map);
if(map.isNotEmpty){
buscaAulas.add(AULAS[i]);
}
}
if(buscaAulas.isEmpty){
DIARIO_CLASSE = [];
List dados = [
'$ano-$mes-$dia',
CD_SALA,
CD_CALENDARIO,
CD_DISCIPLINA
];
for(int i = 0; AULAS.length> i; i++){
DIARIO_CLASSE.add(await MainControllers().salvarDiarioClasse(widget.dados, dados, AULAS[i])) ;
}
}
print('DIARIO_CLASSE : $DIARIO_CLASSE');
if(DIARIO_CLASSE.isNotEmpty){
bool SALVAMENTO_BANCO = await MainControllers().verificarDadosNovaChamada(alunos,widget.dados);
if(SALVAMENTO_BANCO){
showSnackBar(context, 'CHAMADA FOI SALVA', Colors.green);
buscarchamadasrealizadas();
}
}
}
atualizarData(DateTime date, List<Event> events){
_markedDateMap.clear();
_markedDateMap.add(
date,
Event(
date: date,
icon: _eventIcon(date.day.toString(),Colors.indigo)
)
);
int resultado = date.compareTo(DateTime.now());
print(resultado);
if(resultado <= 0 ){
_markedDateMap.clear();_markedDateMap.add(
date,
Event(
date: date,
icon: _eventIcon(date.day.toString(),Colors.deepOrangeAccent)
)
);
alunos.clear();
selecionaDisciplina = null;
_dataSelecionada = date;
DIA_SEMANA = date.weekday;
setState(() {});
events.forEach((event) => print(event.title));
print(_dataSelecionada);
setState(() {});
// events.forEach((event) => print(event.title));
print(_dataSelecionada);
}else{
showSnackBar(context, 'Esta data maior do que a atual', Colors.red);
}
}
@override
@@ -275,6 +406,13 @@ class _TelaFaltasState extends State<TelaFaltas> {
fontSize: 14
);
TextStyle selectedDayTextStyle = TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontFamily: 'Nunito',
fontSize: 14
);
TextStyle textStyleFDS = TextStyle(
color: Colors.red,
fontWeight: FontWeight.bold,
@@ -286,18 +424,18 @@ class _TelaFaltasState extends State<TelaFaltas> {
locale: 'pt',
weekdayTextStyle: TextStyle(color: PaletaCores.cinza,fontSize: 14,fontFamily: 'Nunito',),
daysTextStyle: textStyle,
selectedDayButtonColor: Colors.indigo,
selectedDayButtonColor: Colors.deepOrangeAccent,
weekendTextStyle: textStyleFDS,
markedDatesMap: _markedDateMap,
height: Dimensoes.height*0.45,
targetDateTime: dataAtual,
markedDateCustomTextStyle: textStyle,
markedDateCustomTextStyle: selectedDayTextStyle,
markedDateMoreShowTotal: null,
showHeader: false,
todayTextStyle: textStyle,
isScrollable: false,
todayButtonColor: Colors.green,
selectedDayTextStyle: textStyle,
todayButtonColor: Colors.white,
selectedDayTextStyle: selectedDayTextStyle,
minSelectedDate: DT_INICIAL,
maxSelectedDate: DT_FINAL,
markedDateIconBuilder: (event){
@@ -312,12 +450,12 @@ class _TelaFaltasState extends State<TelaFaltas> {
return Scaffold(
appBar: AppBarCustom().appbar(context, 'LANÇAMENTO DE FALTAS'),
drawer: DrawerCustom(dados: widget.dados,),
floatingActionButton: edit?Row(
floatingActionButton: exibirCalendario?Container():edit?Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
CircleAvatar(
SALVANDO?Container():CircleAvatar(
backgroundColor: Colors.red,
child: IconButton(
icon: Icon(Icons.clear,color: Colors.white,),
@@ -328,11 +466,28 @@ class _TelaFaltasState extends State<TelaFaltas> {
),
),
SizedBox(width: 10,),
CircleAvatar(
SALVANDO?Container():CircleAvatar(
backgroundColor: PaletaCores.verdeCalendario,
child: IconButton(
icon: Icon(Icons.check,color: Colors.white,),
onPressed: ()=> setState(()=>edit=false)
onPressed: ()async{
if(novaChamada){
setState(()=>SALVANDO = true);
buscarCodigoCalendario();
}else{
setState(()=>SALVANDO = true);
bool aguardandoAlteracao = await MainControllers().atualizarChamada(alunos,widget.dados);
if(aguardandoAlteracao){
buscarchamadasrealizadas();
setState(()=>SALVANDO = false);
setState(()=>edit=false);
showSnackBar(context, 'DADOS SALVOS COM SUCESSO', Colors.green);
}else{
setState(()=>SALVANDO = false);
showSnackBar(context, 'DADOS NÃO FORAM SALVOS', Colors.red);
}
}
}
)
),
],
@@ -373,7 +528,7 @@ class _TelaFaltasState extends State<TelaFaltas> {
_calendario,
Center(child: TextButton(
style: TextButton.styleFrom(
backgroundColor: PaletaCores.verdeCalendario,
backgroundColor: Colors.deepOrangeAccent,
),
onPressed: ()=>setState(()=>exibirCalendario = false),
child: TextCustom(text: 'SELECIONAR', color: Colors.white, size: 10.0),
@@ -467,7 +622,19 @@ class _TelaFaltasState extends State<TelaFaltas> {
setState(() {});
},
),
alunos.isEmpty?Container():Container(
SALVANDO?Container(
height: Dimensoes.height*0.55,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
CircularProgressIndicator(color: Colors.deepOrangeAccent),
SizedBox(height: 50),
TextCustom(text: 'Salvando dados dos estudantes.\nAguarde...', fontWeight: FontWeight.bold,)
],
),
):Container(),
SALVANDO || alunos.isEmpty?Container():Container(
child: Row(
children: [
TextCustom(text: 'ESTUDANTE',size: 12.0, fontWeight: FontWeight.bold),
@@ -476,29 +643,34 @@ class _TelaFaltasState extends State<TelaFaltas> {
],
),
),
alunos.isEmpty?Container():Container(
SALVANDO || alunos.isEmpty?Container():Container(
height: Dimensoes.height*0.55,
child: ListView.builder(
itemCount: alunos.length,
itemBuilder: (context, index){
return ItemAlunoPresenca(
NO_ALUNO: alunos[index].NO_ALUNO,
edit: edit,
CD_AULA1: alunos[index].CD_AULA1,
CD_AULA2: alunos[index].CD_AULA2,
CD_AULA3: alunos[index].CD_AULA3,
CD_AULA4: alunos[index].CD_AULA4,
CD_AULA5: alunos[index].CD_AULA5,
FL_PRESENTE_AUSENTE1: alunos[index].FL_PRESENTE_AUSENTE1,
FL_PRESENTE_AUSENTE2: alunos[index].FL_PRESENTE_AUSENTE2,
FL_PRESENTE_AUSENTE3: alunos[index].FL_PRESENTE_AUSENTE3,
FL_PRESENTE_AUSENTE4: alunos[index].FL_PRESENTE_AUSENTE4,
FL_PRESENTE_AUSENTE5: alunos[index].FL_PRESENTE_AUSENTE5,
onChanged1: (value)=>setState(()=>alunos[index].FL_PRESENTE_AUSENTE1 = value!),
onChanged2: (value)=>setState(()=>alunos[index].FL_PRESENTE_AUSENTE2 = value!),
onChanged3: (value)=>setState(()=>alunos[index].FL_PRESENTE_AUSENTE3 = value!),
onChanged4: (value)=>setState(()=>alunos[index].FL_PRESENTE_AUSENTE4 = value!),
onChanged5: (value)=>setState(()=>alunos[index].FL_PRESENTE_AUSENTE5 = value!)
onChanged1: (value)=>setState((){
alunos[index].FL_PRESENTE_AUSENTE1 = value!;
alunos[index].STATUS_DADOS = 'ALTERADO';
}),
onChanged2: (value)=>setState((){
alunos[index].FL_PRESENTE_AUSENTE2 = value!;
alunos[index].STATUS_DADOS = 'ALTERADO';
}),
onChanged3: (value)=>setState((){
alunos[index].FL_PRESENTE_AUSENTE3 = value!;
alunos[index].STATUS_DADOS = 'ALTERADO';
}),
onChanged4: (value)=>setState((){
alunos[index].FL_PRESENTE_AUSENTE4 = value!;
alunos[index].STATUS_DADOS = 'ALTERADO';
}),
onChanged5: (value)=>setState((){
alunos[index].FL_PRESENTE_AUSENTE5 = value!;
alunos[index].STATUS_DADOS = 'ALTERADO';
}),
aluno: alunos[index],
);
},
),

View File

@@ -67,15 +67,15 @@ class _TelaLoginState extends State<TelaLogin> {
if(map['NO_USERNAME']==usuario && map['SENHA']==inputSenha.text.toUpperCase()){
showSnackBar(context, 'Acesso validado', Colors.green);
List <String> dados = [
cidade.toUpperCase(),
map['NO_USUARIO_SISTEMA']??'',
urlAPI,
map['NO_FANTASIA']??'',
map['CD_UNIDADE'].toString()??'',
inputLogin.text,
usuario,
inputSenha.text,
map['CD_USUARIO_SISTEMA'].toString()
cidade.toUpperCase(),//0
map['NO_USUARIO_SISTEMA']??'',//1
urlAPI,//2
map['NO_FANTASIA']??'',//3
map['CD_UNIDADE'].toString()??'',//4
inputLogin.text,//5
usuario,//6
inputSenha.text,//7
map['CD_USUARIO_SISTEMA'].toString()//8
];
_prefService.createCacheLogin(dados).then((value){
Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => TelaHome(dados: dados) ));
@@ -91,15 +91,15 @@ class _TelaLoginState extends State<TelaLogin> {
print(map);
showSnackBar(context, 'Acesso validado', Colors.green);
List <String> dados = [
cidade.toUpperCase(),
map['NO_USUARIO_SISTEMA']??'',
urlAPI,
map['NO_FANTASIA']??'',
map['CD_UNIDADE'].toString()??'',
inputLogin.text,
usuario,
inputSenha.text,
map['CD_USUARIO_SISTEMA'].toString()
cidade.toUpperCase(),//0
map['NO_USUARIO_SISTEMA']??'',//1
urlAPI,//2
map['NO_FANTASIA']??'',//3
map['CD_UNIDADE'].toString()??'',//4
inputLogin.text,//5
usuario,//6
inputSenha.text,//7
map['CD_USUARIO_SISTEMA'].toString()//8
];
_prefService.createCacheLogin(dados).then((value) =>
Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => TelaHome(dados: dados) )));

View File

@@ -9,7 +9,7 @@
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Dart SDK" level="project" />
<orderEntry type="library" name="Dart Packages" level="project" />
<orderEntry type="library" name="Flutter Plugins" level="project" />
<orderEntry type="library" name="Dart Packages" level="project" />
</component>
</module>