import { Component } from '@angular/core';
import { Router, RouterModule } from '@angular/router';
import { AuthService } from '../../cores/services/auth.service';
import { StorageService } from '../../cores/services/storage.service';
import { FormsModule } from '@angular/forms';
import { LoginData } from '../../cores/interface/auth';
import { ToastrService } from 'ngx-toastr'; 
import { CommonModule } from '@angular/common';
import { catchError } from 'rxjs';

@Component({
  selector: 'app-auth',
  standalone: true,
  imports: [FormsModule, RouterModule, CommonModule], 
  templateUrl: './auth.component.html',
  styleUrls: ['./auth.component.scss']
})
export class AuthComponent {
  email: string = '';
  password: string = '';
  rememberMe: boolean = false;
  loading: boolean = false;
  passwordVisible: boolean = false; 

  constructor(private authService: AuthService, 
              private storageService: StorageService, 
              private router: Router, 
              private toast: ToastrService) {}

  ngOnInit(): void {
    if (this.storageService.getToken()) {
      this.router.navigate(['/dashboard']);
    }
  }

  onSubmit() {
    this.loading = true; 
    if (!this.email || !this.password) {
      this.loading = false;
      this.toast.error('Please fill in all fields.');
      return;
    }

    const loginData: LoginData = {
      email: this.email,
      password: this.password,
      rememberMe: this.rememberMe
    };

    this.authService.login(loginData).subscribe(
      (response) => {
        this.storageService.saveToken(response.data.token, this.rememberMe);
        this.router.navigate(['/dashboard']);
        this.toast.success('Login successful');
        this.loading = false; 
      },
      (error) => {
        this.loading = false;
        this.toast.error(error.error.message);
      }
    );
  }

  togglePasswordVisibility() {
    this.passwordVisible = !this.passwordVisible; 
  }
}
