/**
 * Lietotāja profila pārvaldības modulis
 * 
 * Apstrādā lietotāja profila informāciju un paroles pārvaldību.
 * Atļauj lietotājiem apskatīt un atjaunināt savu personīgo informāciju un mainīt paroli.
 * 
 * Funkcijas:
 * - Parādīt lietotāja profila informāciju (vārds, e-pasts, lauksaimniecība)
 * - Rediģēt personīgo informāciju (vārds, uzvārds, e-pasts)
 * - Mainīt paroli ar validāciju
 * - Parādīt lietotāja avatāru ar iniciāļiem
 * - Apstiprinājuma paziņojumi veiksmīgiem atjauninājumiem
 * 
 * Lietotāju lomas:
 * - Visi autentificēti lietotāji (Status 1, 2, 3) var piekļūt šai lapai
 */

/**
 * Pārbauda, vai lietotājs ir autentificēts
 * Ja lietotājs nav pieteicies, novirza uz index lapu
 */
function checkAuth() {
  const isLoggedIn = localStorage.getItem("isLoggedIn");
  const userData = localStorage.getItem("user");
  
  if (isLoggedIn !== "true" || !userData) {
    window.location.href = "index.html";
    return null;
  }
  
  return JSON.parse(userData);
}

/**
 * Ielādē un attēlo lietotāja profila datus
 * Aizpilda formas laukus ar pašreizējā lietotāja informāciju
 * Iegūst saimniecības nosaukumu no servera
 */
async function loadProfileData() {
  const user = checkAuth();
  if (!user) return;
  
  try {
    // Izveido avatara iniciāļus no lietotāja vārda
    const initials = (user.name.charAt(0) + user.fname.charAt(0)).toUpperCase();
    document.getElementById('avatarInitials').textContent = initials;
    
    // Attēlo lietotāja informāciju profila galvenē
    document.getElementById('profileName').textContent = `${user.name} ${user.fname}`;
    document.getElementById('profileEmail').textContent = user.email;
    
    // Aizpilda formas laukus ar pašreizējiem lietotāja datiem
    document.getElementById('firstName').value = user.name;
    document.getElementById('lastName').value = user.fname;
    document.getElementById('email').value = user.email;
    
    // Iegūst un attēlo saimniecības nosaukumu
    const farmResponse = await fetch(`http://localhost:3001/api/farms`);
    if (farmResponse.ok) {
      const farms = await farmResponse.json();
      const userFarm = farms.find(f => f.id === user.farm_id);
      if (userFarm) {
        document.getElementById('farmName').value = userFarm.name;
      }
    }
    
  } catch (error) {
    console.error('Error loading profile data:', error);
  }
}

/**
 * Apstrādā personas informācijas formas iesniegšanu
 * Atjaunina lietotāja vārdu, uzvārdu un e-pasta adresi
 */
document.getElementById('personalInfoForm')?.addEventListener('submit', async (e) => {
  e.preventDefault();
  
  const user = checkAuth();
  if (!user) return;
  
  const firstName = document.getElementById('firstName').value.trim();
  const lastName = document.getElementById('lastName').value.trim();
  const email = document.getElementById('email').value.trim();
  
  if (!firstName || !lastName || !email) {
    alert('Please fill in all fields');
    return;
  }
  
  try {
    // Nosūta PUT pieprasījumu lietotāja informācijas atjaunināšanai
    const response = await fetch(`http://localhost:3001/api/users/${user.id}`, {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        name: firstName,
        fname: lastName,
        email: email
      })
    });
    
    const result = await response.json();
    
    if (result.success) {
      // Atjaunina lietotāja objektu localStorage
      user.name = firstName;
      user.fname = lastName;
      user.email = email;
      localStorage.setItem('user', JSON.stringify(user));
      
      // Pārlādē profila attēlojumu
      await loadProfileData();
      
      alert('✅ Profile updated successfully!');
    } else {
      alert('❌ Failed to update profile: ' + (result.error || 'Unknown error'));
    }
    
  } catch (error) {
    console.error('Error updating profile:', error);
    alert('❌ Failed to update profile. Please try again.');
  }
});

/**
 * Apstrādā paroles maiņas formas iesniegšanu
 * Pārbauda jauno paroli un nosūta maiņas pieprasījumu serverim
 */
document.getElementById('changePasswordForm')?.addEventListener('submit', async (e) => {
  e.preventDefault();
  
  const user = checkAuth();
  if (!user) return;
  
  const currentPassword = document.getElementById('currentPassword').value;
  const newPassword = document.getElementById('newPassword').value;
  const confirmPassword = document.getElementById('confirmPassword').value;
  
  // Pārbauda, vai paroles sakrīt
  if (newPassword !== confirmPassword) {
    alert('❌ New passwords do not match!');
    return;
  }
  
  // Pārbauda paroles garumu
  if (newPassword.length < 3) {
    alert('❌ Password must be at least 3 characters long!');
    return;
  }
  
  try {
    // Nosūta PUT pieprasījumu paroles maiņai
    const response = await fetch(`http://localhost:3001/api/users/${user.id}/password`, {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        currentPassword: currentPassword,
        newPassword: newPassword
      })
    });
    
    const result = await response.json();
    
    if (result.success) {
      // Notīra formu veiksmīgas darbības gadījumā
      document.getElementById('changePasswordForm').reset();
      
      alert('✅ Password changed successfully!');
    } else {
      alert('❌ Failed to change password: ' + (result.error || 'Unknown error'));
    }
    
  } catch (error) {
    console.error('Error changing password:', error);
    alert('❌ Failed to change password. Please try again.');
  }
});

/**
 * Inicializē profila lapu, kad DOM ir gatavs
 * Ielādē lietotāja profila datus
 */
document.addEventListener('DOMContentLoaded', () => {
  loadProfileData();
});