using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Media.Imaging;
using Avalonia.Platform.Storage;
using Demo2703.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.IO;
using System.Linq;

namespace Demo2703;

public partial class AddEdit : Window
{
    int IndexId = -1; //нужно для проверки добавляется ли новый элемент (тогда -1), или редактируется (тогда он потом перезаписывается на актуальный айди)
    public AddEdit()
    {
        InitializeComponent();
        ManufackturerCombobox.ItemsSource = Helper.DBContext.Manufacturers.ToList();
    }

    public AddEdit( int Id)
    {
        InitializeComponent();
         //редактирование
        IndexId = Id;
        ManufackturerCombobox.ItemsSource = Helper.DBContext.Manufacturers.ToList();

        //передача в созданный экземпляр класса листа с продуктом посредством сравнения айди из базы с айди который передается в конструкторе
        Product OldProduct = Helper.DBContext.Products.Include(hermozhovyj => hermozhovyj.Manufacturer).ToList().FirstOrDefault(dryn => dryn.Id == Id);

        //IdProducta.Text = OldProduct.Id.ToString();
        NameProduct.Text = OldProduct.Title;
        CostProduct.Text = OldProduct.Cost.ToString();
        OpisanieProduct.Text = OldProduct.Description;
        ManufackturerCombobox.SelectedItem = OldProduct.Manufacturer;
        ImageName.Source = OldProduct.Image;


    }

    //добавление
    private void Button_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
    {
        if (IndexId == -1)
        {
            Product NewProduct = new Product();
            int a = Helper.DBContext.Products.Count();
            a++;
            NewProduct.Id = a;
            NewProduct.Title = NameProduct.Text;
            NewProduct.Cost = Decimal.Parse(CostProduct.Text);
            NewProduct.Description = OpisanieProduct.Text;
            NewProduct.Manufacturerid = (ManufackturerCombobox.SelectedItem as Manufacturer).Id;
            if (_imagePath != "")
            {
                NewProduct.Mainimagepath = _imageName;
                File.Copy(_imagePath, Environment.CurrentDirectory + "/" + _imageName);
            }
            Helper.DBContext.Products.Add(NewProduct);
            Helper.DBContext.SaveChanges();
        }
        //редактирование
        else
        {
            Product OldProduct = Helper.DBContext.Products.FirstOrDefault(w => w.Id == IndexId);
            OldProduct.Title = NameProduct.Text;
            OldProduct.Cost = Decimal.Parse(CostProduct.Text);
            OldProduct.Description = OpisanieProduct.Text;
            OldProduct.Manufacturerid = (ManufackturerCombobox.SelectedItem as Manufacturer).Id;
            if (_imagePath != "")
            {
                OldProduct.Mainimagepath = _imageName;
                File.Copy(_imagePath, Environment.CurrentDirectory + "/" + _imageName);
            }
            Helper.DBContext.Products.Update(OldProduct);
            Helper.DBContext.SaveChanges();
        }
        new MainWindow().Show();
        Close();
    }
    string _imageName = "";
    string _imagePath = "";
    private async void AddImage(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
    {
        var topLevel = TopLevel.GetTopLevel(this);
        var files = await topLevel.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions { Title = "Выберите картинку" });
        if (files.Count() != 0)
        {
            try
            {
                _imagePath = files[0].Path.LocalPath;
                ImageName.Source = new Bitmap(_imagePath);
                _imageName = $"Товары школы/{Guid.NewGuid()}{_imagePath.Substring(_imagePath.LastIndexOf('.'), _imagePath.Length - _imagePath.LastIndexOf('.'))}";
            }
            catch { }
        }
    }
}