Files
rkm_educa_prof_app/lib/controllers/main_controllers.dart

337 lines
12 KiB
Dart

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_nota_aluno.dart';
import 'package:rkm_educa_prof_app/modelos/modelo_presenca_aluno.dart';
class MainControllers{
encrypt(String senhaDigitada,String senhaUsuario) {
// Deixa e senha digitada em maiuscula
var senha = senhaDigitada.toUpperCase();
// Faz a criptografia da senha inserida
String senhaMD5 = grHashString(GRCryptoType.md5, senha);
// Retira o tipo (1, 2 ou 3) da senha do Usuário
int tipo = int.parse(senhaUsuario.substring(0, 1));
// Define a possição inicial da quebra da senha
int posicaoInicialMin = 0;
int posicaoInicialMax= 0;
int posicaoFinalMin = 0;
int posicaoFinalMax = 0;
// Pra cada tipo (1, 2 ou 3) define a posição inicial da quebra da senha
if(tipo == 1){
posicaoInicialMin = 0;
posicaoInicialMax = 16;
posicaoFinalMin = 16;
posicaoFinalMax = 32;
} else if(tipo == 2){
posicaoInicialMin = 16;
posicaoInicialMax = 32;
posicaoFinalMin = 0;
posicaoFinalMax = 16;
} else if(tipo == 3){
posicaoInicialMin = 0;
posicaoInicialMax = 1;
posicaoFinalMin = 31;
posicaoFinalMax = 32;
}
String inicio = senhaMD5.substring(posicaoInicialMin, posicaoInicialMax);
String fim = senhaMD5.substring(posicaoFinalMin, posicaoFinalMax);
// Faz a criptografia e concatena ela com sha1 e md5
String senhaCriptogradafa = tipo.toString() + '\$'+ grHashString(GRCryptoType.sha1, inicio + senha + fim);
// Retorna a senha criptografada
return senhaCriptogradafa;
}
salvarLog(String TELA,List dados)async{
final url = '${dados[2]}/log';
// print('dados');
// print(widget.estudanteModelo.dados);
final response = await http.post(
Uri.parse(url),
body:{
'DATA' : DateFormat('dd/MM/yyyy HH:mm').format(DateTime.now()),
'TELA' : TELA,
'CD_USUARIO' : dados[5],
'NO_USUARIO': dados[1],
'CD_ALUNO': dados[6],
'NO_ALUNO': '',
'CIDADE' : dados[0],
'SISTEMA' : 'PROFESSORES'
}
);
print('response : ${response.body}');
}
Future<int> pegarAno(String urlAPI,String cidade)async{
final url = '$urlAPI/mostrar_boletim?ANO=${DateTime.now().year}&CIDADE=$cidade';
print(url);
final response = await http.get(Uri.parse(url));
var map = json.decode(response.body);
String data = map[0]['DT_INICIAL'];
DateTime dataInicial = DateTime.parse(data);
// print(dataInicial);
// print(DateTime.now());
// print((DateTime.now().difference(dataInicial).inDays).toInt());
if(DateTime.now().difference(dataInicial).inDays>=0){
print('exibir ano atual');
return DateTime.now().year;
}else{
print('exibir ano anterior');
return DateTime.now().year-1;
}
}
//CHAMADAS
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;
}
}
//NOTAS
atualizarNota(List<ModeloNotaAluno> dados, List usuario)async{
List<bool> response = [];
for(int i = 0; dados.length > i; i++){
if(dados[i].STATUS_DADOS!='NOVO'){
response.add(await atualizarNotaAluno(dados[i],usuario));
print(dados[i].NOTA.text);
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> atualizarNotaAluno(ModeloNotaAluno dados,List usuario)async{
final url = '${usuario[2]}/editarnota';
print(dados.NOTA.text);
print(dados.CD_MATRICULA);
print(dados.CD_ALUNO);
print(dados.CD_DISCIPLINA);
print(dados.CD_SALA);
print(dados.PERIODO);
print(usuario[0]);
print(usuario[2]);
final response = await http.post(
Uri.parse(url),
body:{
'NOTA' : dados.NOTA.text,
'CD_MATRICULA' : dados.CD_MATRICULA.toString(),
'CD_DISCIPLINA' : dados.CD_DISCIPLINA.toString(),
'CD_SALA' : dados.CD_SALA.toString(),
'PERIODO' : dados.PERIODO.toString(),
'CIDADE' : usuario[0].toString(),
}
);
print('response : ${response.body}');
if(response.body=='editado com sucesso'){
return true;
}else{
return false;
}
}
salvarNovaNota(List<ModeloNotaAluno> dados, List usuario)async{
List<bool> response = [];
for(int i = 0; dados.length > i; i++){
response.add(await salvarNotaAluno(dados[i],usuario));
print(dados[i].NOTA.text);
print('foi salvo nota do ${dados[i].NO_ALUNO}');
}
if(!response.contains(false)){
print('TODOS FORAM SALVOS');
return true;
}else{
print('NENHUM DADO NOVO FOI SALVO');
return false;
}
}
Future<bool> salvarNotaAluno(ModeloNotaAluno dados,List usuario)async{
final url = '${usuario[2]}/salvarnota';
print(dados.NOTA.text);
print(dados.CD_MATRICULA);
print(dados.CD_ALUNO);
print(dados.CD_DISCIPLINA);
print(dados.CD_SALA);
print(dados.PERIODO);
print(usuario[0]);
print(usuario[2]);
DateTime DT_INSERT = DateTime.now();
String mes = DT_INSERT.month<10?'0${DT_INSERT.month}':DT_INSERT.month.toString();
String dia = DT_INSERT.day<10?'0${DT_INSERT.day}':DT_INSERT.day.toString();
final response = await http.post(
Uri.parse(url),
body:{
'CD_MATRICULA' : dados.CD_MATRICULA.toString(),
'CD_DISCIPLINA' : dados.CD_DISCIPLINA.toString(),
'CD_PROFESSOR' : usuario[8].toString(),
'PERIODO' : dados.PERIODO.toString(),
'NOTA' : dados.NOTA.text,
'CD_LOGIN' : usuario[9].toString(),
'DT_INSERT' : '${DT_INSERT.year}$mes$dia',
'CD_ALUNO' : dados.CD_ALUNO.toString(),
'CD_SALA' : dados.CD_SALA.toString(),
'CIDADE' : usuario[0].toString(),
}
);
print('response : ${response.body}');
if(response.body=='sucesso'){
return true;
}else{
return false;
}
}
}