/*public void SelectTheCard(Transform slot)
     * {
     *  Vector2 mousePoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
     *
     *  RaycastHit2D hit = Physics2D.Raycast(mousePoint, Vector2.zero, 0f);
     *  if (hit.collider == null)
     *  {
     *      return;
     *  }
     *
     *  if (hit.collider.transform.CompareTag("Card"))
     *  {
     *      int cardIdx = hit.collider.GetComponent<Card_Base>().IndexOnSlot;
     *      if(m_enrolledCardSlot.CheckAndChangeCard(hit.collider.transform))
     *          m_drawedCardSlot.FlipTheCard(cardIdx);
     *  }
     * }*/

    public void SelectTheCard(CardSlotInfo slot)
    {
        if (m_enrolledCardSlot.CheckAndChangeCard(m_drawedCardSlot.CardList[slot.SlotIdx].transform))
        {
            m_drawedCardSlot.FlipTheCard(slot.SlotIdx);
        }
    }
        private static List <CardSlotInfo> GetCardSlotInfo(TcpClientService tcp, DeviceOverview deviceView)
        {
            List <CardSlotInfo> cardSlotInfo = new List <CardSlotInfo>();
            var context = new GlsunViewEntities();

            foreach (var e in deviceView.Slots)
            {
                CardSlotInfo slotInfo = new CardSlotInfo
                {
                    Slot     = e.SlotNumber,
                    Status   = e.IsInsert ? "在位" : "N/A",
                    CardType = e.CardType
                };
                //其他信息
                switch (e.CardType)
                {
                case "EDFA":
                    EDFACommService srvEDFA  = new EDFACommService(tcp, e.SlotNumber);
                    EDFAInfo        edfaInfo = new EDFAInfo();
                    edfaInfo.RefreshData(srvEDFA);
                    switch (edfaInfo.Work_Mode)
                    {
                    case 0:
                        slotInfo.WorkMode = "其他";
                        break;

                    case 1:
                        slotInfo.WorkMode = "ACC模式";
                        break;

                    case 2:
                        slotInfo.WorkMode = "APC模式";
                        break;

                    case 3:
                        slotInfo.WorkMode = "AGC模式";
                        break;

                    default:
                        slotInfo.WorkMode = "";
                        break;
                    }
                    slotInfo.HardwareVersion = edfaInfo.Hardware_Version;
                    slotInfo.SoftwareVersion = edfaInfo.Software_Version;
                    var alarm = context.AlarmInformation
                                .Where(a => a.DAddress == deviceView.IP && a.AISlot == slotInfo.Slot)
                                .OrderByDescending(a => a.AITime).FirstOrDefault();
                    if (alarm != null)
                    {
                        slotInfo.CurrentAlarm = alarm.AIContent;
                    }
                    else
                    {
                        slotInfo.CurrentAlarm = "";
                    }
                    break;

                case "OEO":
                    OEOCommService srvOEO  = new OEOCommService(tcp, e.SlotNumber);
                    OEOInfo        oeoInfo = new OEOInfo();
                    oeoInfo.RefreshData(srvOEO);
                    slotInfo.HardwareVersion = oeoInfo.Hardware_Version;
                    slotInfo.SoftwareVersion = oeoInfo.Software_Version;

                    //SFP模块是否有转发
                    bool bTranspond = false;
                    //SFP模块是否有环回
                    bool bLoopback = false;
                    foreach (var spf in oeoInfo.SFPSet)
                    {
                        if (spf.Work_Mode == 1)
                        {
                            bTranspond = true;
                        }
                        if (spf.Work_Mode == 3)
                        {
                            bLoopback = true;
                        }
                    }
                    if (bTranspond && bLoopback)
                    {
                        slotInfo.WorkMode = "转发+环回";
                    }
                    else if (bTranspond)
                    {
                        slotInfo.WorkMode = "转发";
                    }
                    else if (bLoopback)
                    {
                        slotInfo.WorkMode = "环回";
                    }
                    else
                    {
                        slotInfo.WorkMode = "N/A";
                    }
                    var alarmOEO = context.AlarmInformation
                                   .Where(a => a.DAddress == deviceView.IP && a.AISlot == slotInfo.Slot)
                                   .OrderByDescending(a => a.AITime).FirstOrDefault();
                    if (alarmOEO != null)
                    {
                        slotInfo.CurrentAlarm = alarmOEO.AIContent;
                    }
                    else
                    {
                        slotInfo.CurrentAlarm = "";
                    }
                    break;

                case "OLP":
                    OLPCommService srvOLP  = new OLPCommService(tcp, e.SlotNumber);
                    OLPInfo        olpInfo = new OLPInfo();
                    olpInfo.RefreshData(srvOLP);
                    slotInfo.HardwareVersion = olpInfo.Hardware_Version;
                    slotInfo.SoftwareVersion = olpInfo.Software_Version;
                    switch (olpInfo.Work_Mode)
                    {
                    case 0:
                        slotInfo.WorkMode = "手动";
                        break;

                    case 1:
                        slotInfo.WorkMode = "自动";
                        break;

                    default:
                        break;
                    }
                    var alarmOLP = context.AlarmInformation
                                   .Where(a => a.DAddress == deviceView.IP && a.AISlot == slotInfo.Slot)
                                   .OrderByDescending(a => a.AITime).FirstOrDefault();
                    if (alarmOLP != null)
                    {
                        slotInfo.CurrentAlarm = alarmOLP.AIContent;
                    }
                    else
                    {
                        slotInfo.CurrentAlarm = "";
                    }
                    break;

                default:
                    slotInfo.CardType        = "N/A";
                    slotInfo.HardwareVersion = "N/A";
                    slotInfo.SoftwareVersion = "N/A";
                    slotInfo.WorkMode        = "N/A";
                    slotInfo.CurrentAlarm    = "N/A";
                    break;
                }
                cardSlotInfo.Add(slotInfo);
            }
            context.Dispose();
            return(cardSlotInfo);
        }