using System.Windows;
using System.Windows.Controls;
using Caliburn.Micro.Core;

namespace MECF.Framework.UI.Client.ClientBase
{
    public class WaferInfo : PropertyChangedBase
    {
        private int _waferStatus = 0;   // WaferStatus.Empty;
        public int WaferStatus
        {
            get => _waferStatus;
            set { _waferStatus = value; NotifyOfPropertyChange(); }
        }

        private int _waferTrayStatus = 0;
        public int TrayStatus
        {
            get => _waferTrayStatus;
            set { _waferTrayStatus = value; NotifyOfPropertyChange(); }
        }

        private int _trayProcessCount = 0;
        public int TrayProcessCount
        {
            get => _trayProcessCount;
            set { _trayProcessCount = value; NotifyOfPropertyChange(); }
        }

        private string _recipeName;
        public string RecipeName
        {
            get => _recipeName;
            set { _recipeName = value; NotifyOfPropertyChange(); }
        }

        private string _trayBelongTo;
        public string TrayBelongTo
        {
            get => _trayBelongTo;
            set { _trayBelongTo = value; NotifyOfPropertyChange(); }
        }

        private bool _isTrayExhausted;
        public bool IsTrayExhausted
        {
            get => _isTrayExhausted;
            set { _isTrayExhausted = value; NotifyOfPropertyChange(); }
        }

        /// <summary>
        /// SlotID start from 0
        /// </summary>
        private int _slotID;
        public int SlotID
        {
            get => _slotID;
            set { _slotID = value; NotifyOfPropertyChange(); }
        }

        /// <summary>
        /// SlotIndex start from 1
        /// </summary>
        private int _slotIndex;
        public int SlotIndex
        {
            get => _slotIndex;
            set { _slotIndex = value; NotifyOfPropertyChange(); }    
        }

        private string _moduleID;
        public string ModuleID
        {
            get => _moduleID;
            set { _moduleID = value; NotifyOfPropertyChange(); }
        }

        private string _waferId;
        public string WaferID
        {
            get => _waferId;
            set { _waferId = value; NotifyOfPropertyChange(); }
        }

        private string _sourceName;
        public string SourceName
        {
            get => _sourceName;
            set { _sourceName = value; NotifyOfPropertyChange(); }
        }

        private string _lotID;
        public string LotID
        {
            get => _lotID;
            set { _lotID = value; NotifyOfPropertyChange(); }
        }

        private string _sequenceName = string.Empty;
        public string SequenceName
        {
            get => _sequenceName;
            set { _sequenceName = value; NotifyOfPropertyChange(); }
        }

        private string _originName = string.Empty;
        public string OriginName
        {
            get => _originName;
            set { _originName = value; NotifyOfPropertyChange(); }
        }

        private ToolTip _toolTip;
        public ToolTip ToolTip
        {
            get => _toolTip;
            set { _toolTip = value; NotifyOfPropertyChange(); }
        }

        private bool _isChecked;
        public bool IsChecked
        {
            get => _isChecked;
            set
            {
                _isChecked = value;
                NotifyOfPropertyChange();
            }
        }

        public Visibility IsVisibility => _waferStatus > 0 ? Visibility.Visible : Visibility.Hidden;
    }
}
