using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using DemoService.Models;
using System.Collections.Generic;
using System.Linq;

namespace DemoService;

public partial class ServiceWindow : Window
{
    private readonly bool AdminMode;
    private List<Service> displayList = Utils.Context.Services;
    public ServiceWindow()
    {
        InitializeComponent();
        ServicesListBox.ItemsSource = displayList;
        SortComboBox.SelectedIndex = 0;
    }
    public ServiceWindow(bool admin)
    {
        InitializeComponent();
        AdminMode = admin;
        if (!admin)
        {
            AddButton.IsVisible = false;
        }
        ServicesListBox.ItemsSource = displayList;
        /*foreach (var service in ServicesListBox.ItemsSource)
        {

        }*/
        SortComboBox.SelectedIndex = 0;
    }
    public void AddButtonClick(object sender, RoutedEventArgs args)
    {
        AddEditWindow addEditWindow = new();
        addEditWindow.Show();
        Close();
    }
    /*private decimal? CostAfterDiscount(decimal previousCost, decimal? discount)
    {
        if (discount.HasValue || discount != 0)
        {
            decimal actualCost = previousCost - previousCost * discount.Value;
            return actualCost;
        }
        return null;
    }*/

    private void AddButton_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
    {
        AddEditWindow addEditWindow = new();
        addEditWindow.Show();
        Close();
    }

    private void SortComboBox_SelectionChanged(object? sender, Avalonia.Controls.SelectionChangedEventArgs e)
    {
        DisplayService();
    }

    private void DisplayService()
    {
        switch (SortComboBox.SelectedIndex)
        {
            case 0:
                displayList = Utils.Context.Services;
                break;
            case 1:
                displayList = displayList.OrderBy(service => service.Cost).ToList();
                break;
            case 2:
                displayList = displayList.OrderByDescending(service => service.Cost).ToList();
                break;
        }
        ServicesListBox.ItemsSource = displayList;
    }
}