using ProjectGSM.Entities;
using ProjectGSM.Entities.Enums;
using ProjectGSM.Repositories;

namespace ProjectGSM.Forms
{

    public partial class FormStatusHistory : Form
    {
        private readonly IStatusHistoryRepository _statusHistoryRepository;


        public FormStatusHistory(IStatusHistoryRepository statusHistoryRepository, ICaseRepository caseRepository)
        {
            InitializeComponent();
            _statusHistoryRepository = statusHistoryRepository ??
                throw new
                ArgumentNullException(nameof(statusHistoryRepository));

            try
            {
                caseBox.DataSource = caseRepository.ReadCases();
                caseBox.DisplayMember = "Description";
                caseBox.SelectedIndex = 0;
            }
            catch (Exception ex) { }

            statusBox.DataSource = Enum.GetValues(typeof(Status));
        }

        private void saveButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (caseBox.SelectedIndex < 0)
                {
                    throw new Exception("Имеются незаполненные поля");
                }
                _statusHistoryRepository.CreateStatusHistory(StatusHistory.CreateEntity((((Case)caseBox.SelectedItem!)!).Id, (Status)statusBox.SelectedIndex!, priceNumeric.Value, dateTimePicker1.Value));
                Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка при сохранении",
                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

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