using System;
using System.Linq;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Media.Imaging;
using dmeo040225.Models;
using dmeo040225.Services;

namespace dmeo040225;

public partial class SellerWindow : Window
{
    private readonly User _currentUser;

    public SellerWindow(User user)
    {
        InitializeComponent();
        _currentUser = user;

        using var context = new DatabaseContext();
        var role = context.Roles.FirstOrDefault(it => it.Id == user.RoleId).Name;

        Image.Source = new Bitmap(user.Photopath);
        FioName.Text = user.Fio;
        RoleName.Text = role;

        TimerService.Instance.TimeUpdated += UpdateTimerText;
        TimerService.Instance.TimerExpired += LogoutUser;

        if (_currentUser.RoleId == 2)
        {
            TimerService.Instance.Start(); // Начинаем отсчёт, если ещё не запущен
        }
    }

    private void UpdateTimerText(TimeSpan time)
    {
        TimerText.Text = $"Осталось: {time:mm\\:ss}";
    }

    private void LogoutUser()
    {
        Close();
        var mainWindow = new MainWindow();
        mainWindow.Show();
    }

    private void NewOrder_OnClick(object? sender, RoutedEventArgs e)
    {
        NewOrder newOrder = new NewOrder();
        newOrder.ShowDialog(this);
    }
    
    private void HistoryOrder_OnClick(object? sender, RoutedEventArgs e)
    {
        HistoryOrdersWindow historyOrdersWindow = new HistoryOrdersWindow();
        historyOrdersWindow.ShowDialog(this);
    }

    private void Back_OnClick(object? sender, RoutedEventArgs e)
    {
        TimerService.Instance.Reset();
        Close();
    }

    protected override void OnClosed(EventArgs e)
    {
        TimerService.Instance.TimeUpdated -= UpdateTimerText;
        TimerService.Instance.TimerExpired -= LogoutUser;
        base.OnClosed(e);
    }
}