using System;
using Elfisa.Core;

namespace Elfisa.Avalonia.ViewModels;

/// <summary>Корневой VM: переключает экран входа и основной шелл.</summary>
public partial class RootViewModel : ViewModelBase
{
    private ViewModelBase _current = null!;
    public ViewModelBase Current
    {
        get => _current;
        private set => SetProperty(ref _current, value);
    }

    public RootViewModel()
    {
        Current = new LoginViewModel(OnLoggedIn);
        TryDevAutoLogin();
    }

    // Dev-режим: если заданы ELF_DEV_USER/ELF_DEV_PASS — входим автоматически.
    // Обычных пользователей не затрагивает (переменных нет).
    private async void TryDevAutoLogin()
    {
        var u = Environment.GetEnvironmentVariable("ELF_DEV_USER");
        var p = Environment.GetEnvironmentVariable("ELF_DEV_PASS");
        if (string.IsNullOrWhiteSpace(u) || string.IsNullOrWhiteSpace(p)) return;
        try
        {
            var api = new ApiClient();
            var resp = await api.LoginAsync(u, p);
            Session.Current.Token = resp.Token;
            Session.Current.Role = resp.Role;
            Session.Current.Username = u;
            OnLoggedIn();
        }
        catch { /* остаёмся на экране входа */ }
    }

    private void OnLoggedIn() => Current = new ShellViewModel(Logout);

    private void Logout()
    {
        Session.Current.Clear();
        Current = new LoginViewModel(OnLoggedIn);
    }
}
