Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Component, OnInit, OnDestroy } from '@angular/core';
- import * as html2canvas from 'html2canvas';
- import { Observable } from 'rxjs/Observable';
- import { Router } from '@angular/router';
- import { AngularFireDatabase, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2/database';
- import * as firebase from 'firebase/app';
- import { AngularFireAuth } from 'angularfire2/auth';
- import { FormsModule } from '@angular/forms';
- import { ProfilService } from '../../../services/profil/profil.service';
- import { ActivatedRoute } from '@angular/router';
- import { User } from '../../../../models/User';
- import { Parrain } from '../../../../models/Parrain';
- import { Commercant } from '../../../../models/Commercant';
- import { FireImg } from '../../../../models/FireImg';
- import { OperationCommerciale } from '../../../../models/OperationCommerciale';
- import { CarteParrainage } from '../../../../models/CarteParrainage';
- import { OpCommercialService } from '../../../services/opCommercial/op-commercial.service';
- import { Subject } from 'rxjs/Subject';
- import { Subscription } from 'rxjs/Subscription';
- import {forEach} from '@angular/router/src/utils/collection';
- import { AuthService } from '../../../services/auth/auth.service';
- import { ToastrService } from '../../../typescripts/angular-bootstrap-md/pro';
- import * as _ from 'lodash';
- @Component({
- selector: 'app-envoyer-carte',
- templateUrl: './envoyer-carte.component.html',
- styleUrls: ['./envoyer-carte.component.scss'],
- providers: [AuthService, OpCommercialService]
- })
- export class EnvoyerCarteComponent implements OnInit, OnDestroy {
- radioParrain: string;
- user: Observable<firebase.User>;
- localUser: any;
- parrain: Parrain;
- commercant: Commercant;
- opComm: OperationCommerciale;
- cartePar: CarteParrainage;
- birthdayTemp: Date;
- commList: FirebaseListObservable<any[]>;
- opCommList: FirebaseListObservable<any[]>;
- parrainExistList: FirebaseListObservable<any[]>;
- parrainSelected: FirebaseListObservable<any[]>;
- parrainAffList: FirebaseListObservable<any[]>;
- carteParList: FirebaseListObservable<any[]>;
- carteParExistList: FirebaseListObservable<any[]>;
- parSelect: string;
- selectPar: boolean;
- parrainAffListTemp = [];
- databaseRef: any;
- /////
- parrainsTest: Parrain[];
- filteredParrainsTest: any[];
- subscription: Subscription;
- validC: string;
- // startAt = new Subject();
- // endAt = new Subject();
- /////
- yearTest: number;
- minDateTimeTest: Date;
- maxDateTimeTest: Date;
- parrainDateTimeTest: Date;
- carteExitDeja: boolean;
- carteEnvoieOK: boolean;
- cartePars: any;
- filteredCartePars: any;
- filters = {};
- secondaryApp: any;
- constructor(public afAuth: AngularFireAuth, public afDb: AngularFireDatabase,
- private router: Router, private route: ActivatedRoute,
- private authService: AuthService, private opComService: OpCommercialService, private toastrService: ToastrService) {
- this.user = afAuth.authState;
- this.carteExitDeja = false;
- this.carteEnvoieOK = false;
- this.filteredCartePars = {};
- this.radioParrain = '';
- this.validC = '';
- this.localUser = new User();
- this.parrain = new Parrain();
- this.commercant = new Commercant();
- this.cartePar = new CarteParrainage();
- this.cartePar.uid = firebase.database().ref().child('CarteParrainage').push().key;
- this.cartePar.historique = new Array();
- this.parrainAffList = null;
- this.minDateTimeTest = new Date('1917-01-01');
- this.maxDateTimeTest = new Date('2117-01-01');
- this.parrainDateTimeTest = new Date(this.parrain.birthday);
- this.yearTest = this.parrain.birthday.getFullYear();
- this.databaseRef = firebase.database().ref();
- const config = {apiKey: 'AIzaSyD2O5MxwZ4BRWvVc77FZliBvtj0pmcdzos',
- authDomain: 'webappparrain.firebaseapp.com',
- databaseURL: 'https://webappparrain.firebaseio.com'};
- this.secondaryApp = null;
- this.secondaryApp = firebase.apps.length <= 1 ? firebase.initializeApp(config, 'Secondary') : firebase.app('Secondary');
- this.user.subscribe(
- (auth) => {
- if (auth) {
- this.commList = this.afDb.list('/Commercant/', {
- query: {
- orderByChild: 'uid',
- equalTo: auth.uid.toString()
- }
- }
- );
- this.commList.forEach(commerc => {
- commerc.forEach(elementCommerc => {
- this.commercant = elementCommerc;
- });
- });
- // initialisation carte
- this.route.params.subscribe(params => {
- // this.test = params['idOp'];
- this.opCommList = this.afDb.list('/OperationCommercial/', {
- query: {
- orderByChild: 'uid',
- equalTo: params['idOp']
- }
- }
- );
- this.opCommList.forEach(op => {
- op.forEach(element => {
- this.opComm = element;
- this.cartePar.name = this.opComm.name;
- this.cartePar.commercantCarte = this.opComm.commercantOpCom;
- this.cartePar.operationCommercialCarte = this.opComm;
- this.cartePar.dateDebut = this.opComm.dateDebut;
- this.cartePar.dateFin = this.opComm.dateFin;
- console.log('bla' + this.minDateTimeTest);
- console.log('bla' + this.maxDateTimeTest);
- console.log('bla' + this.minDateTimeTest.getTime());
- console.log('bla' + this.maxDateTimeTest.getTime());
- console.log('bla' + this.parrainDateTimeTest);
- console.log('bla' + this.parrainDateTimeTest.getTime());
- const todayTemp = new Date(Date.now());
- const debutTemp = new Date(this.opComm.dateDebut);
- const finTemp = new Date(this.opComm.dateFin);
- if (todayTemp.getTime() >= debutTemp.getTime() && todayTemp.getTime() <= finTemp.getTime()) {
- this.cartePar.status = 'Active';
- } else {
- this.cartePar.status = 'Inactive';
- }
- /*
- var dateTest = this.opComm.dateFin.toString().split(/[- :]/);
- this.cartePar.dateFin = new Date(Number(dateTest[0]), Number(dateTest[1]) - 1,
- Number(dateTest[2]), Number(dateTest[3]), Number(dateTest[4]), Number(dateTest[5]));
- */
- this.cartePar.carteTemplate = this.opComm.carteTemplate;
- });
- });
- // fin initialisation carte
- // si parrain affilié
- this.carteParList = this.afDb.list('/CarteParrainage/', {
- query: {
- orderByChild: 'operationCommercialCarte/uid',
- equalTo: params['idOp']
- }
- }
- );
- this.carteParList.forEach(carte => {
- carte.forEach(elementCarte => {
- console.log('elementCarte..parrainCarte.uid : ' + elementCarte.parrainCarte.uid);
- this.parrainAffList = this.afDb.list('/Parrain/', {
- query: {
- orderByChild: 'uid',
- equalTo: elementCarte.parrainCarte.uid
- }
- }
- );
- this.parrainAffList.forEach(parAf => {
- parAf.forEach(elementparAf => {
- this.parrainAffListTemp.push(
- {
- uid : elementparAf.uid,
- firstname : elementparAf.firstname,
- familyname: elementparAf.familyname
- });
- console.log('elementparAf.firstname' + elementparAf.firstname);
- });
- });
- });
- });
- });
- // fin si parrain affilié
- // si parrain exist non affilié
- this.parrainExistList = this.afDb.list('/Parrain/', {
- query: {
- orderByChild: 'uid'
- }
- }
- );
- // fin si parrain exist non affilié
- }
- }
- );
- }
- //////
- filter(query: string) {
- this.filteredParrainsTest = (query) ?
- this.parrainsTest.filter(p => (p.firstname.toLowerCase() + p.familyname.toLowerCase()).includes(query.toLowerCase())) :
- [];
- }
- //////
- validationBirthday(){
- this.parrainDateTimeTest = new Date(this.parrain.birthday);
- if (this.parrainDateTimeTest.getTime() <= this.minDateTimeTest.getTime()
- || this.parrainDateTimeTest.getTime() >= this.maxDateTimeTest.getTime()) {
- return true;
- } else {
- return false;
- }
- }
- regiPar(){
- /*const config = {apiKey: 'AIzaSyD2O5MxwZ4BRWvVc77FZliBvtj0pmcdzos',
- authDomain: 'webappparrain.firebaseapp.com',
- databaseURL: 'https://webappparrain.firebaseio.com'};
- let secondaryApp = null;
- secondaryApp = firebase.initializeApp(config, 'Secondary');*/
- let parrainTemp = new Parrain();
- this.carteEnvoieOK = false;
- this.parrain.status = 'Parrain';
- // this.parrain.birthday = this.parrainDateTimeTest;
- this.parrain.secretCode = this.getRandomArbitrary(1111, 9999).toString();
- this.parrain.password = this.getRandomArbitrary(111111, 999999).toString();
- // this.authService.signUp(this.parrain);
- parrainTemp = this.parrain;
- this.secondaryApp.auth().createUserWithEmailAndPassword(parrainTemp.email, parrainTemp.password).then(function(userCreate) {
- console.log('User ' + userCreate.uid + ' created successfully!');
- // I don't know if the next statement is necessary
- const imagePath = 'profilImage/' + userCreate.uid + '/userPic.jpg';
- const dbRef = firebase.database().ref();
- const userRef = dbRef.child('Parrain').child(userCreate.uid);
- userCreate.updateProfile({
- displayName: parrainTemp.status,
- photoURL: imagePath,
- emailVerified: true
- });
- try {
- parrainTemp.uid = userCreate.uid;
- parrainTemp.emailVerified = userCreate.emailVerified;
- userRef.set(parrainTemp);
- console.log('crer par: ' + parrainTemp.firstname);
- // this.cartePar.parrainCarte = parrainTemp;
- this.secondaryApp.auth().sendPasswordResetEmail(userCreate.email);
- userCreate.sendEmailVerification();
- console.log('avant logout firebase.auth().currentUser.uid: ');
- this.secondaryApp.auth().signOut();
- console.log('avant logout firebase.auth().currentUser.uid: ');
- } catch (e) {
- // No content response..
- console.log('error dans envoyer carte !');
- console.log(e);
- // this.goToOpComm();
- // this.router.navigate(['/']);
- }
- //fin
- // this.secondaryApp.auth().signOut();
- });
- const parNewlistTemp = this.afDb.list('/Parrain/', {
- query: {
- orderByChild: 'email',
- equalTo: parrainTemp.email
- }
- }
- );
- parNewlistTemp.forEach(par => {
- par.forEach(elementParTemp => {
- if (elementParTemp !== undefined) {
- if (elementParTemp.uid !== '') {
- this.getIdParrain(elementParTemp.uid);
- this.creerCartePar();
- this.carteEnvoieOK = true;
- setTimeout(() => {
- this.goToOpComm();
- this.toastrService.success('Envoie de la carte à ' + elementParTemp.familyname
- + ' ' + elementParTemp.firstname);
- },
- 3000);
- }
- }
- });
- });
- }
- registerNewParrain() {
- this.carteEnvoieOK = false;
- this.parrain.status = 'Parrain';
- // this.parrain.birthday = this.parrainDateTimeTest;
- this.parrain.secretCode = this.getRandomArbitrary(1111, 9999).toString();
- this.parrain.password = this.getRandomArbitrary(111111, 999999).toString();
- // this.authService.signUp(this.parrain);
- firebase.auth().createUserWithEmailAndPassword(this.parrain.email, this.parrain.password).then(userCreate => {
- const imagePath = 'profilImage/' + userCreate.uid + '/userPic.jpg';
- const userRef = this.databaseRef.child('Parrain').child(userCreate.uid);
- userCreate.updateProfile({
- displayName: this.parrain.status,
- photoURL: imagePath,
- emailVerified: true
- });
- try {
- this.parrain.uid = userCreate.uid;
- this.parrain.emailVerified = userCreate.emailVerified;
- userRef.set(this.parrain);
- console.log('crer par: ' + this.parrain.firstname);
- // this.cartePar.parrainCarte = this.parrain;
- this.getIdParrain(userCreate.uid);
- console.log('creer par userCreate.uid: ' + userCreate.uid);
- this.creerCartePar();
- console.log('creer par creerCartePar: ' + this.cartePar.uid);
- firebase.auth().sendPasswordResetEmail(this.parrain.email);
- userCreate.sendEmailVerification();
- console.log('avant logout firebase.auth().currentUser.uid: ' + firebase.auth().currentUser.uid);
- firebase.auth().signOut();
- firebase.auth().signInWithEmailAndPassword(this.commercant.email, this.commercant.password);
- console.log('avant logout firebase.auth().currentUser.uid: ' + firebase.auth().currentUser.uid);
- this.carteEnvoieOK = true;
- } catch (e) {
- // No content response..
- console.log('error dans envoyer carte !');
- console.log(e);
- // this.goToOpComm();
- // this.router.navigate(['/']);
- }
- });
- }
- getRandomArbitrary(min, max) {
- return Math.trunc(Math.random() * (max - min) + min);
- }
- initParSelect(){
- this.parSelect = '';
- }
- getIdParrain(parUid) {
- this.carteEnvoieOK = false;
- this.carteExitDeja = false;
- console.log('parUid getidpar: ' + parUid);
- const parlistTemp = this.afDb.list('/Parrain/', {
- query: {
- orderByChild: 'uid',
- equalTo: parUid
- }
- }
- );
- parlistTemp.forEach(par => {
- par.forEach(elementParTemp => {
- this.parrain = elementParTemp;
- this.cartePar.parrainCarte = elementParTemp;
- console.log('ttthis.cartePar.parrainCarte.uid: ' + this.cartePar.parrainCarte.uid + this.cartePar.parrainCarte.firstname);
- });
- });
- this.selectPar = true;
- console.log('this.cartePar.parrainCarte.uid: ' + this.cartePar.parrainCarte.uid + this.cartePar.parrainCarte.firstname);
- if (this.radioParrain === 'Newparrain') {
- this.parSelect = ' à : '
- + this.cartePar.parrainCarte.familyname + ' '
- + this.cartePar.parrainCarte.firstname;
- } else if (this.radioParrain === 'ParrainExist'){
- this.parrainExistList.forEach(parEx => {
- parEx.forEach(elementparEx => {
- if (elementparEx.uid === parUid){
- this.parSelect = ' à : '
- + elementparEx.familyname + ' '
- + elementparEx.firstname;
- }
- });
- });
- }
- // console.log('this.birthday parrain : ' + this.parrain.birthday);
- console.log('this.cartePar.commercantCarte.uid : ' + this.cartePar.commercantCarte.uid);
- console.log('this.cartePar..parrainCarte.uid : ' + this.cartePar.parrainCarte.uid);
- console.log('this.cartePar.operationCommercial.uid : ' + this.cartePar.operationCommercialCarte.uid);
- console.log('this.cartePar.dateDebut : ' + this.cartePar.dateDebut);
- console.log('this.cartePar.dateFin : ' + this.cartePar.dateFin);
- }
- applyFilters(listFiltrer: any, listAFiltrer: any) {
- this.filteredCartePars = _.filter(this.cartePars, _.conforms(this.filters));
- }
- filterEgual(property: string, query: string) {
- this.filters[property] = val => val === query;
- }
- filterDifferentDe(property: string, query: string) {
- this.filters[property] = val => val !== query;
- }
- carteExist(parUid) {
- if (this.parSelect !== '' && this.carteExitDeja === false){
- this.afDb.list('/CarteParrainage/', {
- query: {
- orderByChild: 'operationCommercialCarte/uid',
- equalTo: this.opComm.uid
- }}).subscribe(cartes => {
- this.cartePars = cartes;
- for (let i = 0; i < cartes.length; i++){
- if (cartes[i].parrainCarte.uid === parUid){
- this.carteExitDeja = true;
- }
- }
- if (this.carteExitDeja === false) {
- console.log('cestBon !!');
- this.creerCartePar();
- this.carteEnvoieOK = true;
- setTimeout(() => {
- this.goToOpComm();
- this.toastrService.success('Envoie de la carte à ' + this.cartePar.parrainCarte.familyname
- + ' ' + this.cartePar.parrainCarte.firstname);
- },
- 3000);
- } else {
- console.log('cest pas bon ');
- // this.carteEnvoieOK = false;
- }
- /*
- this.applyFilters(this.filteredCartePars, this.cartePars);
- this.filterEgual('operationCommercialCarte/uid', this.opComm.uid);
- this.applyFilters(this.filteredCartePars, this.cartePars);
- console.log(this.filteredCartePars);
- this.filterEgual('parrainCarte/uid', parUid);
- this.applyFilters(this.filteredCartePars, this.cartePars);
- console.log(this.filteredCartePars);
- */
- //console.log(parUid);
- //console.log(this.opComm.uid);
- console.log(cartes);
- // console.log(this.cartePars);
- //console.log(this.filteredCartePars);
- /*if(this.filteredCartePars.length > 0){
- this.carteExitDeja = true;
- console.log(this.carteExitDeja);
- }else {
- this.carteExitDeja = false;
- console.log(this.carteExitDeja);
- }*/
- });
- /* this.carteParExistList = this.afDb.list('/CarteParrainage/', {
- query: {
- orderByChild: 'operationCommercialCarte/uid',
- equalTo: this.opComm.uid
- }
- }
- );*/
- // console.log('this.filteredCartePars.length: ' + this.filteredCartePars.length);
- /*
- this.carteParList.forEach(carte => {
- carte.forEach(elementCarte => {
- if (elementCarte.parrainCarte.uid === parUid) {
- this.carteExitDeja = true;
- // console.log('eeeeeeeeeeeeeeeeeeeeee');
- return true;
- } else {
- this.carteExitDeja = false;
- }
- });
- });
- if (this.carteExitDeja === false) {
- return false;
- } else if (this.carteExitDeja === true) {
- return true;
- }*/
- }
- }
- envoyerCartePar(){
- this.carteExist(this.cartePar.parrainCarte.uid);
- // this.goToOpComm();
- }
- creerCartePar() {
- // this.opComService.creerCartePar(this.cartePar); inutile
- this.sectionToImage(this.cartePar);
- console.log('this.opComm.nbEnvoie: ' + this.opComm.nbEnvoie);
- this.opComm.nbEnvoie = ((+this.opComm.nbEnvoie) + 1).toString();
- console.log('this.opComm.nbEnvoie: ' + this.opComm.nbEnvoie);
- const opEnvRef = this.databaseRef.child('OperationCommercial').child(this.opComm.uid.toString()).child('nbEnvoie');
- opEnvRef.set(this.opComm.nbEnvoie);
- this.validC = 'ok';
- }
- sectionToImage(maCarteP: CarteParrainage) {
- html2canvas(document.getElementById('subCard1'), {
- // allowTaint: true,
- useCORS: true,
- logging: true,
- onrendered: function (canvas) {
- const context = canvas.getContext('2d');
- const img = new Image();
- const offsets = document.getElementById('subCard1').getBoundingClientRect();
- const imgTop = offsets.top;
- const imgLeft = offsets.left;
- //canvas.width = document.getElementById('subCard1').offsetWidth;
- //canvas.height = document.getElementById('subCard1').offsetHeight;
- img.onload = function () {
- context.drawImage(img, imgLeft, imgTop, 1920, 1200);
- };
- img.crossOrigin = 'Anonymous';
- canvas.crossOrigin = 'Anonymous';
- canvas.id = 'canvas';
- // document.body.appendChild(canvas);
- console.log('avant blob');
- canvas.toBlob(blob => {
- const nouvelleImg = new Image();
- const storageRef = firebase.storage().ref();
- nouvelleImg.setAttribute('crossOrigin', 'anonymous');
- nouvelleImg.src = blob;
- console.log('blob : ' + blob);
- console.log('maCarteP.uid: ' + maCarteP.uid);
- storageRef.child('CarteParrainage/' + maCarteP.uid + '/carteTemplate.jpg').put(blob).then((snapshot) => {
- const updates = {};
- maCarteP.carteTemplate.path = 'CarteParrainage/' + maCarteP.uid + '/carteTemplate.jpg';
- maCarteP.carteTemplate.filename = maCarteP.name;
- maCarteP.carteTemplate.downloadURL = snapshot.downloadURL;
- console.log('maCarteP.carteTemplate.filename : ' + maCarteP.carteTemplate.filename);
- console.log('maCarteP.uid: ' + maCarteP.uid);
- updates['CarteParrainage/' + maCarteP.uid] = maCarteP;
- console.log('updates[\'CarteParrainage/\' + maCarteP.uid].name ' + updates['CarteParrainage/' + maCarteP.uid].name);
- firebase.database().ref().update(updates);
- console.log('fin du blob');
- });
- }, 'image/jpeg', 20);
- }
- });
- }
- sectionToImage2(maCarteP: CarteParrainage) {
- html2canvas(document.getElementById('subCard1'), {
- // allowTaint: true,
- useCORS: true,
- logging: true,
- width: 750,
- height: 1050,
- onrendered: function (canvas) {
- const context = canvas.getContext('2d');
- context.scale(2, 2);
- const img = new Image();
- const offsets = document.getElementById('subCard1').getBoundingClientRect();
- const imgTop = offsets.top;
- const imgLeft = offsets.left;
- const w = offsets.width;
- const h = offsets.height;
- // var w = 1000;
- // var h = 1000;
- //canvas.width = w * 2;
- //canvas.height = h * 2;
- // canvas.style.width = offsets.width + 'px';
- // canvas.style.height = offsets.height + 'px';
- img.onload = function () {
- context.drawImage(img, imgLeft, imgTop);
- };
- img.crossOrigin = 'Anonymous';
- canvas.crossOrigin = 'Anonymous';
- canvas.id = 'canvas';
- var imgg = canvas.toDataURLHD('image/png', 1);
- window.open(imgg);
- document.body.appendChild(canvas);
- console.log('avant blob');
- /*canvas.toBlob(blob => {
- const nouvelleImg = new Image();
- const storageRef = firebase.storage().ref();
- nouvelleImg.setAttribute('crossOrigin', 'anonymous');
- nouvelleImg.src = blob;
- console.log('blob : ' + blob);
- console.log('maCarteP.uid: ' + maCarteP.uid);
- storageRef.child('CarteParrainage/' + maCarteP.uid + '/carteTemplate.jpg').put(blob).then((snapshot) => {
- const updates = {};
- maCarteP.carteTemplate.path = 'CarteParrainage/' + maCarteP.uid + '/carteTemplate.jpg';
- maCarteP.carteTemplate.filename = maCarteP.name;
- maCarteP.carteTemplate.downloadURL = snapshot.downloadURL;
- console.log('maCarteP.carteTemplate.filename : ' + maCarteP.carteTemplate.filename);
- console.log('maCarteP.uid: ' + maCarteP.uid);
- updates['CarteParrainage/' + maCarteP.uid] = maCarteP;
- console.log('updates[\'CarteParrainage/\' + maCarteP.uid].name ' + updates['CarteParrainage/' + maCarteP.uid].name);
- firebase.database().ref().update(updates);
- console.log('fin du blob');
- });
- }, 'image/jpeg', 20);*/
- }
- });
- }
- goToOpComm() {
- this.router.navigate(['/opCommercial']);
- }
- //////
- ngOnInit() {
- this.subscription = this.opComService.getParrains()
- .subscribe(parrains => this.parrainsTest = parrains);
- }
- //////
- ngOnDestroy() {
- this.validC = '';
- if (this.subscription){
- this.subscription.unsubscribe();
- }
- this.radioParrain = '';
- this.cartePar = {
- uid: '',
- name: '',
- parrainCarte: new Parrain(),
- commercantCarte: new Commercant(),
- operationCommercialCarte: new OperationCommerciale(),
- dateDebut: new Date(),
- dateFin: new Date(),
- avantageCumule: '',
- avantageRecuperer: '',
- carteTemplate: new FireImg(),
- status: '',
- historique: []
- };
- this.localUser = {
- uid: '',
- image: new FireImg(),
- email: '',
- emailVerified: false,
- password: '',
- status: ''
- };
- this.parrain = {
- uid: '',
- image: new FireImg(),
- email: '',
- emailVerified: false,
- password: '',
- familyname: '',
- firstname: '',
- sex: '',
- birthday: new Date(),
- telephone: '',
- idCard: '',
- secretCode: '',
- status: ''
- };
- }
- }
Add Comment
Please, Sign In to add comment