public PortUnit AddPort(TerminalUnit terminal)
        {
            PortUnit creatingport = new PortUnit(terminal);

            ATS_Ports.Add(creatingport);
            return(creatingport);
        }
Beispiel #2
0
 private bool RegisterPortOnATS(out string result)
 {
     if (OnRegisterTerminal != null)
     {
         RegisterTermianlEventArgs eventargs = new RegisterTermianlEventArgs();
         OnRegisterTerminal(this, eventargs);
         if (eventargs.ResultPort != null)
         {
             LinkOnATSPort = eventargs.ResultPort;
             result        = eventargs.ResultOperationMessage;
             return(true);
         }
         else
         {
             LinkOnATSPort = null;
             result        = eventargs.ResultOperationMessage;
             return(false);
         }
     }
     else
     {
         LinkOnATSPort = null;
         result        = "Терминал не привязан к АТС!";
         return(false);
     }
 }
        public void SomeTerminalCall(object sender, CallTerminalEventArgs eventargs)
        {
            if (sender is TerminalUnit)
            {
                Console.WriteLine("Терминал с номером:{0} хочет позвонить по номеру:{1}", (sender as TerminalUnit).AbonentNumber, eventargs.CallNumber);
                eventargs.ResultOperationMessage = "Все нормально!";
                if (ATS_Ports.Count > 0)
                {
                    PortUnit searchport = ATS_Ports.Find(x => x.Terminal.AbonentNumber == eventargs.CallNumber);
                    if (searchport != null)
                    {
                        switch (searchport.PortStatus)
                        {
                        case PortStatusEnum.ON:
                            (sender as TerminalUnit).LinkOnATSPort.PortStatus = PortStatusEnum.CALL;
                            searchport.PortStatus            = PortStatusEnum.WAIT_FOR_ANSWER;
                            searchport.whoCall               = (sender as TerminalUnit);
                            eventargs.ResultOperationMessage = "Абонент дозванивается!";
                            break;

                        case PortStatusEnum.OFF:
                            eventargs.ResultOperationMessage = "Абонент недоступен! Позвоните позже!";
                            break;

                        case PortStatusEnum.WAIT_FOR_ANSWER:
                        case PortStatusEnum.BUSY:
                            eventargs.ResultOperationMessage = "Абонент занят!";
                            break;

                        default:
                            break;
                        }
                    }
                    else
                    {
                        Console.WriteLine("Такого номера не существует!");
                    }
                }
                else
                {
                    eventargs.ResultOperationMessage = "Нету зарегистрированных терминалов на АТС!";
                }
            }
        }