static void Main(string[] args) { IAte automaticTelephoneExchange = new AutomaticTelephoneExchange(); IContract contract1 = new Contract(new Subscriber("Ivan", "Ivanov"), TariffType.Light); Thread.Sleep(1000); IContract contract2 = new Contract(new Subscriber("Petr", "Petrov"), TariffType.Mini); Thread.Sleep(1000); IContract contract3 = new Contract(new Subscriber("Mihail", "Mihailov"), TariffType.Ultra); var t1 = automaticTelephoneExchange.GeTerminal(contract1); var t2 = automaticTelephoneExchange.GeTerminal(contract2); var t3 = automaticTelephoneExchange.GeTerminal(contract3); t1.ConnectToPort(); t2.ConnectToPort(); t3.ConnectToPort(); //t2.DisconnectFromPort(); t1.Call(t2.Number); Thread.Sleep(5000); t1.EndCall(); t3.Call(t1.Number); Thread.Sleep(5000); t3.EndCall(); t2.Call(t1.Number); Thread.Sleep(5000); t2.EndCall(); ReportProvider reportProvider = new ReportProvider(); Billing billing = new Billing(automaticTelephoneExchange); foreach ( var item in reportProvider.SortCallsByType(billing.GetReport(t1.Number), TypeSortCalls.SortByCallType)) { Console.WriteLine( "Report for number: {5}" + Environment.NewLine + " Type: {0} |" + Environment.NewLine + " Date: {1} |" + Environment.NewLine + " Duration: {2} |" + Environment.NewLine + " Cost: {3} |" + Environment.NewLine + " Target Telephone number: {4}", item.CallType, item.Date, item.Time.ToString("mm:ss"), item.Cost, item.TargetNumber, item.Number); } Console.ReadLine(); }
static void Main(string[] args) { BillingSystem billingSystem = new BillingSystem(); using AutomaticTelephoneExchange ATE = new AutomaticTelephoneExchange(); SubscribeBillingToAte(ATE, billingSystem); List <Client> clients = new List <Client>() { new Client("Mike"), new Client("Mick"), new Client("Alex") }; List <Terminal> terminals = new List <Terminal>() { new Terminal("1111", "1"), new Terminal("2222", "2"), new Terminal("3333", "3") }; List <Contract> contracts = new List <Contract>(); for (int i = 0; i < 3; i++) { contracts.Add(ATE.AddContractWith(clients[i], terminals[i].PhoneNumber)); } billingSystem.Contracts = contracts; for (int i = 0; i < 3; i++) { clients[i].ConnectToPort(terminals[i], ATE.GetNotBindPort()); } clients[0].Call(terminals[0], "2222"); clients[2].Call(terminals[2], "2222"); Thread.Sleep(1000); clients[1].EndCall(terminals[1]); Thread.Sleep(1000); clients[0].Call(terminals[0], "3333"); Thread.Sleep(5000); clients[0].EndCall(terminals[0]); clients[0].Call(terminals[0], "2222"); Thread.Sleep(2500); clients[0].EndCall(terminals[0]); List <ExendetCallInfo> callInfos = billingSystem.GetCallInfoByDate("1111").ToList(); Console.WriteLine("\n\n\nСортировка по дате :"); foreach (var call in callInfos) { Console.WriteLine($"Длительность - {call.Duration.ToString()}\n Цена - {call.Cost}\n Номер абонента которому звонили - {call.OutPhoneNumber} "); } Console.WriteLine("\n\n\nСортировка по цене :"); List <ExendetCallInfo> callInfos2 = billingSystem.GetCallInfoByCost("1111").ToList(); foreach (var call in callInfos2) { Console.WriteLine($"Длительность - {call.Duration.ToString()}\n Цена - {call.Cost}\n Номер абонента которому звонили - {call.OutPhoneNumber} "); } Console.WriteLine("\n\n\nСортировка по номеру :"); List <ExendetCallInfo> callInfos3 = billingSystem.GetCallInfoByOutNumber("1111").ToList(); foreach (var call in callInfos3) { Console.WriteLine($"Длительность - {call.Duration.ToString()}\n Цена - {call.Cost}\n Номер абонента которому звонили - {call.OutPhoneNumber} "); } List <Port> ports = new List <Port>(ATE.GetPorts()); for (int i = 0; i < 3; i++) { clients[i].UnConnectToPort(terminals[i], ports[i]); } UnSubscribeBillingToAte(ATE, billingSystem); }
private static void UnSubscribeBillingToAte(AutomaticTelephoneExchange automaticTelephoneExchange, BillingSystem billingSystem) { automaticTelephoneExchange.BillTheCAllEventHandler -= billingSystem.BillTheCallEventHandler; }