import { Injectable } from '@angular/core';
import {
  ActivatedRouteSnapshot,
  CanActivate,
  RouterStateSnapshot,
  Router,
  UrlTree,
  ActivatedRoute,
} from '@angular/router';
import { USERInterface } from '../interfaces/user-interface';
import { ENCService } from '../services/enc/enc.service';

@Injectable({
  providedIn: 'root',
})
export class LoginGuard implements CanActivate {
  empresas_arr: EmpresaData[] = [];
  constructor(private router: Router, private _encService: ENCService,) {
    this.empresas_arr = [
      {
        RFC: 'TME700618RC7',
        EMPRESA: 'TIMKEN',
      },
    ];
  }

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    
    // Comprobar si existe RFC Empresa
    if (window.location.href.includes('?')) {
      let rfc = window.location.href.split('?')[1].toUpperCase();
      if(rfc.includes("/")){
        rfc = rfc.split('/')[0].toUpperCase();
      }      
      this.empresas_arr.map((element) => {
        if (element.EMPRESA === rfc) {
          localStorage.setItem('RFCEMPRESA',element.RFC);
        }
      });
    }

    let rfc_empresa = localStorage.getItem('RFCEMPRESA')!;
    if (rfc_empresa == null) {
      localStorage.setItem('RFCEMPRESA', 'ITTEC');
    }

    /* let user = localStorage.getItem('TIMUSERENC');

    // Extraer la url
    let url = window.location.href;
    let exist_data_email = url.includes(';data=');
    
    // Si no existe un usuario guardado ir a login
    if (user === null || user === undefined || user === '') {
      localStorage.removeItem('TIMUSERENC');
      // Si existen datos en la url acerca del correo, ir a login con esa información
      if (exist_data_email) {    
        
        // Extraer los datos de la url
        let solicitud = url.split(';data=')[1];        
        return this.router.navigate(['/iam', { solicitud_datos: solicitud }]);
      }
    } */

    
    // Comprobar si hay una sesión
    let user_session = localStorage.getItem('TIMUSERENC');
    if (user_session === null || user_session === undefined || user_session === '') {
      localStorage.removeItem('TIMUSERENC');  
      return true;
    }else{
      return this.router.navigate(['/mesmpr']);
    }
  }
}

export interface EmpresaData {
  RFC: string;
  EMPRESA: string;
}
