예제 #1
0
파일: Program.cs 프로젝트: Dloz/Task3
        public static void Main(string[] args)
        {
            var billing = new BillingSystem.BillingSystem();
            var rand    = new Random();

            for (var i = 0; i < 100; i++)
            {
                var customer = new Customer();
                customer.SignContract(Ats);
            }
            //var customer1 = new Customer();
            //var customer2 = new Customer();
            //customer2.SignContract(ats);
            //customer1.SignContract(ats);

            //customer2.Call(customer1.Terminal.Number);

            var json = new DataContractJsonSerializer(typeof(AutomaticTelephoneStation));

            //using (var fstr = new FileStream("ATS.json", FileMode.OpenOrCreate)) {
            //    json.WriteObject(fstr, ats);
            //}

            using (var fstr = new FileStream("ATS.json", FileMode.OpenOrCreate)) {
                Ats = json.ReadObject(fstr) as AutomaticTelephoneStation;
                Ats?.SubscribeEvents();
            }

            CallGenerator.Generate(Ats);

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Menu());
        }
예제 #2
0
        public void SignContract(AutomaticTelephoneStation ats)
        {
            Terminal = ats.GiveTerminal(this, new Tariff());
            Contract = new Contract(Terminal.Number, new Tariff());
            Port     = Terminal.Port;

            ConnectEvent    += Port.Connect;
            DisconnectEvent += Port.Disconnect;
        }
예제 #3
0
파일: CallGenerator.cs 프로젝트: Dloz/Task3
        private static void GenerateCall(AutomaticTelephoneStation ats, ICustomer customer, int number)
        {
            var random = new Random();

            customer.Call(number); // Calling
            ats.UsersData.Values
            .FirstOrDefault(x => x.Terminal.Number == number)
            ?.Answer();        // Answering at Call
            Thread.Sleep(50);
            customer.Reject(); // Rejecting
        }
예제 #4
0
        private void Monitor_Load(object sender, EventArgs e)
        {
            var json = new DataContractJsonSerializer(typeof(AutomaticTelephoneStation));

            using (var fstr = new FileStream("ATS.json", FileMode.OpenOrCreate)) {
                ats = json.ReadObject(fstr) as AutomaticTelephoneStation;
            }
            ats = Program.Ats;
            listBox1.DataSource    = ats.UsersData.Values.ToList();
            listBox1.DisplayMember = "Name";

            foreach (var customer in ats.UsersData.Values)
            {
                var lvi = new ListViewItem {
                    Text = customer.Port.ToString()
                };
                switch (customer.Port.State)
                {
                case PortState.Connected:
                    lvi.BackColor = Color.Green;
                    lvi.Tag       = PortState.Connected;
                    break;

                case PortState.Disconnected:
                    lvi.BackColor = Color.Red;
                    lvi.Tag       = PortState.Disconnected;
                    break;

                case PortState.Busy:
                    lvi.BackColor = Color.Yellow;
                    lvi.Tag       = PortState.Busy;
                    break;

                default:
                    break;
                }
                listView1.Items.Add(lvi);
            }
            //listBox2.DataSource = ats.Connections;
            listBox2.DisplayMember = "Item1";
            //listBox3.DataSource = ats.CallHistory;
            listBox3.DisplayMember = "Info";
            var timer = new System.Windows.Forms.Timer();

            timer1.Interval = 5;
            timer1.Start();
            Application.DoEvents();
        }