Advertisement
Guest User

Untitled

a guest
Sep 27th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.78 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. constructor(public afAuth: AngularFireAuth, public afDb: AngularFireDatabase,
  62. private router: Router, private authService: AuthService,
  63. private opComService: OpCommercialService, private route: ActivatedRoute) {
  64.  
  65.  
  66.  
  67. this.radioParrain = '';
  68. this.validC = '';
  69. this.localUser = new User();
  70. this.parrain = new Parrain();
  71. this.commercant = new Commercant();
  72. this.cartePar = new CarteParrainage();
  73. this.parrainAffList = null;
  74. this.user = afAuth.authState;
  75. this.databaseRef = firebase.database().ref();
  76. this.user.subscribe(
  77. (auth) => {
  78. if (auth) {
  79. this.commList = this.afDb.list('/Commercant/', {
  80. query: {
  81. orderByChild: 'uid',
  82. equalTo: auth.uid.toString()
  83. }
  84. }
  85. );
  86.  
  87. this.commList.forEach(commerc => {
  88. commerc.forEach(elementCommerc => {
  89. this.commercant = elementCommerc;
  90. });
  91. });
  92. // initialisation carte
  93. this.route.params.subscribe(params => {
  94. // this.test = params['idOp'];
  95. this.opCommList = this.afDb.list('/OperationCommercial/', {
  96. query: {
  97. orderByChild: 'uid',
  98. equalTo: params['idOp']
  99. }
  100. }
  101. );
  102. this.opCommList.forEach(op => {
  103. op.forEach(element => {
  104. this.opComm = element;
  105. this.cartePar.uid = firebase.database().ref().child('CarteParrainage').push().key;
  106. this.cartePar.name = this.opComm.name;
  107. this.cartePar.commercantCarte = this.opComm.commercantOpCom;
  108. this.cartePar.operationCommercialID = this.opComm.uid;
  109. this.cartePar.dateDebut = this.opComm.dateDebut;
  110. this.cartePar.dateFin = this.opComm.dateFin;
  111. console.log('this.opComm.dateFin: ' + this.opComm.dateFin);
  112. /*
  113. var dateTest = this.opComm.dateFin.toString().split(/[- :]/);
  114. this.cartePar.dateFin = new Date(Number(dateTest[0]), Number(dateTest[1]) - 1,
  115. Number(dateTest[2]), Number(dateTest[3]), Number(dateTest[4]), Number(dateTest[5]));
  116. */
  117. this.cartePar.carteTemplate = this.opComm.carteTemplate;
  118. });
  119. });
  120. // fin initialisation carte
  121. // si parrain affilié
  122. this.carteParList = this.afDb.list('/CarteParrainage/', {
  123. query: {
  124. orderByChild: 'operationCommercialID',
  125. equalTo: params['idOp']
  126. }
  127. }
  128. );
  129. this.carteParList.forEach(carte => {
  130. carte.forEach(elementCarte => {
  131. console.log("elementCarte..parrainCarte.uid : " + elementCarte.parrainCarte.uid);
  132. this.parrainAffList = this.afDb.list('/Parrain/', {
  133. query: {
  134. orderByChild: 'uid',
  135. equalTo: elementCarte.parrainCarte.uid
  136. }
  137. }
  138. );
  139. this.parrainAffList.forEach(parAf => {
  140. parAf.forEach(elementparAf => {
  141. this.parrainAffListTemp.push(
  142. {
  143. uid : elementparAf.uid,
  144. firstname : elementparAf.firstname,
  145. familyname: elementparAf.familyname
  146. });
  147. console.log("elementparAf.firstname" + elementparAf.firstname);
  148. });
  149. });
  150. });
  151. });
  152. });
  153. // fin si parrain affilié
  154. // si parrain exist non affilié
  155. this.parrainExistList = this.afDb.list('/Parrain/', {
  156. query: {
  157. orderByChild: 'uid'
  158. }
  159. }
  160. );
  161. // fin si parrain exist non affilié
  162. }
  163. }
  164. );
  165. }
  166.  
  167.  
  168. //////
  169. filter(query: string) {
  170. this.filteredParrainsTest = (query) ?
  171. this.parrainsTest.filter(p => (p.firstname.toLowerCase() + p.familyname.toLowerCase()).includes(query.toLowerCase())) :
  172. [];
  173. }
  174. //////
  175.  
  176. registerNewParrain() {
  177.  
  178. this.parrain.status = 'Parrain';
  179.  
  180. this.parrain.secretCode = this.getRandomArbitrary(1111, 9999).toString();
  181. this.parrain.password = this.getRandomArbitrary(111111, 999999).toString();
  182. // this.authService.signUp(this.parrain);
  183.  
  184. firebase.auth().createUserWithEmailAndPassword(this.parrain.email, this.parrain.password).then(userCreate => {
  185. const imagePath = 'profilImage/' + userCreate.uid + '/userPic.jpg';
  186. const userRef = this.databaseRef.child('Parrain').child(userCreate.uid);
  187.  
  188.  
  189. userCreate.updateProfile({
  190. displayName: this.parrain.status,
  191. photoURL: imagePath,
  192. emailVerified: true
  193. });
  194.  
  195. this.cartePar.parrainCarte = userCreate;
  196. this.parrain.uid = userCreate.uid;
  197. this.parrain.emailVerified = userCreate.emailVerified;
  198.  
  199. userRef.set(this.parrain);
  200. this.creerCartePar();
  201. firebase.auth().sendPasswordResetEmail(this.parrain.email);
  202. userCreate.sendEmailVerification();
  203. firebase.auth().signOut();
  204. firebase.auth().signInWithEmailAndPassword(this.commercant.email, this.commercant.password);
  205. });
  206.  
  207. }
  208. getRandomArbitrary(min, max) {
  209. return Math.trunc(Math.random() * (max - min) + min);
  210. }
  211. initParSelect(){
  212. this.parSelect = '';
  213. }
  214.  
  215. getIdParrain(parUid) {
  216. var parlistTemp = this.afDb.list('/Parrain/', {
  217. query: {
  218. orderByChild: 'uid',
  219. equalTo: parUid
  220. }
  221. }
  222. );
  223.  
  224. parlistTemp.forEach(par => {
  225. par.forEach(elementParTemp => {
  226. this.cartePar.parrainCarte = elementParTemp;
  227. });
  228. });
  229. this.selectPar = true;
  230.  
  231.  
  232.  
  233. if (this.radioParrain === 'ParrainAffi'){
  234. for (let i = 0; i < this.parrainAffListTemp.length; i++) {
  235. if (this.parrainAffListTemp[i].uid === parUid) {
  236. this.parSelect = ' à : '
  237. + this.parrainAffListTemp[i].familyname + ' '
  238. + this.parrainAffListTemp[i].firstname;
  239. }
  240. }
  241. } else if (this.radioParrain === 'ParrainExist'){
  242. this.parrainExistList.forEach(parEx => {
  243. parEx.forEach(elementparEx => {
  244. if (elementparEx.uid === parUid){
  245. this.parSelect = ' à : '
  246. + elementparEx.familyname + ' '
  247. + elementparEx.firstname;
  248. }
  249. });
  250. });
  251. }
  252.  
  253. this.parrainSelected = this.afDb.list('/Parrain/', {
  254. query: {
  255. orderByChild: 'uid',
  256. equalTo: parUid
  257. }
  258. }
  259. );
  260. this.parrainSelected.forEach(paSel => {
  261. paSel.forEach(elementPaSel => {
  262. this.parrain = elementPaSel;
  263. });
  264. });
  265. // console.log('this.birthday parrain : ' + this.parrain.birthday);
  266. console.log('this.cartePar.commercantCarte.uid : ' + this.cartePar.commercantCarte.uid);
  267. console.log('this.cartePar..parrainCarte.uid : ' + this.cartePar.parrainCarte.uid);
  268. console.log('this.cartePar.operationCommercialID : ' + this.cartePar.operationCommercialID);
  269. console.log('this.cartePar.dateDebut : ' + this.cartePar.dateDebut);
  270. console.log('this.cartePar.dateFin : ' + this.cartePar.dateFin);
  271. }
  272.  
  273.  
  274. creerCartePar() {
  275. // this.opComService.creerCartePar(this.cartePar); inutile
  276.  
  277. this.sectionToImage(this.cartePar);
  278. console.log(this.opComm.nbEnvoie);
  279. this.opComm.nbEnvoie = ((+this.opComm.nbEnvoie) + 1).toString();
  280. console.log(this.opComm.nbEnvoie);
  281.  
  282. const opEnvRef = this.databaseRef.child('OperationCommercial').child(this.opComm.uid.toString()).child('nbEnvoie');
  283. opEnvRef.set(this.opComm.nbEnvoie);
  284.  
  285. this.validC = 'ok';
  286.  
  287. }
  288. sectionToImage(maCarteP: CarteParrainage) {
  289. html2canvas(document.getElementById('subCard1'), {
  290. // allowTaint: true,
  291. useCORS: true,
  292. logging: true,
  293. onrendered: function (canvas) {
  294. var context = canvas.getContext('2d');
  295. var img = new Image();
  296.  
  297. var offsets = document.getElementById('subCard1').getBoundingClientRect();
  298. var imgTop = offsets.top;
  299. var imgLeft = offsets.left;
  300.  
  301. img.onload = function () {
  302. context.drawImage(img, imgLeft, imgTop);
  303. };
  304. img.crossOrigin = 'Anonymous';
  305. canvas.crossOrigin = 'Anonymous';
  306.  
  307. canvas.id = 'canvas';
  308. // document.body.appendChild(canvas);
  309.  
  310. canvas.toBlob(blob => {
  311. var nouvelleImg = new Image();
  312. let storageRef = firebase.storage().ref();
  313. nouvelleImg.setAttribute('crossOrigin', 'anonymous');
  314. nouvelleImg.src = blob;
  315.  
  316. storageRef.child('CarteParrainage/' + maCarteP.uid + '/carteTemplate').put(blob).then((snapshot) => {
  317. let updates = {};
  318. maCarteP.carteTemplate.path = 'CarteParrainage/' + maCarteP.uid + '/carteTemplate';
  319. maCarteP.carteTemplate.filename = maCarteP.name;
  320. maCarteP.carteTemplate.downloadURL = snapshot.downloadURL;
  321. updates['CarteParrainage/' + maCarteP.uid] = maCarteP;
  322. firebase.database().ref().update(updates);
  323. });
  324. });
  325. }
  326. });
  327. }
  328.  
  329.  
  330.  
  331. goToOpComm() {
  332. this.router.navigate(['/opCommercial']);
  333. }
  334. //////
  335. ngOnInit() {
  336. this.subscription = this.opComService.getParrains()
  337. .subscribe(parrains => this.parrainsTest = parrains);
  338. }
  339. //////
  340.  
  341. ngOnDestroy() {
  342. this.validC = '';
  343. this.subscription.unsubscribe();
  344. this.radioParrain = '';
  345. this.cartePar = {
  346. uid: '',
  347. name: '',
  348. parrainCarte: new Parrain(),
  349. commercantCarte: new Commercant(),
  350. operationCommercialID: '',
  351. dateDebut: new Date(),
  352. dateFin: new Date(),
  353. avantageCumule: '',
  354. avantageRecuperer: '',
  355. carteTemplate: new FireImg(),
  356. status: ''
  357. };
  358. this.localUser = {
  359. uid: '',
  360. image: new FireImg(),
  361. email: '',
  362. emailVerified: false,
  363. password: '',
  364. status: ''
  365. };
  366. this.parrain = {
  367. uid: '',
  368. image: new FireImg(),
  369. email: '',
  370. emailVerified: false,
  371. password: '',
  372. familyname: '',
  373. firstname: '',
  374. sex: '',
  375. birthday: new Date(),
  376. telephone: '',
  377. idCard: '',
  378. secretCode: '',
  379. status: ''
  380. };
  381. }
  382. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement