ajout d'image register profil et opcom

thierry
Tmadkaud 7 years ago
parent e61e029252
commit 3ff9f6333d

@ -10,7 +10,7 @@ import { LoginService } from '../../services/login/login.service';
import { User } from '../../../models/User';
import { Parrain } from '../../../models/Parrain';
import { Commercant } from '../../../models/Commercant';
import { Image } from '../../../models/Image';
import {forEach} from "@angular/router/src/utils/collection";
import { AuthService } from '../../services/auth/auth.service';
@ -55,6 +55,7 @@ export class LoginComponent implements OnInit, OnDestroy {
ngOnDestroy() {
this.myUser = {
uid: '',
image: new Image(),
email: '',
emailVerified: false,
password: '',

@ -17,7 +17,7 @@
<div class="md-form">
<i class="fa fa-file-picture-o prefix grey-text"></i>
<input type="file" id="orangeForm-File" [(ngModel)]="opComm.carteTemplate" placeholder="Carte vierge">
<input type="file" id="orangeForm-File" name="file">
</div>
<div class="md-form">
<i class="fa fa-euro prefix grey-text"></i>

@ -1,17 +1,22 @@
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Component, OnInit, OnDestroy, Input } from '@angular/core';
import { Router } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { OperationCommerciale } from '../../../../models/OperationCommerciale';
// import { AngularFire, FirebaseListObservable } from 'angularfire2';
import { AngularFireDatabase, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2/database';
import * as firebase from 'firebase/app';
import { AngularFireAuth } from 'angularfire2/auth';
import { AuthService } from '../../../services/auth/auth.service';
import { AngularFireAuthModule } from 'angularfire2/auth';
import { OpCommercialService } from '../../../services/opCommercial/op-commercial.service';
import { Image } from '../../../../models/Image';
@Component({
selector: 'app-creation-op-com',
templateUrl: './creation-op-com.component.html',
@ -19,11 +24,18 @@ import { OpCommercialService } from '../../../services/opCommercial/op-commercia
providers: [AuthService, OpCommercialService]
})
export class CreationOpComComponent implements OnInit, OnDestroy {
@Input() folder: string;
fileList: FirebaseListObservable<Image[]>;
// imageList: Observable<Image[]>;
opComm: OperationCommerciale;
// selectedFiles: FileList;
user: Observable<firebase.User>;
opCommData: FirebaseListObservable<any[]>;
constructor(public afAuth: AngularFireAuth, public afDb: AngularFireDatabase,
private router: Router, private authService: AuthService, private opComService: OpCommercialService) {
this.opComm = new OperationCommerciale();
@ -48,9 +60,11 @@ export class CreationOpComComponent implements OnInit, OnDestroy {
console.log('element.uid: ' + element.uid);
this.opComm.idCommercant = element.uid;
this.opComm.status = "Non active";
// let file = this.selectedFiles.item(0);
// this.opComm.carteTemplate = file;
// this.upload();
console.log('element.uid: ' + element.uid);
this.opComService.saveOpComm(element, this.opComm);
});
});
}
@ -60,9 +74,36 @@ export class CreationOpComComponent implements OnInit, OnDestroy {
ngOnInit() {
}
goToOpComm(){
goToOpComm() {
this.router.navigate(['/opCommercial']);
}
/*
ngOnChanges() {
console.log('new values for folder');
let storage = firebase.storage();
this.fileList = this.afDb.list(`/${this.folder}/images`);
console.log('Rendering all images in ', `/${this.folder}/images`)
this.imageList = this.fileList.map( itemList =>
itemList.map( item => {
var pathReference = storage.ref(item.path);
let result = {$key: item.$key, downloadURL: pathReference.getDownloadURL(), path: item.path, filename: item.filename};
console.log(result);
return result;
})
);
}
*/
/*
upload() {
this.opComService.upload();
}
*/
delete(image: Image){
this.opComService.delete(image);
}
ngOnDestroy() {
this.opComm = {
uid : '',
@ -70,7 +111,7 @@ export class CreationOpComComponent implements OnInit, OnDestroy {
idCommercant : '',
dateDebut : new Date(),
dateFin : new Date(),
carteTemplate : '',
carteTemplate : new Image(),
avantageParrain : '',
deviseAvantageParrain : '',
tarifXJCParrain : '',

@ -5,7 +5,9 @@
</div>
<ul>
<li *ngFor="let op of opCommData | async">Operation Commerciale: {{op.name}}</li>
<li *ngFor="let op of opCommData | async">
Operation Commerciale: {{op.name}}
</li>
</ul>
<button (click)="goToCreaOpCom()">Nouvelle opération Commercial</button>
<button (click)="goToProfil()">Back</button>

@ -21,7 +21,7 @@
</div>
<!--Avatar-->
<div class="avatar"><img src="https://mdbootstrap.com/img/Photos/Avatars/img%20%2831%29.jpg" class="rounded-circle img-responsive">
<div class="avatar"><img src="{{imageProfil}}" class="rounded-circle img-responsive">
</div>
<div class="card-body">
@ -29,7 +29,6 @@
<h4 class="card-title"><p>Salut {{localUser.firstname}} {{localUser.familyname}} {{localUser.uid}} </p></h4>
<hr>
<div *ngIf="(user | async)?.displayName === 'Parrain'" >
<div>
<ul>
<p class="text-left "><label class="text-uppercase">status </label>: {{localUser.status}}</p>
@ -52,7 +51,6 @@
<button (click)="goToCarte()">Cartes</button>
</div>
<div *ngIf="(user | async)?.displayName === 'Commercant'" class="alert alert-danger">
<div>
<h4 class="card-title"><p>Salut {{localUser.commercialName}} {{localUser.uid}} </p></h4>
<ul>

@ -11,6 +11,7 @@ import { ProfilService } from '../../services/profil/profil.service';
import { User } from '../../../models/User';
import { Parrain } from '../../../models/Parrain';
import { Commercant } from '../../../models/Commercant';
import { Image } from '../../../models/Image';
import {forEach} from "@angular/router/src/utils/collection";
import { AuthService } from '../../services/auth/auth.service';
@ -29,6 +30,7 @@ export class ProfilComponent implements OnInit, OnDestroy {
parrain: Parrain;
commercant: Commercant;
profileData: FirebaseListObservable<any[]>;
imageProfil: string;
constructor(public afAuth: AngularFireAuth, public afDb: AngularFireDatabase,
private router: Router, private authService: AuthService) {
@ -36,7 +38,7 @@ export class ProfilComponent implements OnInit, OnDestroy {
this.parrain = new Parrain();
this.commercant = new Commercant();
this.imageProfil = 'https://mdbootstrap.com/img/Photos/Avatars/img%20%2831%29.jpg';
this.user = afAuth.authState;
this.user.subscribe(
(auth) => {
@ -54,10 +56,12 @@ export class ProfilComponent implements OnInit, OnDestroy {
this.localUser = new Parrain();
this.localUser = element;
this.parrain = element;
this.imageProfil = this.parrain.image.downloadURL;
} else if (auth.displayName === 'Commercant') {
this.localUser = new Commercant();
this.localUser = element;
this.commercant = element;
this.imageProfil = this.commercant.image.downloadURL;
}
});
});
@ -100,6 +104,7 @@ export class ProfilComponent implements OnInit, OnDestroy {
};*/
this.localUser = {
uid: '',
image: new Image(),
email: '',
emailVerified: false,
password: '',
@ -107,6 +112,7 @@ export class ProfilComponent implements OnInit, OnDestroy {
};
this.parrain = {
uid: '',
image: new Image(),
email: '',
emailVerified: false,
password: '',
@ -121,6 +127,7 @@ export class ProfilComponent implements OnInit, OnDestroy {
};
this.commercant = {
uid : '',
image: new Image(),
raisonSociale : '',
commercialName : '',
siret : '',

@ -25,7 +25,10 @@
<i class="fa fa-user prefix grey-text"></i>
<input type="text" id="orangeForm-Firstname" [(ngModel)]="parrain.firstname" placeholder="Firstname">
</div>
<div class="md-form">
<i class="fa fa-file-picture-o prefix grey-text"></i>
<input type="file" id="orangeForm-File" name="file">
</div>
<form class="form-inline">
<div class="md-form">
<i class="fa fa-venus-mars prefix grey-text"></i>
@ -96,6 +99,10 @@
<i class="fa fa-user prefix grey-text"></i>
<input type="text" id="orangeForm-Firstname" [(ngModel)]="commercant.commercialName" placeholder="Commercial name">
</div>
<div class="md-form">
<i class="fa fa-file-picture-o prefix grey-text"></i>
<input type="file" id="orangeForm-File" name="file">
</div>
<div class="md-form">
<i class="fa fa-info prefix grey-text"></i>
<input type="text" id="orangeForm-Username" [(ngModel)]="commercant.siret" placeholder="Siret" required minlength="14" name="siret" #siret="ngModel">

@ -6,6 +6,7 @@ import { AuthService } from '../../services/auth/auth.service';
import { User } from '../../../models/User';
import { Parrain } from '../../../models/Parrain';
import { Commercant } from '../../../models/Commercant';
import { Image } from '../../../models/Image';
import {tryCatch} from "rxjs/util/tryCatch";
@Component({
@ -68,6 +69,7 @@ export class RegisterComponent implements OnInit, OnDestroy {
ngOnDestroy() {
this.currentUser = {
uid: '',
image: new Image(),
email: '',
emailVerified: false,
password: '',
@ -75,6 +77,7 @@ export class RegisterComponent implements OnInit, OnDestroy {
};
this.parrain = {
uid: '',
image: new Image(),
email: '',
emailVerified: false,
password: '',
@ -89,6 +92,7 @@ export class RegisterComponent implements OnInit, OnDestroy {
};
this.commercant = {
uid : '',
image: new Image(),
raisonSociale : '',
commercialName : '',
siret : '',

@ -1,4 +1,4 @@
import { Injectable } from '@angular/core';
import { Injectable, Input } from '@angular/core';
import { Router } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { HttpModule, Headers } from '@angular/http';
@ -6,25 +6,28 @@ import { HttpModule, Headers } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import * as firebase from 'firebase/app';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
import { User } from '../../../models/User';
import { Parrain } from '../../../models/Parrain';
import { Image } from '../../../models/Image';
import { Commercant } from '../../../models/Commercant';
@Injectable()
export class AuthService {
databaseRef: any;
storageRef: any;
changeRequest: any;
userModel: User;
parrain: Parrain;
commercant: Commercant;
test: string;
@Input() folder: string;
//fileList: FirebaseListObservable<Image[]>;
constructor(private http: HttpModule, public afAuth: AngularFireAuth, public afDb: AngularFireDatabase, public router: Router) {
this.databaseRef = firebase.database().ref();
}
@ -35,11 +38,13 @@ export class AuthService {
// var parrainInfo = infoUser;
infoUser.uid = user.uid;
userRef.set(infoUser);
this.upload(infoUser);
}else if (infoUser.status === 'Commercant') {
const userReff = this.databaseRef.child('Commercant').child(user.uid);
// var commercantInfo = infoUser;
infoUser.uid = user.uid;
userReff.set(infoUser);
this.upload(infoUser);
}
}
@ -81,4 +86,61 @@ export class AuthService {
logout() {
firebase.auth().signOut();
}
upload(info: any) {
let storageRef = firebase.storage().ref();
let success = false;
this.folder = '/' + info.status + '/' + info.uid + '/image';
for (let selectedFile of [(<HTMLInputElement>document.getElementById('orangeForm-File')).files[0]]) {
console.log(selectedFile);
let folder = this.folder;
let path = `${this.folder}`;
let iRef = storageRef.child(path);
iRef.put(selectedFile).then((snapshot) => {
let updates = {};
info.image.path = path;
info.image.filename = 'Profil picture';
info.image.downloadURL = snapshot.downloadURL;
updates[folder] = info.image;
firebase.database().ref().update(updates);
});
}
firebase.auth().onAuthStateChanged(function (userUpdate) {
userUpdate.updateProfile({
displayName: info.status,
photoURL: info.image.downloadURL
});
if (userUpdate) {
console.log('userUpdate: ' + userUpdate);
} else {
console.log('pas user');
}
});
}
delete(image: Image) {
console.log('delete');
/*
let storagePath = image.path;
let referencePath = `${this.folder}/images/` + image.key;
// Do these as two separate steps so you can still try delete ref if file no longer exists
// Delete from Storage
firebase.storage().ref().child(storagePath).delete()
.then(
() => {},
(error) => console.error('Error deleting stored file', storagePath)
);
// Delete references
this.afDb.object(referencePath).remove();
*/
}
}

@ -1,46 +1,105 @@
import { Injectable } from '@angular/core';
import { Injectable, Input } from '@angular/core';
import { Router } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { HttpModule, Headers } from '@angular/http';
// import { Component, OnInit, OnDestroy, Input } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import * as firebase from 'firebase/app';
import 'firebase/storage';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
import { User } from '../../../models/User';
import { Parrain } from '../../../models/Parrain';
import { Commercant } from '../../../models/Commercant';
import { Image } from '../../../models/Image';
import { OperationCommerciale } from '../../../models/OperationCommerciale';
@Injectable()
export class OpCommercialService {
databaseRef: any;
storageRef: any;
changeRequest: any;
userModel: User;
parrain: Parrain;
commercant: Commercant;
imageOp: Image;
test: string;
constructor(private http: HttpModule, public router: Router) {
@Input() folder: string;
//fileList: FirebaseListObservable<Image[]>;
constructor(public afAuth: AngularFireAuth, public afDb: AngularFireDatabase, private http: HttpModule, public router: Router) {
this.databaseRef = firebase.database().ref();
this.storageRef = firebase.storage().ref();
}
saveOpComm(user: firebase.User, infoOpCom: OperationCommerciale) {
infoOpCom.uid = firebase.database().ref().child('OperationCommercial').push().key;
// Write the new post's data simultaneously in the opCom list and the commercant's opComm list.
infoOpCom.uid = firebase.database().ref().child('OperationCommercial').push().key;
let updates = {};
updates['/OperationCommercial/' + infoOpCom.uid] = infoOpCom;
// updates['/commercial-opComs/' + user.uid + '/' + infoOpCom.uid] = infoOpCom;
firebase.database().ref().update(updates);
/*
const userRef = this.databaseRef.child('OperationCommercial').child(user.uid);
userRef.set(infoOpCom);
this.upload(infoOpCom);
}
upload(info: any) {
// Create a root reference
let storageRef = firebase.storage().ref();
let success = false;
this.folder = '/OperationCommercial/' + info.uid + '/carteTemplate';
let theNameOfFile = 'carteTemplate';
// This currently only grabs item 0, TODO refactor it to grab them all
for (let selectedFile of [(<HTMLInputElement>document.getElementById('orangeForm-File')).files[0]]) {
console.log(selectedFile);
// Make local copies of services because "this" will be clobbered
let router = this.router;
let folder = this.folder;
let path = `${this.folder}`;
let iRef = storageRef.child(path);
iRef.put(selectedFile).then((snapshot) => {
// console.log('Uploaded a blob or file! Now storing the reference at', `/${this.folder}/images/`);
// this.afDb.list(`/${folder}/`).push({ path: path, filename: selectedFile.name });
let updates = {};
info.carteTemplate.path = path;
info.carteTemplate.filename = info.name;
info.carteTemplate.downloadURL = snapshot.downloadURL;
updates[folder] = info.carteTemplate;
firebase.database().ref().update(updates);
});
}
}
delete(image: Image) {
console.log('delete');
/*
let storagePath = image.path;
let referencePath = `${this.folder}/images/` + image.key;
// Do these as two separate steps so you can still try delete ref if file no longer exists
// Delete from Storage
firebase.storage().ref().child(storagePath).delete()
.then(
() => {},
(error) => console.error('Error deleting stored file', storagePath)
);
// Delete references
this.afDb.object(referencePath).remove();
*/
}

@ -0,0 +1,13 @@
export class Image {
path: string;
filename: string;
downloadURL: string;
key: string;
constructor(){
this.path = '';
this.filename = '';
this.downloadURL = '';
this.key = '';
}
}

@ -1,3 +1,4 @@
import { Image } from './Image';
export class OperationCommerciale
{
uid: string;
@ -5,7 +6,7 @@ export class OperationCommerciale
idCommercant: string;
dateDebut: Date;
dateFin: Date;
carteTemplate: string;
carteTemplate: Image;
avantageParrain: string;
deviseAvantageParrain: string;
tarifXJCParrain: string;
@ -20,7 +21,7 @@ export class OperationCommerciale
this.idCommercant = '';
this.dateDebut = new Date();
this.dateFin = new Date();
this.carteTemplate = '';
this.carteTemplate = new Image();
this.avantageParrain = '';
this.deviseAvantageParrain = '';
this.tarifXJCParrain = '';

@ -1,3 +1,4 @@
import { Image } from './Image';
export class User
{
uid: string;
@ -5,6 +6,7 @@ export class User
// firstname: string;
// sex: string;
// birthday: Date;
image: Image;
email: string;
emailVerified: boolean;
password: string;
@ -21,10 +23,11 @@ export class User
// this.firstname = '';
// this.sex = '';
// this.birthday = new Date();
this.image = new Image();
this.email = '';
this.emailVerified = false;
this.password = '';
// this.telephone = '';
// this.telephone = '';
// username ne serta a rien
// this.username = '';
// this.idCard = '';

Loading…
Cancel
Save