SHARE
TWEET

Untitled

a guest Oct 3rd, 2017 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Component, OnInit, OnDestroy } from '@angular/core';
  2. import * as html2canvas from 'html2canvas';
  3. import { Observable } from 'rxjs/Observable';
  4. import { Router } from '@angular/router';
  5. import { AngularFireDatabase, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2/database';
  6. import * as firebase from 'firebase/app';
  7. import { AngularFireAuth } from 'angularfire2/auth';
  8. import { FormsModule }   from '@angular/forms';
  9. import { ProfilService } from '../../../services/profil/profil.service';
  10. import { ActivatedRoute } from '@angular/router';
  11. import { User } from '../../../../models/User';
  12. import { Parrain } from '../../../../models/Parrain';
  13. import { Commercant } from '../../../../models/Commercant';
  14. import { FireImg } from '../../../../models/FireImg';
  15. import { OperationCommerciale } from '../../../../models/OperationCommerciale';
  16. import { CarteParrainage } from '../../../../models/CarteParrainage';
  17. import { OpCommercialService } from '../../../services/opCommercial/op-commercial.service';
  18. import { Subject } from 'rxjs/Subject';
  19. import { Subscription } from 'rxjs/Subscription';
  20. import {forEach} from '@angular/router/src/utils/collection';
  21. import { AuthService } from '../../../services/auth/auth.service';
  22.  
  23. @Component({
  24.   selector: 'app-envoyer-carte',
  25.   templateUrl: './envoyer-carte.component.html',
  26.   styleUrls: ['./envoyer-carte.component.scss'],
  27.   providers: [AuthService, OpCommercialService]
  28. })
  29. export class EnvoyerCarteComponent implements OnInit, OnDestroy {
  30.  
  31.   radioParrain: string;
  32.  
  33.   user: Observable<firebase.User>;
  34.   localUser: any;
  35.   parrain: Parrain;
  36.   commercant: Commercant;
  37.   opComm: OperationCommerciale;
  38.   cartePar: CarteParrainage;
  39.   birthdayTemp: Date;
  40.   commList: FirebaseListObservable<any[]>;
  41.   opCommList: FirebaseListObservable<any[]>;
  42.   parrainExistList: FirebaseListObservable<any[]>;
  43.   parrainSelected: FirebaseListObservable<any[]>;
  44.   parrainAffList: FirebaseListObservable<any[]>;
  45.   carteParList: FirebaseListObservable<any[]>;
  46.   parSelect: string;
  47.   selectPar: boolean;
  48.   parrainAffListTemp = [];
  49.   databaseRef: any;
  50.  
  51.   /////
  52.   parrainsTest: Parrain[];
  53.   filteredParrainsTest: any[];
  54.   subscription: Subscription;
  55.  
  56.   validC: string;
  57.   //startAt = new Subject();
  58.   //endAt = new Subject();
  59.   /////
  60.  
  61.   yearTest: number;
  62.  
  63.   constructor(public afAuth: AngularFireAuth, public afDb: AngularFireDatabase,
  64.               private router: Router, private authService: AuthService,
  65.               private opComService: OpCommercialService, private route: ActivatedRoute) {
  66.     this.user = afAuth.authState;
  67.  
  68.  
  69.     this.radioParrain = '';
  70.     this.validC = '';
  71.     this.localUser = new User();
  72.     this.parrain = new Parrain();
  73.     this.commercant = new Commercant();
  74.     this.cartePar = new CarteParrainage();
  75.     this.parrainAffList = null;
  76.  
  77.     this.yearTest = this.parrain.birthday.getFullYear();
  78.     this.databaseRef = firebase.database().ref();
  79.     this.user.subscribe(
  80.       (auth) => {
  81.         if (auth) {
  82.           this.commList = this.afDb.list('/Commercant/', {
  83.               query: {
  84.                 orderByChild: 'uid',
  85.                 equalTo: auth.uid.toString()
  86.               }
  87.             }
  88.           );
  89.  
  90.           this.commList.forEach(commerc => {
  91.             commerc.forEach(elementCommerc => {
  92.               this.commercant = elementCommerc;
  93.             });
  94.           });
  95.           // initialisation carte
  96.           this.route.params.subscribe(params => {
  97.             // this.test = params['idOp'];
  98.             this.opCommList = this.afDb.list('/OperationCommercial/', {
  99.                 query: {
  100.                   orderByChild: 'uid',
  101.                   equalTo: params['idOp']
  102.                 }
  103.               }
  104.             );
  105.             this.opCommList.forEach(op => {
  106.               op.forEach(element => {
  107.                 this.opComm = element;
  108.                 this.cartePar.uid = firebase.database().ref().child('CarteParrainage').push().key;
  109.                 this.cartePar.name = this.opComm.name;
  110.                 this.cartePar.commercantCarte = this.opComm.commercantOpCom;
  111.                 this.cartePar.operationCommercialID = this.opComm.uid;
  112.                 this.cartePar.dateDebut = this.opComm.dateDebut;
  113.                 this.cartePar.dateFin = this.opComm.dateFin;
  114.  
  115.  
  116.                 var todayTemp = new Date(Date.now());
  117.                 var debutTemp = new Date(this.opComm.dateDebut);
  118.                 var finTemp = new Date(this.opComm.dateFin);
  119.  
  120.                 if (todayTemp.getTime() >= debutTemp.getTime() && todayTemp.getTime() <= finTemp.getTime()) {
  121.                   this.cartePar.status = 'Active';
  122.                 } else {
  123.                   this.cartePar.status = 'Inactive';
  124.                 }
  125.                 /*
  126.                  var dateTest = this.opComm.dateFin.toString().split(/[- :]/);
  127.                  this.cartePar.dateFin = new Date(Number(dateTest[0]), Number(dateTest[1]) - 1,
  128.                  Number(dateTest[2]), Number(dateTest[3]), Number(dateTest[4]), Number(dateTest[5]));
  129.                  */
  130.                 this.cartePar.carteTemplate = this.opComm.carteTemplate;
  131.               });
  132.             });
  133.             // fin initialisation carte
  134.             // si parrain affilié
  135.             this.carteParList = this.afDb.list('/CarteParrainage/', {
  136.                 query: {
  137.                   orderByChild: 'operationCommercialID',
  138.                   equalTo: params['idOp']
  139.                 }
  140.               }
  141.             );
  142.             this.carteParList.forEach(carte => {
  143.               carte.forEach(elementCarte => {
  144.                 console.log('elementCarte..parrainCarte.uid : ' + elementCarte.parrainCarte.uid);
  145.                 this.parrainAffList = this.afDb.list('/Parrain/', {
  146.                     query: {
  147.                       orderByChild: 'uid',
  148.                       equalTo: elementCarte.parrainCarte.uid
  149.                     }
  150.                   }
  151.                 );
  152.                 this.parrainAffList.forEach(parAf => {
  153.                   parAf.forEach(elementparAf => {
  154.                     this.parrainAffListTemp.push(
  155.                       {
  156.                         uid : elementparAf.uid,
  157.                         firstname : elementparAf.firstname,
  158.                         familyname: elementparAf.familyname
  159.                       });
  160.                     console.log('elementparAf.firstname' + elementparAf.firstname);
  161.                   });
  162.                 });
  163.               });
  164.             });
  165.           });
  166.           // fin si parrain affilié
  167.           // si parrain exist non affilié
  168.           this.parrainExistList = this.afDb.list('/Parrain/', {
  169.               query: {
  170.                 orderByChild: 'uid'
  171.               }
  172.             }
  173.           );
  174.           // fin si parrain exist non affilié
  175.         }
  176.       }
  177.     );
  178.   }
  179.  
  180.  
  181. //////
  182.   filter(query: string) {
  183.     this.filteredParrainsTest = (query) ?
  184.       this.parrainsTest.filter(p => (p.firstname.toLowerCase() + p.familyname.toLowerCase()).includes(query.toLowerCase())) :
  185.       [];
  186.   }
  187. //////
  188.  
  189.   registerNewParrain() {
  190.  
  191.     this.parrain.status = 'Parrain';
  192.  
  193.     this.parrain.secretCode = this.getRandomArbitrary(1111, 9999).toString();
  194.     this.parrain.password = this.getRandomArbitrary(111111, 999999).toString();
  195.     // this.authService.signUp(this.parrain);
  196.  
  197.     firebase.auth().createUserWithEmailAndPassword(this.parrain.email, this.parrain.password).then(userCreate => {
  198.       const imagePath = 'profilImage/' + userCreate.uid + '/userPic.jpg';
  199.       const userRef = this.databaseRef.child('Parrain').child(userCreate.uid);
  200.  
  201.  
  202.       userCreate.updateProfile({
  203.         displayName: this.parrain.status,
  204.         photoURL: imagePath,
  205.         emailVerified: true
  206.       });
  207.  
  208.  
  209.       this.parrain.uid = userCreate.uid;
  210.       this.parrain.emailVerified = userCreate.emailVerified;
  211.  
  212.  
  213.  
  214.       userRef.set(this.parrain);
  215.       // this.cartePar.parrainCarte = this.parrain;
  216.       this.getIdParrain(userCreate.uid);
  217.       this.creerCartePar();
  218.       firebase.auth().sendPasswordResetEmail(this.parrain.email);
  219.       userCreate.sendEmailVerification();
  220.       firebase.auth().signOut();
  221.       firebase.auth().signInWithEmailAndPassword(this.commercant.email, this.commercant.password);
  222.     });
  223.  
  224.   }
  225.   getRandomArbitrary(min, max) {
  226.     return Math.trunc(Math.random() * (max - min) + min);
  227.   }
  228.   initParSelect(){
  229.     this.parSelect = '';
  230.   }
  231.  
  232.   getIdParrain(parUid) {
  233.     const parlistTemp = this.afDb.list('/Parrain/', {
  234.         query: {
  235.           orderByChild: 'uid',
  236.           equalTo: parUid
  237.         }
  238.       }
  239.     );
  240.  
  241.     parlistTemp.forEach(par => {
  242.       par.forEach(elementParTemp => {
  243.         this.cartePar.parrainCarte = elementParTemp;
  244.       });
  245.     });
  246.     this.selectPar = true;
  247.  
  248.  
  249.     if (this.radioParrain === 'Newparrain') {
  250.       this.parSelect = ' à : '
  251.         + this.cartePar.parrainCarte.familyname + ' '
  252.         + this.cartePar.parrainCarte.firstname;
  253.     } else if (this.radioParrain === 'ParrainExist'){
  254.       this.parrainExistList.forEach(parEx => {
  255.         parEx.forEach(elementparEx => {
  256.           if (elementparEx.uid === parUid){
  257.             this.parSelect = ' à : '
  258.               + elementparEx.familyname + ' '
  259.               + elementparEx.firstname;
  260.           }
  261.         });
  262.       });
  263.     }
  264.  
  265.     this.parrainSelected = this.afDb.list('/Parrain/', {
  266.         query: {
  267.           orderByChild: 'uid',
  268.           equalTo: parUid
  269.         }
  270.       }
  271.     );
  272.     this.parrainSelected.forEach(paSel => {
  273.       paSel.forEach(elementPaSel => {
  274.         this.parrain = elementPaSel;
  275.       });
  276.     });
  277.     // console.log('this.birthday parrain : ' + this.parrain.birthday);
  278.     console.log('this.cartePar.commercantCarte.uid : ' + this.cartePar.commercantCarte.uid);
  279.     console.log('this.cartePar..parrainCarte.uid : ' + this.cartePar.parrainCarte.uid);
  280.     console.log('this.cartePar.operationCommercialID : ' + this.cartePar.operationCommercialID);
  281.     console.log('this.cartePar.dateDebut : ' + this.cartePar.dateDebut);
  282.     console.log('this.cartePar.dateFin : ' + this.cartePar.dateFin);
  283.   }
  284.  
  285.  
  286.   creerCartePar() {
  287.     // this.opComService.creerCartePar(this.cartePar); inutile
  288.  
  289.     this.sectionToImage(this.cartePar);
  290.     console.log('this.opComm.nbEnvoie: ' + this.opComm.nbEnvoie);
  291.     this.opComm.nbEnvoie = ((+this.opComm.nbEnvoie) + 1).toString();
  292.     console.log('this.opComm.nbEnvoie: ' + this.opComm.nbEnvoie);
  293.  
  294.     const opEnvRef = this.databaseRef.child('OperationCommercial').child(this.opComm.uid.toString()).child('nbEnvoie');
  295.     opEnvRef.set('this.opComm.nbEnvoie: ' + this.opComm.nbEnvoie);
  296.  
  297.     this.validC = 'ok';
  298.  
  299.   }
  300.   sectionToImage(maCarteP: CarteParrainage) {
  301.     html2canvas(document.getElementById('subCard1'), {
  302.       // allowTaint: true,
  303.       useCORS: true,
  304.       logging: true,
  305.       onrendered: function (canvas) {
  306.         const context = canvas.getContext('2d');
  307.         const img = new Image();
  308.  
  309.         const offsets = document.getElementById('subCard1').getBoundingClientRect();
  310.         const imgTop = offsets.top;
  311.         const imgLeft = offsets.left;
  312.  
  313.         img.onload = function () {
  314.           context.drawImage(img, imgLeft, imgTop);
  315.         };
  316.         img.crossOrigin = 'Anonymous';
  317.         canvas.crossOrigin = 'Anonymous';
  318.  
  319.         canvas.id = 'canvas';
  320.         // document.body.appendChild(canvas);
  321.         console.log('avant blob');
  322.         canvas.toBlob(blob => {
  323.           const nouvelleImg = new Image();
  324.           const storageRef = firebase.storage().ref();
  325.           nouvelleImg.setAttribute('crossOrigin', 'anonymous');
  326.           nouvelleImg.src = blob;
  327.           console.log('blob : ' + blob);
  328.           console.log('maCarteP.uid: ' + maCarteP.uid);
  329.  
  330.           storageRef.child('CarteParrainage/' + maCarteP.uid + '/carteTemplate').put(blob).then((snapshot) => {
  331.             const updates = {};
  332.             maCarteP.carteTemplate.path = 'CarteParrainage/' + maCarteP.uid + '/carteTemplate';
  333.             maCarteP.carteTemplate.filename = maCarteP.name;
  334.             maCarteP.carteTemplate.downloadURL = snapshot.downloadURL;
  335.             console.log('maCarteP.carteTemplate.filename : ' + maCarteP.carteTemplate.filename);
  336.             console.log('maCarteP.uid: ' + maCarteP.uid);
  337.             updates['CarteParrainage/' + maCarteP.uid] = maCarteP;
  338.             console.log('updates[\'CarteParrainage/\' + maCarteP.uid].name ' + updates['CarteParrainage/' + maCarteP.uid].name);
  339.             firebase.database().ref().update(updates);
  340.             console.log('fin du blob');
  341.           });
  342.         });
  343.       }
  344.     });
  345.   }
  346.  
  347.  
  348.  
  349.   goToOpComm() {
  350.     this.router.navigate(['/opCommercial']);
  351.   }
  352.   //////
  353.   ngOnInit() {
  354.     try {
  355.       this.user.subscribe(
  356.         (auth) => {
  357.           if (auth) {
  358.             this.subscription = this.opComService.getParrains()
  359.               .subscribe(parrains => this.parrainsTest = parrains);
  360.           } else {
  361.             this.router.navigate(['/']);
  362.           }
  363.         });
  364.     } catch (e) {
  365.       // No content response..
  366.       console.log(e);
  367.       this.router.navigate(['/']);
  368.     }
  369.   }
  370. //////
  371.  
  372.   ngOnDestroy() {
  373.     this.validC = '';
  374.     if (this.subscription){
  375.       this.subscription.unsubscribe();
  376.     }
  377.  
  378.     this.radioParrain = '';
  379.     this.cartePar = {
  380.       uid: '',
  381.       name: '',
  382.       parrainCarte: new Parrain(),
  383.       commercantCarte: new Commercant(),
  384.       operationCommercialID: '',
  385.       dateDebut: new Date(),
  386.       dateFin: new Date(),
  387.       avantageCumule: '',
  388.       avantageRecuperer: '',
  389.       carteTemplate: new FireImg(),
  390.       status: '',
  391.       historique: []
  392.     };
  393.     this.localUser = {
  394.       uid: '',
  395.       image: new FireImg(),
  396.       email: '',
  397.       emailVerified: false,
  398.       password: '',
  399.       status: ''
  400.     };
  401.     this.parrain = {
  402.       uid: '',
  403.       image: new FireImg(),
  404.       email: '',
  405.       emailVerified: false,
  406.       password: '',
  407.       familyname: '',
  408.       firstname: '',
  409.       sex: '',
  410.       birthday: new Date(),
  411.       telephone: '',
  412.       idCard: '',
  413.       secretCode: '',
  414.       status: ''
  415.     };
  416.   }
  417. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top