using Oefening7_5.Controllers;
using Oefening7_5.Models;

namespace Oefening7_5.Views
{
    public partial class FrmAddEditDoctor : Form
    {
        Boolean isInEdit = false;
        public FrmAddEditDoctor()
        {
            InitializeComponent();
        }
        public FrmAddEditDoctor(DoctorModel doctor)
        {
            InitializeComponent();
            isInEdit = true;

            lblDoctorID.Text = doctor.DoctorID.ToString();
            nudNumber.Value = doctor.DoctorNumber;
            tbName.Text = doctor.DoctorName;
            dtpBirthDate.Value = doctor.BirthDate;
            dtpFirstEpisode.Value = doctor.FirstEpisodeDate;
            if (doctor.LastEpisodeDate != null)
            {
                dtpLastEpisode.Value = (DateTime)doctor.LastEpisodeDate;
            }
            
        }
        private void btnClose_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            //check values
            List<String> faults = [];
            if (dtpBirthDate.Value > dtpFirstEpisode.Value)
            {
                faults.Add("BirthDate");
            }
            if (dtpFirstEpisode.Value < dtpBirthDate.Value)
            {
                faults.Add("First Episode");
            }
            if (dtpLastEpisode.Value < dtpFirstEpisode.Value)
            {
                faults.Add("Last Episode");
            }
            if (faults.Count > 0)
            {
                String message = "There are problems with: " + String.Join(", ", faults) + "You also owe Luc a piece of cake.";
                
                MessageBox.Show(message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //create model
            DoctorModel doctor = new DoctorModel()
            {

                DoctorID = Int32.Parse(lblDoctorID.Text),
                DoctorNumber = (Int32)nudNumber.Value,
                DoctorName = tbName.Text,
                BirthDate = dtpBirthDate.Value,
                FirstEpisodeDate = dtpFirstEpisode.Value,
                LastEpisodeDate = dtpLastEpisode.Value
            };
            DoctorController controller = new DoctorController();
            Int32 result = 0;
            if (isInEdit)
            {
                result = controller.Update(doctor);
            }
            else
            {
               result = controller.Create(doctor);
            }

            if(result == 0)
            {
                MessageBox.Show("something wen't wrong\r\nbecauase no", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                String message = (isInEdit ? "saved " : "added ") + "doctor";
                MessageBox.Show(message, "notice", MessageBoxButtons.OK, MessageBoxIcon.Information);
                Close();
            }
        }
    }
}
