using LDBproject.Entities;
using LDBproject.Repositories;

namespace LDBproject.AdditionalForms;

public partial class UpdateF : Form
{
    private readonly IUpdateRep _updRep;

    public UpdateF(IUpdateRep updRep, ILibrarianRep libRep, ICustomerCardsRep customersRep)
    {
        InitializeComponent();
        _updRep = updRep ?? throw new ArgumentNullException(nameof(updRep));

        LibrarianCBox.DataSource = libRep.GetCards();
        LibrarianCBox.DisplayMember = "FIO";
        LibrarianCBox.ValueMember = "CardID";
        CardCBox.DataSource = customersRep.GetCards();
        CardCBox.DisplayMember = "FullReaderInfo"; // FullReaderInfo \ ReaderName
        CardCBox.ValueMember = "CardID";
    }

    private void ConfirmBtn_Click(object sender, EventArgs e)
    {
        try
        {
            if (LibrarianCBox.SelectedIndex < 0 || CardCBox.SelectedIndex < 0)
            {
                throw new Exception("[ Blanck space left ]");
            }
            _updRep.AddUpdate(UpdateC.CustomerUpd(CardCBox.SelectedIndex, LibrarianCBox.SelectedIndex,
                UpdDTPicker.Value, NextUpdDTPicker.Value, NoteTb.Text));
            Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "[ Saving error ]", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

    private void CancelBtn_Click(object sender, EventArgs e) => Close();
}