using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace FCOMMON
{
    public partial class fSFI : fBase
    {
        public fSFI(string sfi_type, double time, double cnt, double shiftcount, int itemcnt)
        {
            InitializeComponent();
            if (sfi_type == "M")
            {
                radM.Checked = true;
                nudMsavetime.Value = (decimal)time;
            }
            else
            {
                radO.Checked = true;
                nudOsavetime.Value = (decimal)time;
            }
            nudMSaveCnt.Value = (decimal)cnt;
            nudShiftCnt.Value = (decimal)shiftcount;
            this.nudCnt.Value = (decimal)itemcnt;

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            panel1.Enabled = radO.Checked;
            panel2.Enabled = !panel1.Enabled;
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            //mfg 절감시간 업데이트
            var nud = sender as NumericUpDown;
            if (this.radO.Checked)
            {
                UpdateOffice();
            }
            else
            {
                updateMFG();
            }
        }
        private void numericUpDown6_ValueChanged(object sender, EventArgs e)
        {
            var nud = sender as NumericUpDown;
            //mfg의 총 절감 시간이 변경되었다
            var 총절감시간 = (double)nud.Value;
            var sfi = 총절감시간 / (float)numericUpDown5.Value;
            var csfi = sfi * (float)nudMultiMFG.Value;
            nudSFIMFG.Value = (Decimal)sfi;
            nudCSFIMFG.Value = (Decimal)csfi;
        }
        public double Value { get; set; } = 0;
        void updateMFG()
        {
            var 절감시간 = (double)nudMsavetime.Value;
            var SHIFT수 = (float)nudMSaveCnt.Value;
            var shift총수 = (double)(절감시간 * SHIFT수);

            if (numericUpDown9.Value != (decimal)shift총수)
                numericUpDown9.Value = (decimal)shift총수; //1쉬프트 개선절감횟수

            var 쉬프트수 = (int)nudShiftCnt.Value;
            var 장비수 = (int)nudCnt.Value;
            numericUpDown6.Value = (decimal)(shift총수 * 쉬프트수 * 장비수);
        }
        void UpdateOffice()
        {
            var savetime = (double)nudOsavetime.Value;
            var min = (int)numericUpDown2.Value;
            var cnt = (int)nudCnt.Value;
            var sfi = (savetime * cnt) / min;
            nudSFIOffice.Value = (decimal)(sfi);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Invalidate();
            if (radO.Checked)
                this.Value = (double)nudSFIOffice.Value;
            else
                this.Value = (double)nudCSFIMFG.Value;
            DialogResult = DialogResult.OK;

        }

        private void fSFI_Load(object sender, EventArgs e)
        {
            EnsureVisibleAndUsableSize();
            nudMSaveCnt.DecimalPlaces = 1;
        }
      
        private void nudSIFOffice_ValueChanged(object sender, EventArgs e)
        {
            //offcie update
            var sfi = (double)nudSFIOffice.Value;
            //numericUpDown3.Value = (decimal)(sfi * 1.25);
        }

        private void numericUpDown4_ValueChanged(object sender, EventArgs e)
        {
            //mfg update
            var sfi = (double)nudSFIMFG.Value;
            //numericUpDown1.Value = (decimal)(sfi * 1.25);
        }
    }
}
