Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.02 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement