Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { HttpClient, HttpHeaders } from '@angular/common/http';
- import { Injectable } from '@angular/core';
- import { Platform, Config, LoadingController, Loading } from 'ionic-angular';
- import { UrlEnvironment } from '../service/urlEnvironment';
- import { UserProfileService } from '../service/userProfileService';
- // import { EmptyObservable } from 'rxjs/Observable';
- import 'rxjs/add/operator/catch';
- import 'rxjs/add/operator/map'
- import * as firebase from 'firebase/app';
- import '@firebase/messaging';
- import { AngularFireAuth } from 'angularfire2/auth';
- import { FirebaseIdToken } from '../pojo/firebaseIdToken';
- import { ContractorCertificates } from '../pojo/contractorCertificates';
- import { ToastController } from 'ionic-angular';
- // import { ErrorObservable } from 'rxjs/';
- import { Observable } from 'rxjs';
- import { SaveJobPojoInterface } from '../pojo/saveJobPojoInterface';
- import { DateTimeInterface } from '../pojo/dateTimeInterface';
- import { StripeBankPojo } from '../pojo/stripeBankPojo';
- // import { EmptyObservable } from 'rxjs/observable/EmptyObservable';
- // import {EmptyObservable} from 'rxjs/observable/EmptyObservable';
- // import { empty } from 'rxjs/observable/empty';
- import { creditCardInterface } from '../pojo/creditCardInterface';
- import { CoordinatesXY } from '../pojo/coordinateXY';
- // import { FCM } from '@ionic-native/fcm';
- import { Firebase } from '@ionic-native/firebase';
- import 'rxjs/add/operator/map';
- declare var Stripe: any;
- @Injectable()
- export class ContractorService {
- // public userProfile: UserProfileProvider;
- public loading: Loading;
- public uid: string;
- public idToken: string;
- public email: string;
- private appName = this.config.get('appName');
- private appContra = this.config.get('appName') == 'contractor' ? true : false;
- public appContractor: string = 'contractor';
- private readonly googleMapsApi = "AIzaSyCamwzln1uomIwJhNl_9ingqGYolUR3wyc";
- private readonly vapidKey = "BNsAFAIfl4pZECCtvaM8zCtpK-caM2r0KNkqgrme121nSjMPVp2ZXg578dNA-0xDTX1kQIG2BEtYViYSFAAZVys";
- constructor(public http: HttpClient
- , public platform: Platform
- , public config: Config
- , public loadingCtrl: LoadingController
- , public afAuth: AngularFireAuth
- , public toastCtrl: ToastController
- , public userProfile: UserProfileService
- , public fcm: Firebase
- , public urlEnvironment: UrlEnvironment) {
- // Token for login
- firebase.auth().onIdTokenChanged((user: firebase.User) => {
- console.log("onIdTokenChanged");
- if (user && user.uid) {
- user.getIdToken(false)
- .then((data: any) => {
- this.idToken = data;
- });
- }
- });
- // Token for push to the phone.
- if (this.platform.is('cordova') && this.platform.ready()) {
- setTimeout(() => {
- this.fcm.onTokenRefresh()
- .subscribe((token: any) => {
- console.log("token onTokenRefresh: ", token);
- this.saveToken(token, null);
- });
- }, 1000);
- }
- }
- //-----------------------------------------------------JobBoard----------------------------------------------------
- public saveJobBoard(singleFieldPojo: SaveJobPojoInterface): Observable<any> {
- singleFieldPojo.uid = this.uid;
- console.log("saveJobPojo: ", singleFieldPojo);
- let objectToSend = {
- singleFieldPojo: singleFieldPojo
- }
- console.log("saveJobBoard, objectToSend: ", objectToSend);
- return this.http.post(this.urlEnvironment.saveJobBoard(), singleFieldPojo, this.getHeaders());
- }
- public block(contractorUid: String): Observable<any> {
- let objectToSend = {
- contractorUid: contractorUid,
- consumerUid: this.uid
- }
- console.log("saveJobBoard, objectToSend: ", objectToSend);
- return this.http.post(this.urlEnvironment.block(), objectToSend, this.getHeaders());
- }
- public test(): Observable<any> {
- return this.http.post(this.urlEnvironment.test(), null, this.getHeaders());
- }
- public getPostedJobs(userProfile: UserProfileService): Observable<any> {
- // return this.http.post(this.urlEnvironment.getPostedJobs(), userProfile);
- return;
- }
- public checkJobStatus(): Observable<any> {
- return this.http.get(this.urlEnvironment.getJobStatus());
- }
- public updateJobStatus(jobBoardId: string, jobStatus: string, contractorUid: string): Observable<any> {
- let objectToSend = {
- jobBoardId: jobBoardId,
- jobStatus: jobStatus,
- contractorUid: contractorUid
- }
- console.log("objectToSend: ", objectToSend);
- return this.http.post(this.urlEnvironment.updateJobStatus(), objectToSend, this.getHeaders());
- }
- public getContractorJobs(): Observable<any> {
- // console.log("uid: ", this.uid);
- if (this.appContractor == this.getAppName()) {
- let objectToSend = {
- uid: this.uid
- }
- return this.http.post(this.urlEnvironment.getContractorJobs(), objectToSend, this.getHeaders());
- } else {
- return;
- }
- }
- private getHeaders(): any {
- // console.log("this.idToken: ", this.idToken);
- if (this.idToken != null) {
- const httpOptions = {
- headers: new HttpHeaders({
- 'Content-Type': 'application/json',
- 'Authorization': this.idToken
- })
- };
- return httpOptions;
- }
- }
- public getJobBoard(): Observable<any> {
- let objectToSend = {
- uid: this.uid,
- contractor: false
- }
- if (this.appName == this.appContractor) {
- objectToSend.contractor = true;
- }
- return this.http.post(this.urlEnvironment.getJobBoard(), objectToSend, this.getHeaders());
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //-----------------------------------------------------Contractor favorites -------------------------------------------------------------
- public addToFavorites(contractorUid: string): Observable<any> {
- let objectToSend = {
- consumerUid: this.uid,
- contractorUid: contractorUid,
- contractor: false
- }
- if (this.appName == this.appContractor) {
- objectToSend.contractor = true;
- }
- return this.http.post(this.urlEnvironment.addToFavorites(), objectToSend, this.getHeaders());
- }
- public getFavoriteContractors(): Observable<any> {
- let objectToSend = {
- consumerUid: this.uid
- }
- return this.http.post(this.urlEnvironment.addToFavorites(), objectToSend, this.getHeaders());
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //-----------------------------------------------------Send Notification ---------------------------------------------------------------
- public sendNotification(jobBoardId: string, browserIdToken: string, phoneIdToken: string): Observable<any> {
- console.log("id: ", jobBoardId);
- console.log("app: ", this.getAppName(), "appCont: ", this.appContractor);
- console.log("this.uid: ", this.uid);
- let objectToSend = {
- jobBoardId: jobBoardId,
- browserIdToken: browserIdToken,
- phoneIdToken: phoneIdToken,
- contractor: false,
- contractorUid: null,
- uid: null
- }
- if (this.getAppName() == this.appContractor) {
- objectToSend.contractor = true;
- objectToSend.contractorUid = this.uid;
- }
- console.log("objectToSend: ", objectToSend);
- return this.http.post(this.urlEnvironment.sendNotification(), objectToSend, this.getHeaders());
- }
- public getUserLocation(): Observable<any> {
- let objectToSend = {
- }
- return this.http.post(this.urlEnvironment.getUserLocation() + this.googleMapsApi, objectToSend, this.getHeaders());
- }
- public getUserAddress(lat: string, lng: string): Observable<any> {
- return this.http.get(this.urlEnvironment.getUserAddress() + lat + ',' + lng + '&key=' + this.googleMapsApi);
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // options = new RequestOptions({ headers: this.headers });
- public showLoading(): void {
- console.log("showLoading");
- this.loading = this.loadingCtrl.create({
- content: 'Please wait...'
- });
- this.loading.present();
- }
- public showOnDemandLoading(): void {
- this.loading = this.loadingCtrl.create({
- content: 'Please wait finding contractors...'
- });
- this.loading.present();
- }
- public hideLoading(): void {
- if (this.loading) {
- this.loading.dismiss();
- this.loading = null;
- }
- }
- public sendBrowserMessage(): void {
- // firebase.messaging().
- const messaging = firebase.messaging();
- messaging.requestPermission().then((data: any) => {
- console.log('Notification permission granted.');
- messaging.getToken().then((data: any) => {
- if (data) {
- console.log("data: ", data);
- // sendTokenToServer(currentToken);
- // updateUIForPushEnabled(currentToken);
- } else {
- // Show permission request.
- console.log('No Instance ID token available. Request permission to generate one.');
- }
- }).catch((err) => {
- console.log('An error occurred while retrieving token. ', err);
- });
- }).catch((err) => {
- console.log('Unable to get permission to notify.', err);
- });
- }
- public saveToken(phoneIdToken: string, browserIdToken: string): Observable<any> {
- var objectToSend = {
- consumerUid: null,
- contractorUid: null,
- idToken: this.idToken,
- phoneIdToken: phoneIdToken,
- browserIdToken: browserIdToken,
- contractor: false
- }
- if (this.appName == this.appContractor) {
- objectToSend.contractor = true;
- objectToSend.contractorUid = this.uid;
- } else {
- objectToSend.consumerUid = this.uid;
- }
- console.log("objectToSend: ", objectToSend);
- // console.log("this.idToken: ", this.idToken);
- return this.http.post(this.urlEnvironment.saveToken(), objectToSend, this.getHeaders());
- }
- public saveGeo(posX: number, posY: number): Observable<any> {
- let geoCoor = <CoordinatesXY>{};
- geoCoor.x = posX;
- geoCoor.y = posY;
- var objectToSend = {
- consumerUid: null,
- contractorUid: null,
- contractor: false,
- geo: geoCoor
- }
- if (this.appName == this.appContractor) {
- objectToSend.contractor = true;
- objectToSend.contractorUid = this.uid;
- } else {
- objectToSend.consumerUid = this.uid;
- }
- console.log("objectToSend: ", objectToSend);
- // console.log("this.idToken: ", this.idToken);
- return this.http.post(this.urlEnvironment.saveGeo(), objectToSend, this.getHeaders());
- }
- public getAppName(): string {
- return this.config.get("appName");
- }
- public saveCreditCard(token: string, firstName: string, lastName: string, cellphoneNumber: string): Observable<any> {
- console.log("save CC");
- var objectToSend = {
- uid: this.uid,
- token: token,
- email: this.email,
- firstName: firstName,
- lastName: lastName,
- cellphoneNumber: cellphoneNumber
- }
- return this.http.post(this.urlEnvironment.saveCreditCard(), objectToSend, this.getHeaders());
- }
- ///////////////////////////////////////--------BANK-------------/////////////////////////////////////////////////////////////////////
- public getStripeBankToken(accountNumber: string, routingNumber: string): Promise<any | Error> {
- let stripe = new Stripe(this.urlEnvironment.getPublishableKey());
- return stripe.createToken('bank_account', {
- country: 'US',
- currency: 'usd',
- routing_number: routingNumber,
- account_number: accountNumber,
- account_holder_name: name,
- account_holder_type: 'individual',
- })
- .then((result) => {
- console.log("result: ", result);
- if (result && result.error) {
- return;
- }
- if (result && result.token && result.token.id) {
- console.log("tokenId: ", result.token.id);
- return result.token.id;
- // return Observable.of(result.token.id);
- }
- })
- .catch((err) => {
- return err;
- });
- }
- public updateStripeBankAccount(stripeBankPojo: StripeBankPojo): Observable<any> {
- console.log("stripeBankPojo: ", stripeBankPojo);
- return this.http.post(this.urlEnvironment.updateStripeBankAccount(), stripeBankPojo, this.getHeaders());
- }
- public deleteBankAccount(last4: string): Observable<any> {
- var objectToSend = {
- uid: this.uid,
- last4: last4
- }
- return this.http.post(this.urlEnvironment.deleteBankAccount(), objectToSend, this.getHeaders());
- }
- public listBankAccounts(): Observable<any> {
- var objectToSend = {
- uid: this.uid
- }
- return this.http.post(this.urlEnvironment.listBankAccounts(), objectToSend, this.getHeaders());
- }
- //////////////////////////////////////////////----Credit Card//////////////////////////////////////////////////////////////////
- public listCreditCards(): Observable<any> {
- var objectToSend = {
- uid: this.uid
- }
- return this.http.post(this.urlEnvironment.listCreditCards(), objectToSend, this.getHeaders());
- }
- public updateCreditCard(creditCard: creditCardInterface, action: string): Observable<any> {
- var objectToSend = {
- uid: this.uid,
- action: action,
- creditCardId: creditCard.id
- }
- return this.http.post(this.urlEnvironment.updateCreditCard(), objectToSend, this.getHeaders());
- }
- public deleteCreditCard(creditCard: creditCardInterface): Observable<any> {
- var objectToSend = {
- uid: this.uid,
- creditCardId: creditCard.id
- }
- return this.http.post(this.urlEnvironment.deleteCreditCard(), objectToSend, this.getHeaders());
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public getConsumerRequests(): Observable<any> {
- var objectToSend = {
- uid: this.uid
- }
- return this.http.post(this.urlEnvironment.getConsumerRequests(), objectToSend, this.getHeaders());
- }
- public getContractorStripeAcct(): Observable<any> {
- var objectToSend = {
- uid: this.uid
- }
- return this.http.post(this.urlEnvironment.getContractorStripeAcct(), objectToSend, this.getHeaders());
- }
- //////////////////////////////////////////////----Document//////////////////////////////////////////////////////////////////
- public saveCertificate(certificatePojo: ContractorCertificates): Observable<any> {
- certificatePojo.uid = this.uid;
- console.log("certificatePojo: ", certificatePojo);
- return this.http.post(this.urlEnvironment.saveCertificate(), certificatePojo, this.getHeaders());
- }
- public saveLicense(imgSrcFront: string, imgSrcBack: string): Observable<any> {
- var objectToSend = {
- uid: this.uid,
- imgSrcFront: imgSrcFront,
- imgSrcBack: imgSrcBack
- }
- return this.http.post(this.urlEnvironment.saveLicense(), objectToSend, this.getHeaders());
- }
- public getLicense(): Observable<any> {
- var objectToSend = {
- uid: this.uid
- }
- return this.http.post(this.urlEnvironment.getLicense(), objectToSend, this.getHeaders());
- }
- // tested
- public getCertificate(categoryName: string) {
- let objectToSend = {
- uid: this.uid,
- categoryName: categoryName
- }
- console.log("objectToSend: ", objectToSend);
- return this.http.post(this.urlEnvironment.getContractorCertificate(), objectToSend, this.getHeaders());
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // tested
- public saveUserProfile(userProfile: UserProfileService): Observable<any> {
- return this.http.post(this.urlEnvironment.saveUserProfile(), userProfile, this.getHeaders());
- }
- public saveLoggedIn(loggedIn: boolean) {
- console.log("this.uid: ", this.uid);
- if (this.uid == null) {
- return;
- }
- let objectToSend = {
- uid: this.uid,
- loggedIn: loggedIn
- }
- console.log("objectToSend: ", objectToSend);
- return this.http.post(this.urlEnvironment.saveLoggedIn(), objectToSend, this.getHeaders());
- }
- public getUserProfile(userProfile: UserProfileService): Observable<any> {
- return this.http.post(this.urlEnvironment.getUserProfile(), userProfile, this.getHeaders())
- .map((data: any) => {
- console.log("data: ", data);
- if (data && data.uid) {
- this.userProfile.setUserUserProfile(data);
- return this.userProfile;
- } else {
- throw Observable.throw("returnning error");
- }
- })
- }
- public getContractors(uids: string[], categoryName: string, action: string): Observable<any> {
- let objectToSend = {
- uids: uids,
- categoryName: categoryName,
- consumerUid: this.uid,
- action: action
- }
- console.log("objectToSend: ", objectToSend);
- return this.http.post(this.urlEnvironment.getContractors(), objectToSend, this.getHeaders())
- }
- public saveContractorRating(jobBoardId: string): Observable<any> {
- let objectToSend = {
- jobBoardId: jobBoardId
- }
- console.log("objectToSend: ", objectToSend);
- return this.http.post(this.urlEnvironment.saveContractorRating(), objectToSend, this.getHeaders())
- }
- // tested
- public getCategories(): Observable<any> {
- return this.http.get(this.urlEnvironment.getCategories(), this.getHeaders());
- }
- public signUp(email: string, password: string): Promise<any> {
- return firebase.auth()
- .createUserWithEmailAndPassword(email, password)
- .then(() => {
- // .then((currUser: firebase.User) => {
- // let user = firebase.auth().currentUser;
- // console.log("user: ", user);
- // console.log("currUser: ", currUser);
- // return user.sendEmailVerification()
- // .then((currUser: firebase.User) => {
- // console.log("currUser: ", currUser);
- // // Email sent.
- // }).catch((error: any) => {
- // console.log("signUp catch error: ", error);
- // });
- })
- .then((user) => {
- return this.signOut();
- });
- }
- public signIn(email: string, password: string): Promise<any> {
- return firebase.auth().signInWithEmailAndPassword(email, password);
- }
- public showToast(message: string): Promise<any> {
- let toast = this.toastCtrl.create({
- message: message,
- duration: 3000,
- position: 'bottom'
- });
- return toast.present();
- }
- // ---------------------------------------SOCIAL LOGIN-------------------------------------------------------------------------------------
- private socialSignIn(provider): Promise<any> {
- if (this.platform.is('cordova')) {
- return firebase.auth().signInWithRedirect(provider)
- .then((data: any) => {
- console.log("data: ", data);
- return firebase.auth().getRedirectResult();
- });
- } else {
- return this.afAuth.auth.signInWithPopup(provider)
- .then((credential) => {
- return credential;
- });
- }
- }
- public googleLogin(): Promise<void> {
- return this.socialSignIn(new firebase.auth.GoogleAuthProvider)
- .then((credential: any) => {
- return credential;
- });
- }
- public facebookLogin(): Promise<void> {
- return this.socialSignIn(new firebase.auth.FacebookAuthProvider)
- .then((credential: any) => {
- return credential;
- });
- }
- public twitterLogin(): Promise<void> {
- return this.socialSignIn(new firebase.auth.TwitterAuthProvider)
- .then((credential: any) => {
- return credential;
- });
- }
- public updateDisplayName(displayName: string): void {
- firebase.auth().currentUser.updateProfile({
- displayName: displayName,
- photoURL: ""
- }).then((data: any) => {
- console.log("data: ", data);
- });
- }
- public signOut(): Promise<any> {
- return firebase.auth().signOut();
- }
- public initialiazeWebFCM(): firebase.messaging.Messaging {
- const messaging = firebase.messaging();
- messaging.usePublicVapidKey(this.vapidKey);
- return messaging;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement