import { Injectable, NgZone } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { environment } from 'src/environments/environment';
import { StorageService } from 'src/app/services/storage.service';
import { AuthConnstants } from 'src/app/config/auth-constants';
import { Tokenn } from '../models/token.model';
import { ModalController, AlertController, AnimationController, Platform } from '@ionic/angular';
import { NavigationExtras, Router } from '@angular/router';
import { ToastService } from './toast.service';

@Injectable({
  providedIn: 'root'
})
export class WebNotificationsService {

  adding: "intervenient" | "CC" = "intervenient";
  folderId: string;

  constructor(
    private http: HttpClient,
    private storageService: StorageService,
    private modalController: ModalController,
    public modalCtrl: AlertController,
    private animationController: AnimationController,
    private platform: Platform,
    private router: Router,
    private toastService: ToastService) { }


  webconnection() {

    var inicializeObj = {
      appId: "com.gpr.gabinetedigital",
      mfpContextRoot: "/mfp",
      /* serverUrl: "http://gpr-dev-10.gabinetedigital.local:9080",
      safariWebsitePushId: "http://gpr-dev-10.gabinetedigital.local:9080", */
    }



     /*  MFPPush.initialize({
        appId: "com.gpr.gabinetedigital",
        mfpContextRoot: "/mfp",
      }); */

     /*  MFPPush.registerDevice()
        .then((res) => {
          console.log("WEB Successfully Registered Device...");

          setTimeout(()=>{
            MFPPush.registerDevice()
            .then((res) => {
              console.log("WEB Successfully Registered Device...");
            })
            .catch((err) => {
              console.log("WEB Registration Failed" + err);
            });
          }, 1000)


        })
        .catch((err) => {
          console.log("WEB Registration Failed" + err);
        }); */
  }

  /* getTokenByUserIdAndId(user, userID) {
    const geturl = environment.apiURL + 'notifications/user/' + userID;

    return this.http.get<Token[]>(`${geturl}`);
  } */

  /* getAndpostToken(username) {
    if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
      console.log('Notifications not supported')
    } else {

      const geturl = environment.apiURL + 'notifications/token'; */
  /*
        window['WLAuthorizationManager'].obtainAccessToken("push.mobileclient").then(
          (token) => {
            console.log('Push Notification: Success ' + token);

            MFPPush.initialize(
              function (successResponse) {
                console.log("Push notification Successfully Service intialized: " + successResponse);
              },
              function (failureResponse) {
                console.log("Push notification failure Service intialized: " + failureResponse);
              }
            );

            MFPPush.registerDevice(null, (successResponse) => {
              console.log("Successfully registered: " + JSON.stringify(successResponse));
              console.log('token: ', successResponse.deviceId)
              this.storageService.store(username, successResponse.deviceId);
              this.storageService.get(username).then(value => {
                console.log('STORAGE TOKEN', value)
                this.storageService.get(AuthConnstants.USER).then(res => {
                  console.log('USERID', res);
                  const headers = { 'Authorization': 'Basic cGF1bG8ucGludG9AZ2FiaW5ldGVkaWdpdGFsLmxvY2FsOnRhYnRlc3RlQDAwNg==' };
                  const body = {
                    UserId: res.UserId,
                    TokenId: successResponse.deviceId,
                    Status: 1,
                    Service: 1
                  };
                  this.http.post<Token>(`${geturl}`, body, { headers }).subscribe(data => {
                    console.log('TOKEN USER MIDLE', data);
                  })
                });

              });
            },
              function (failureResponse) {
                console.log("Successfully failue: " + JSON.stringify(failureResponse));
              }
            );
          }, (error) => {
            console.log('Push notification recived: failure ' + error.responseText);
            console.log(JSON.stringify(error));
          }
        );
      }

    } */
  /*
    async onReceviNotification() {
      window['WLAuthorizationManager'].obtainAccessToken("push.mobileclient").then(
        (token) => {
          console.log('Push Notification: Success ' + token);

          MFPPush.initialize(
            function (successResponse) {
              console.log("Push notification Successfully intialized: " + successResponse);
              MFPPush.registerNotificationsCallback(notificationReceived);
            },
            function (failureResponse) {
              console.log("Push notification failure intialized: " + failureResponse);
            }
          );
          var notificationReceived = (message) => {
            console.log(message);
            var data = JSON.parse(message.payload);
            console.log(data.Service);
            console.log(data.IdObject);
            console.log(data.Object);

            if(message.actionName){
              this.notificatinsRoutes(data);
            } else {
              this.toastService.notificationMessage(message.alert,this.notificatinsRoutes, data);
            }

          }
        }, (error) => {
          console.log('Push notification recived: failure ' + error.responseText);
          console.log(JSON.stringify(error));
        }
      );
    } */

  /* notificatinsRoutes = (data) => {
    if (data.Service === "agenda") {
      this.zone.run(() => this.router.navigate(['/home/agenda', data.IdObject, 'agenda']));
    }
    else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
      this.zone.run(() => this.router.navigate(['/home/gabinete-digital/expediente',data.IdObject,'gabinete-digital']));
    }
    else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
      this.zone.run(() => this.router.navigate(['/home/gabinete-digital/event-list/approve-event',data.IdObject, 'gabinete-digital']));
    }else if (data.Service === "gabinete-digital" && data.Object === "despachos") {
      let navigationExtras: NavigationExtras = {
        queryParams: {
          "serialNumber": data.IdObject,
          }
        };
      this.zone.run(() => this.router.navigate(['/home/gabinete-digital/despachos/despacho'], navigationExtras));
    }
    else if (data.Service === "gabinete-digital" && data.Object === "parecer") {
      let navigationExtras: NavigationExtras = {
        queryParams: {
          enterAnimation: "",
          serialNumber: data.IdObject,
        }
      };
      this.zone.run(() => this.router.navigate(['/home/gabinete-digital/pedidos/pedido'], navigationExtras));
    }
    else if (data.Service === "gabinete-digital" && data.Object === "deferimento") {
      let navigationExtras: NavigationExtras = {
        queryParams: {
          enterAnimation: "",
          serialNumber: data.IdObject,
        }
      };
      this.zone.run(() => this.router.navigate(['/home/gabinete-digital/pedidos/pedido'], navigationExtras));
    }
    else if (data.Service === "accoes" && data.Object === "accao") {
      this.zone.run(() => this.router.navigate(['/home/publications',data.IdObject]));
    }
    else if (data.Service === "accoes" && data.Object === "publicacao") {
      this.zone.run(() => this.router.navigate(['/home/publications/view-publications',data.FolderId,data.IdObject]));
    }
  }

  platformVerify() {

    if (this.platform.is('cordova')) {
    } else {
    }
  } */

}
