@ -36,10 +36,11 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
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 [ ] > ;
parSelect : string ;
@ -51,6 +52,8 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
parrainsTest : Parrain [ ] ;
filteredParrainsTest : any [ ] ;
subscription : Subscription ;
validC : string ;
//startAt = new Subject();
//endAt = new Subject();
/////
@ -62,7 +65,7 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
this . radioParrain = '' ;
this . validC = '' ;
this . localUser = new User ( ) ;
this . parrain = new Parrain ( ) ;
this . commercant = new Commercant ( ) ;
@ -83,9 +86,9 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
this . commList . forEach ( commerc = > {
commerc . forEach ( elementCommerc = > {
this . commercant = elementCommerc ;
} ) ;
this . commercant = elementCommerc ;
} ) ;
} ) ;
// initialisation carte
this . route . params . subscribe ( params = > {
// this.test = params['idOp'];
@ -101,16 +104,16 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
this . opComm = element ;
this . cartePar . uid = firebase . database ( ) . ref ( ) . child ( 'CarteParrainage' ) . push ( ) . key ;
this . cartePar . name = this . opComm . name ;
this . cartePar . commercant ID = this . opComm . idCommercant ;
this . cartePar . commercant Carte = this . opComm . commercantOpCom ;
this . cartePar . operationCommercialID = this . opComm . uid ;
this . cartePar . dateDebut = this . opComm . dateDebut ;
this . cartePar . dateFin = this . opComm . dateFin ;
console . log ( 'this.opComm.dateFin: ' + this . opComm . dateFin ) ;
console . log ( 'this.opComm.dateFin: ' + this . opComm . dateFin ) ;
/ *
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 ] ) ) ;
* /
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 ;
} ) ;
} ) ;
@ -123,17 +126,13 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
}
}
) ;
console . log ( params [ 'idOp' ] ) ;
this . carteParList . forEach ( carte = > {
console . log ( 'carte :' + carte . length ) ;
carte . forEach ( elementCarte = > {
console . log ( "elementCarte. parrainID : " + elementCarte . parrainID ) ;
console . log ( "elementCarte..parrainCarte.uid : " + elementCarte . parrainCarte . uid ) ;
this . parrainAffList = this . afDb . list ( '/Parrain/' , {
query : {
orderByChild : 'uid' ,
equalTo : elementCarte.parrain ID
equalTo : elementCarte.parrain Carte.uid
}
}
) ;
@ -177,6 +176,7 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
registerNewParrain() {
this . parrain . status = 'Parrain' ;
this . parrain . secretCode = this . getRandomArbitrary ( 1111 , 9999 ) . toString ( ) ;
this . parrain . password = this . getRandomArbitrary ( 111111 , 999999 ) . toString ( ) ;
// this.authService.signUp(this.parrain);
@ -192,13 +192,14 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
emailVerified : true
} ) ;
this . cartePar . parrain ID = userCreate . uid ;
this . cartePar . parrain Carte = userCreate ;
this . parrain . uid = userCreate . uid ;
this . parrain . emailVerified = userCreate . emailVerified ;
userRef . set ( this . parrain ) ;
this . creerCartePar ( ) ;
firebase . auth ( ) . sendPasswordResetEmail ( this . parrain . email ) ;
userCreate . sendEmailVerification ( ) ;
firebase . auth ( ) . signOut ( ) ;
firebase . auth ( ) . signInWithEmailAndPassword ( this . commercant . email , this . commercant . password ) ;
} ) ;
@ -212,8 +213,19 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
}
getIdParrain ( parUid ) {
var parlistTemp = this . afDb . list ( '/Parrain/' , {
query : {
orderByChild : 'uid' ,
equalTo : parUid
}
}
) ;
this . cartePar . parrainID = parUid ;
parlistTemp . forEach ( par = > {
par . forEach ( elementParTemp = > {
this . cartePar . parrainCarte = elementParTemp ;
} ) ;
} ) ;
this . selectPar = true ;
@ -221,7 +233,7 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
if ( this . radioParrain === 'ParrainAffi' ) {
for ( let i = 0 ; i < this . parrainAffListTemp . length ; i ++ ) {
if ( this . parrainAffListTemp [ i ] . uid === parUid ) {
this . parSelect = ' Vous avez selectionner le parrain : '
this . parSelect = ' à : '
+ this . parrainAffListTemp [ i ] . familyname + ' '
+ this . parrainAffListTemp [ i ] . firstname ;
}
@ -230,7 +242,7 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
this . parrainExistList . forEach ( parEx = > {
parEx . forEach ( elementparEx = > {
if ( elementparEx . uid === parUid ) {
this . parSelect = ' Vous avez selectionner le parrain : '
this . parSelect = ' à : '
+ elementparEx . familyname + ' '
+ elementparEx . firstname ;
}
@ -238,9 +250,21 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
} ) ;
}
console . log ( 'this.cartePar.commercantID : ' + this . cartePar . commercantID ) ;
console . log ( 'this.cartePar.parrainID : ' + this . cartePar . parrainID ) ;
this . parrainSelected = this . afDb . list ( '/Parrain/' , {
query : {
orderByChild : 'uid' ,
equalTo : parUid
}
}
) ;
this . parrainSelected . forEach ( paSel = > {
paSel . forEach ( elementPaSel = > {
this . parrain = elementPaSel ;
} ) ;
} ) ;
// 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.operationCommercialID : ' + this . cartePar . operationCommercialID ) ;
console . log ( 'this.cartePar.dateDebut : ' + this . cartePar . dateDebut ) ;
console . log ( 'this.cartePar.dateFin : ' + this . cartePar . dateFin ) ;
@ -248,9 +272,65 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
creerCartePar() {
this . opComService . creerCartePar ( this . cartePar ) ;
// this.opComService.creerCartePar(this.cartePar); inutile
this . sectionToImage ( this . cartePar ) ;
console . log ( this . opComm . nbEnvoie ) ;
this . opComm . nbEnvoie = ( ( + this . opComm . nbEnvoie ) + 1 ) . toString ( ) ;
console . log ( 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 ) {
var context = canvas . getContext ( '2d' ) ;
var img = new Image ( ) ;
var offsets = document . getElementById ( 'subCard1' ) . getBoundingClientRect ( ) ;
var imgTop = offsets . top ;
var imgLeft = offsets . left ;
img . onload = function ( ) {
context . drawImage ( img , imgLeft , imgTop ) ;
} ;
img . crossOrigin = 'Anonymous' ;
canvas . crossOrigin = 'Anonymous' ;
canvas . id = 'canvas' ;
// document.body.appendChild(canvas);
canvas . toBlob ( blob = > {
var nouvelleImg = new Image ( ) ;
let storageRef = firebase . storage ( ) . ref ( ) ;
nouvelleImg . setAttribute ( 'crossOrigin' , 'anonymous' ) ;
nouvelleImg . src = blob ;
storageRef . child ( 'CarteParrainage/' + maCarteP . uid + '/carteTemplate' ) . put ( blob ) . then ( ( snapshot ) = > {
let updates = { } ;
maCarteP . carteTemplate . path = 'CarteParrainage/' + maCarteP . uid + '/carteTemplate' ;
maCarteP . carteTemplate . filename = maCarteP . name ;
maCarteP . carteTemplate . downloadURL = snapshot . downloadURL ;
updates [ 'CarteParrainage/' + maCarteP . uid ] = maCarteP ;
firebase . database ( ) . ref ( ) . update ( updates ) ;
} ) ;
} ) ;
}
} ) ;
}
goToOpComm() {
this . router . navigate ( [ '/opCommercial' ] ) ;
}
//////
ngOnInit() {
this . subscription = this . opComService . getParrains ( )
@ -259,13 +339,14 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
//////
ngOnDestroy() {
this . validC = '' ;
this . subscription . unsubscribe ( ) ;
this . radioParrain = '' ;
this . cartePar = {
uid : '' ,
name : '' ,
parrain ID: '' ,
commercant ID: '' ,
parrain Carte: new Parrain ( ) ,
commercant Carte: new Commercant ( ) ,
operationCommercialID : '' ,
dateDebut : new Date ( ) ,
dateFin : new Date ( ) ,
@ -298,332 +379,4 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
status : ''
} ;
}
sectionToImage ( monURL : string ) {
/ * *
* covert canvas to image
* and save the image file
* /
var Canvas2Image = function ( ) {
// check if support sth.
var $support = function ( ) {
var canvas = document . createElement ( 'canvas' ) ,
ctx = canvas . getContext ( '2d' ) ;
return {
canvas : ! ! ctx ,
imageData : ! ! ctx . getImageData ,
dataURL : ! ! canvas . toDataURL ,
btoa : ! ! window . btoa
} ;
} ( ) ;
var downloadMime = 'image/png' ;
function scaleCanvas ( canvas , width , height ) {
var w = canvas . width ,
h = canvas . height ;
if ( width == undefined ) {
width = w ;
}
if ( height == undefined ) {
height = h ;
}
var retCanvas = document . createElement ( 'canvas' ) ;
var retCtx = retCanvas . getContext ( '2d' ) ;
retCanvas . width = width ;
retCanvas . height = height ;
retCtx . drawImage ( canvas , 0 , 0 , w , h , 0 , 0 , width , height ) ;
return retCanvas ;
}
function getDataURL ( canvas , type , width , height ) {
canvas = scaleCanvas ( canvas , width , height ) ;
return canvas . toDataURL ( type ) ;
}
function saveFile ( strData ) {
document . location . href = strData ;
}
function genImage ( strData ) {
var img = document . createElement ( 'img' ) ;
img . src = strData ;
return img ;
}
function fixType ( type ) {
type = type . toLowerCase ( ) . replace ( /jpg/i , 'jpeg' ) ;
var r = type . match ( /png|jpeg|bmp|gif/ ) [ 0 ] ;
return 'image/' + r ;
}
function encodeData ( data ) {
if ( ! window . btoa ) {
throw 'btoa undefined'
}
var str = '' ;
if ( typeof data == 'string' ) {
str = data ;
} else {
for ( var i = 0 ; i < data . length ; i ++ ) {
str += String . fromCharCode ( data [ i ] ) ;
}
}
return btoa ( str ) ;
}
function getImageData ( canvas ) {
var w = canvas . width ,
h = canvas . height ;
return canvas . getContext ( '2d' ) . getImageData ( 0 , 0 , w , h ) ;
}
function makeURI ( strData , type ) {
return 'data:' + type + ';base64,' + strData ;
}
/ * *
* create bitmap image
* 按 照 规 则 生 成 图 片 响 应 头 和 响 应 体
* /
var genBitmapImage = function ( oData ) {
//
// BITMAPFILEHEADER: http://msdn.microsoft.com/en-us/library/windows/desktop/dd183374(v=vs.85).aspx
// BITMAPINFOHEADER: http://msdn.microsoft.com/en-us/library/dd183376.aspx
//
var biWidth = oData . width ;
var biHeight = oData . height ;
var biSizeImage = biWidth * biHeight * 3 ;
var bfSize = biSizeImage + 54 ; // total header size = 54 bytes
//
// typedef struct tagBITMAPFILEHEADER {
// WORD bfType;
// DWORD bfSize;
// WORD bfReserved1;
// WORD bfReserved2;
// DWORD bfOffBits;
// } BITMAPFILEHEADER;
//
var BITMAPFILEHEADER = [
// WORD bfType -- The file type signature; must be "BM"
0x42 , 0x4D ,
// DWORD bfSize -- The size, in bytes, of the bitmap file
bfSize & 0xff , bfSize >> 8 & 0xff , bfSize >> 16 & 0xff , bfSize >> 24 & 0xff ,
// WORD bfReserved1 -- Reserved; must be zero
0 , 0 ,
// WORD bfReserved2 -- Reserved; must be zero
0 , 0 ,
// DWORD bfOffBits -- The offset, in bytes, from the beginning of the BITMAPFILEHEADER structure to the bitmap bits.
54 , 0 , 0 , 0
] ;
//
// typedef struct tagBITMAPINFOHEADER {
// DWORD biSize;
// LONG biWidth;
// LONG biHeight;
// WORD biPlanes;
// WORD biBitCount;
// DWORD biCompression;
// DWORD biSizeImage;
// LONG biXPelsPerMeter;
// LONG biYPelsPerMeter;
// DWORD biClrUsed;
// DWORD biClrImportant;
// } BITMAPINFOHEADER, *PBITMAPINFOHEADER;
//
var BITMAPINFOHEADER = [
// DWORD biSize -- The number of bytes required by the structure
40 , 0 , 0 , 0 ,
// LONG biWidth -- The width of the bitmap, in pixels
biWidth & 0xff , biWidth >> 8 & 0xff , biWidth >> 16 & 0xff , biWidth >> 24 & 0xff ,
// LONG biHeight -- The height of the bitmap, in pixels
biHeight & 0xff , biHeight >> 8 & 0xff , biHeight >> 16 & 0xff , biHeight >> 24 & 0xff ,
// WORD biPlanes -- The number of planes for the target device. This value must be set to 1
1 , 0 ,
// WORD biBitCount -- The number of bits-per-pixel, 24 bits-per-pixel -- the bitmap
// has a maximum of 2^24 colors (16777216, Truecolor)
24 , 0 ,
// DWORD biCompression -- The type of compression, BI_RGB (code 0) -- uncompressed
0 , 0 , 0 , 0 ,
// DWORD biSizeImage -- The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps
biSizeImage & 0xff , biSizeImage >> 8 & 0xff , biSizeImage >> 16 & 0xff , biSizeImage >> 24 & 0xff ,
// LONG biXPelsPerMeter, unused
0 , 0 , 0 , 0 ,
// LONG biYPelsPerMeter, unused
0 , 0 , 0 , 0 ,
// DWORD biClrUsed, the number of color indexes of palette, unused
0 , 0 , 0 , 0 ,
// DWORD biClrImportant, unused
0 , 0 , 0 , 0
] ;
var iPadding = ( 4 - ( ( biWidth * 3 ) % 4 ) ) % 4 ;
var aImgData = oData . data ;
var strPixelData = '' ;
var biWidth4 = biWidth << 2 ;
var y = biHeight ;
var fromCharCode = String . fromCharCode ;
do {
var iOffsetY = biWidth4 * ( y - 1 ) ;
var strPixelRow = '' ;
for ( var x = 0 ; x < biWidth ; x ++ ) {
var iOffsetX = x << 2 ;
strPixelRow += fromCharCode ( aImgData [ iOffsetY + iOffsetX + 2 ] ) +
fromCharCode ( aImgData [ iOffsetY + iOffsetX + 1 ] ) +
fromCharCode ( aImgData [ iOffsetY + iOffsetX ] ) ;
}
for ( var c = 0 ; c < iPadding ; c ++ ) {
strPixelRow += String . fromCharCode ( 0 ) ;
}
strPixelData += strPixelRow ;
} while ( -- y ) ;
var strEncoded = encodeData ( BITMAPFILEHEADER . concat ( BITMAPINFOHEADER ) ) + encodeData ( strPixelData ) ;
return strEncoded ;
} ;
/ * *
* saveAsImage
* @param canvasElement
* @param { String } image type
* @param { Number } [ optional ] png width
* @param { Number } [ optional ] png height
* /
var saveAsImage = function ( canvas , width , height , type ) {
if ( $support . canvas && $support . dataURL ) {
if ( typeof canvas == "string" ) {
canvas = document . getElementById ( canvas ) ;
}
if ( type == undefined ) {
type = 'png' ;
}
type = fixType ( type ) ;
if ( /bmp/ . test ( type ) ) {
var data = getImageData ( scaleCanvas ( canvas , width , height ) ) ;
var strData = '' ;
strData = genBitmapImage ( data ) ;
saveFile ( makeURI ( strData , downloadMime ) ) ;
} else {
var strData = '' ;
strData = getDataURL ( canvas , type , width , height ) ;
saveFile ( strData . replace ( type , downloadMime ) ) ;
}
}
} ;
var convertToImage = function ( canvas , width , height , type ) {
if ( $support . canvas && $support . dataURL ) {
if ( typeof canvas == "string" ) {
canvas = document . getElementById ( canvas ) ;
}
if ( type == undefined ) {
type = 'png' ;
}
type = fixType ( type ) ;
if ( /bmp/ . test ( type ) ) {
var data = getImageData ( scaleCanvas ( canvas , width , height ) ) ;
var strData = '' ;
strData = genBitmapImage ( data ) ;
return genImage ( makeURI ( strData , 'image/bmp' ) ) ;
} else {
var strData = '' ;
strData = getDataURL ( canvas , type , width , height ) ;
return genImage ( strData ) ;
}
}
} ;
return {
saveAsImage : saveAsImage ,
saveAsPNG : function ( canvas , width , height ) {
return saveAsImage ( canvas , width , height , 'png' ) ;
} ,
saveAsJPEG : function ( canvas , width , height ) {
return saveAsImage ( canvas , width , height , 'jpeg' ) ;
} ,
saveAsGIF : function ( canvas , width , height ) {
return saveAsImage ( canvas , width , height , 'gif' ) ;
} ,
saveAsBMP : function ( canvas , width , height ) {
return saveAsImage ( canvas , width , height , 'bmp' ) ;
} ,
convertToImage : convertToImage ,
convertToPNG : function ( canvas , width , height ) {
return convertToImage ( canvas , width , height , 'png' ) ;
} ,
convertToJPEG : function ( canvas , width , height ) {
return convertToImage ( canvas , width , height , 'jpeg' ) ;
} ,
convertToGIF : function ( canvas , width , height ) {
return convertToImage ( canvas , width , height , 'gif' ) ;
} ,
convertToBMP : function ( canvas , width , height ) {
return convertToImage ( canvas , width , height , 'bmp' ) ;
}
} ;
} ( ) ;
/ *
html2canvas ( document . body ) . then ( canvas = > {
var imgData = canvas . toDataURL ( "image/png" ) ;
var context = canvas . getContext ( '2d' ) ;
console . log ( imgData ) ;
window . open ( imgData ) ;
// this.AddImagesResource(imgData);
// document.body.appendChild(canvas);
} ) ; * /
html2canvas ( document . getElementById ( 'subCard1' ) , {
allowTaint : true ,
useCORS : true ,
logging : true ,
onrendered : function ( canvas ) {
var context = canvas . getContext ( '2d' ) ;
var img = new Image ( ) ;
var offsets = document . getElementById ( 'subCard1' ) . getBoundingClientRect ( ) ;
var imgTop = offsets . top ;
var imgLeft = offsets . left ;
// var offsetsContainer = document.getElementById('subCard1').getBoundingClientRect();
// var imageLeft = imgLeft - offsetsContainer.left;
// var imageTop = imgTop - offsetsContainer.top;
img . src = monURL ; // document.getElementById('myimage').getAttribute('src');
img . onload = function ( ) {
context . drawImage ( img , imgLeft , imgTop ) ;
} ;
document . body . appendChild ( canvas ) ;
//Canvas2Image.saveAsPNG(canvas, 250, 140);
// window.open(canvas.toDataURL('image/png'));
}
} ) ;
}
goToOpComm() {
this . router . navigate ( [ '/opCommercial' ] ) ;
}
}