Here’s the .ts file:
import { Component } from '@angular/core';
import { Http, Headers, RequestOptions } from '@angular/http';
import { NavController, IonicApp, MenuController, ModalController } from 'ionic-angular';
import { Partner } from '../../services/partner';
import { Carrinho } from '../../services/carrinho';
import { Servidores } from '../../basico/servidores';
import { CadastroParceiro } from '../cadastroparceiro/cadastroparceiro';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Device } from '@ionic-native/device';
import { EsqueciSenha } from '../esquecisenha/esquecisenha';
import { TermosUso } from '../termosuso/termosuso';
import 'rxjs/add/operator/retry';
import 'rxjs/add/operator/timeout';
import 'rxjs/add/operator/delay';
import 'rxjs/add/operator/map';
import { Platform } from 'ionic-angular';
import { PedidoCielo } from '../../services/pedidocielo';
import { AlertController } from 'ionic-angular';
import { TratamentoErro } from '../../services/tratamentoerro';
import { TiposOrganizacao } from "../../services/tiposorganizacao";
import { Persistencia } from "../../services/persistencia";
import { SuperService } from "../../services/super.component";
import { StringUtils } from '../../util/stringutils';
import { IRegion } from '../../model/iregion';
import { ICity } from '../../model/icity';
import { Cidades } from '../../services/cidades';
import { Estados } from '../../services/estados';
import { HomeTab } from "../home/hometab";
import { FacebookLogin } from '../../services/login-facebook';
import { LoginSimples } from '../loginsimples/loginsimples';
import { GooglePlusLogin } from '../../services/login-googleplus';
@Component({
selector: 'page-login',
templateUrl: 'login.html'
})
export class Login {
myForm: FormGroup;
constructor(
private _http: Http,
private nav: NavController,
private fb: FormBuilder,
public partner: Partner,
private carrinho: Carrinho,
private platform: Platform,
private pedidoCielo: PedidoCielo,
private alertController: AlertController,
private ionicApp: IonicApp,
private tratamentoErro: TratamentoErro,
private tiposOrganizacao: TiposOrganizacao,
private persistencia: Persistencia,
private device: Device,
private superService: SuperService,
private cidades: Cidades,
private estados: Estados,
private menuCtrl: MenuController,
private facebookLogin: FacebookLogin,
private modalController: ModalController,
private googlePlusLogin: GooglePlusLogin
) {
console.log("entrou no construtor do login");
this.init();
this.menuCtrl.enable(false, 'menuPagina');
this.menuCtrl.swipeEnable(false, 'menuPagina');
this.menuCtrl.enable(false, 'menuLojista');
this.menuCtrl.swipeEnable(false, 'menuLojista');
}
init() {
this.myForm = this.fb.group({
'login': ['', Validators.required],
'senha': ['', Validators.required]
});
}
getObterTokenWSJson(): String {
return '{"name": "' + this.myForm.value.name +
'", "login": "' + this.myForm.value.login +
'", "password": "' + this.myForm.value.senha +
'", "UUID": "' + this.device.uuid +
'", "token": "' +
'", "loginWithEmail": ' + StringUtils.verificarTextoContemEmail(this.myForm.value.login) +
', "tokenStatus": ""}';
}
cadastrarse() {
this.nav.push(CadastroParceiro);
}
navegar() {
this.superService.showCarregando('', '', false);
this.tiposOrganizacao.carregarOrganizacoes(
this.tiposOrganizacao.pagina,
this.tiposOrganizacao.nenhuma,
null,
null,
null,
null,
null,
data => {
let randomList = StringUtils.shuffle(data.json().listaObjetos);
this.tiposOrganizacao.setBanners(randomList);
this.tiposOrganizacao.carregarOrganizacaoPadrao(
data => {
this.superService.hideCarregando();
this.tiposOrganizacao.organizacaoPadrao = data.json();
//console.log('Empresa padrĂŁo');
//console.log(this.tiposOrganizacao.organizacaoPadrao);
this.superService.hideCarregando();
this.nav.setRoot(HomeTab);
},
err => {
this.superService.hideCarregando();
// console.log(err);
this.tratamentoErro.exibirMensagemErro(err.json());
});
},
err => {
this.superService.hideCarregando();
// console.log(err);
this.tratamentoErro.exibirMensagemErro(err.json());
}
);
}
submit() {
if (this.myForm.valid) {
this.obterToken();
}
}
obterToken(): void {
this.superService.showCarregando("Verificando conexĂŁo...", "Aguarde!", false);
let headers = new Headers({
'Content-Type': 'application/json;charset=UTF-8',
'Accept': '*/*'
});
let options = new RequestOptions({ headers: headers });
// console.log(this.getObterTokenWSJson());
// console.log(Device.uuid);
this._http.post(Servidores.enderecos.urlWSObterToken, this.getObterTokenWSJson(), options)
// .timeout(10000000000000000000000)
.subscribe(
data => {
let meuJson = data.json();
console.log(meuJson);
console.log("passou 1");
if ((typeof (meuJson.token) != 'undefined') && (meuJson.token != '')) {
this.partner.setPartner(meuJson);
this.partner.initCurrentLocation(() =>{
if (this.partner.partner.token != null && this.partner.partner.token != undefined) {
this.persistencia.gravarUsuario(this.partner.partner);
}
console.log("passou 2");
this.superService.hideCarregando();
this.superService.showCarregando("Carregando páginas...", "Aguarde!", false);
let estadoUsuario: IRegion = this.estados.getNewItem();
estadoUsuario.c_region_id = this.partner.partner.c_region_id;
estadoUsuario.name = this.partner.partner.uf;
let cidadeUsuario: ICity = this.cidades.getNewItem();
cidadeUsuario.c_city_id = this.partner.partner.c_city_id;
cidadeUsuario.name = this.partner.partner.City;
cidadeUsuario.c_region_id = this.partner.partner.c_region_id;
let filtroLojas = {
estado: (estadoUsuario.name? estadoUsuario : null),
cidade: (cidadeUsuario.name ? cidadeUsuario : null),
bairro: null
}
this.tiposOrganizacao.carregarOrganizacoes(
this.tiposOrganizacao.pagina,
this.tiposOrganizacao.nenhuma,
null,
null,
filtroLojas.estado ? filtroLojas.estado.name : null,
filtroLojas.cidade ? filtroLojas.cidade.name : null,
filtroLojas.bairro ? filtroLojas.bairro : null,
data => {
// console.log(data.json().listaObjetos);
let randomList = StringUtils.shuffle(this.partner.definirLojasDisponiveis(data.json().listaObjetos));
this.tiposOrganizacao.setBanners(randomList);
this.tiposOrganizacao.carregarOrganizacaoPadrao(
data => {
this.superService.hideCarregando();
this.tiposOrganizacao.organizacaoPadrao = data.json();
//console.log('Empresa padrĂŁo');
//console.log(this.tiposOrganizacao.organizacaoPadrao);
this.superService.hideCarregando();
this.nav.setRoot(HomeTab);
},
err => {
this.superService.hideCarregando();
// console.log(err);
this.tratamentoErro.exibirMensagemErro(err.json());
});
},
err => {
this.superService.hideCarregando();
// console.log(err);
console.log("passou 3");
this.tratamentoErro.exibirMensagemErro(err.json());
}
);
});
} else {
this.superService.hideCarregando();
alert("Autenticação falhou! Verifique login e senha e a sua conexão com a internet!");
}
},
err => {
// console.error(err.errorMessage)
// console.log(err.json());
// console.log(err.json().errormessage);
this.superService.hideCarregando();
this.tratamentoErro.exibirMensagemErro(err.json());
}
);
};
esqueciSenha() {
this.nav.push(EsqueciSenha);
}
termosDeUso() {
this.nav.push(TermosUso);
}
ionViewDidLoad() {
// O evento "registerBackButtonAction" sĂł Ă© acionado nas plataformas android e windows
this.platform.registerBackButtonAction(() => {
let activePortal = this.ionicApp._loadingPortal.getActive() ||
this.ionicApp._modalPortal.getActive() ||
this.ionicApp._toastPortal.getActive() ||
this.ionicApp._overlayPortal.getActive();
// Existe mais alguma pagina para a qual se possa voltar?
if (this.nav.canGoBack() == false) {
let mensagem: string = "Deseja fechar o aplicativo?"
if (this.carrinho.itens.length > 0) {
mensagem = 'Existem itens no seu carrinho. Se você sair, sua compra será cancelada. Confirma?';
}
let alert = this.alertController.create({
title: 'Sair do Ashey',
message: mensagem,
buttons: [
{
text: 'Sim',
handler: () => {
this.platform.exitApp();
}
},
{
text: 'NĂŁo',
handler: () => {
alert.dismiss();
return false;
}
}
]
});
alert.present();
} else {
// A janela atual Ă© uma popup?
if (activePortal) {
activePortal.dismiss();
} else {
this.nav.pop();
}
}
}, 101);
}
exibirMensagem(titulo: string, mensagem: string) {
let confirm = this.alertController.create({
title: titulo,
message: mensagem,
buttons: [
{
text: 'Ok',
handler: () => {
}
}
]
});
confirm.present();
}
logarComFacebook() {
this.facebookLogin.login(
(successCallback) => {
let accessToken = successCallback.authResponse.accessToken;
this.facebookLogin.getUserInfo(
(successCallback) => {
let user: any = {
email: successCallback['email'],
first_name: successCallback['first_name'],
picture: successCallback['picture_large']['data']['url'],
username: successCallback['name'],
password: successCallback['id']
}
let modaLoginSimples = this.modalController.create(LoginSimples, { dadosUsuario: user });
modaLoginSimples.present();
console.log(user);
}
);
},
(errorCallback) => {
}
);
}
deslogarFacebook() {
this.facebookLogin.logout(
(successCallback) => {
console.log(successCallback);
},
(errorCallback) => {
}
);
}
logarComGooglePlus() {
this.googlePlusLogin.login(
(successCallback) => {
let accessToken = successCallback.accessToken;
let user: any = {
email: successCallback.email,
first_name: successCallback.imageUrl,
picture: successCallback.imageUrl,
username: successCallback.displayName,
password: successCallback.userId
}
let modaLoginSimples = this.modalController.create(LoginSimples, { dadosUsuario: user });
modaLoginSimples.present();
},
(errorCallback) => {
}
);
}
deslogarGooglePlus() {
this.googlePlusLogin.disconnect(
(successCallback) => {
console.log(successCallback);
},
(errorCallback) => {
}
);
}
}