示例#1
0
        public static string ViewCallLogForTheRangeCost(ISubscriberNumber subscriberNumber, double fromCost, double toCost)
        {
            if (fromCost < MinCost)
            {
                throw new CallLogArgumentException(fromCost);
            }
            if (toCost < MinCost)
            {
                throw new CallLogArgumentException(toCost);
            }

            if (toCost < fromCost)
            {
                double temp = toCost;
                toCost   = fromCost;
                fromCost = temp;
            }

            StringBuilder tempBuilder = new StringBuilder();

            foreach (var log in subscriberNumber.CallLog.Where(log => log.Price > fromCost && log.Price < toCost))
            {
                tempBuilder.Append("Call to number ").Append(log.Called.Number).Append(", conversation duration ")
                .Append(log.Duration.Minutes).Append(":").Append(log.Duration.Seconds).Append(" minutes, cost - ")
                .Append(log.Price).Append(" rub.");
            }
            return(CheckCallLogForEmpty(tempBuilder.ToString()));
        }
示例#2
0
        public static string ViewCallLogBySubscriber(ISubscriberNumber subscriberNumber, int calledSubscriberNumber)
        {
            StringBuilder tempBuilder = new StringBuilder();

            foreach (var log in subscriberNumber.CallLog.Where(log => log.Called.Number == calledSubscriberNumber))
            {
                tempBuilder.Append("Call to number ").Append(log.Called.Number).Append(", conversation duration ")
                .Append(log.Duration.Minutes).Append(":").Append(log.Duration.Seconds).Append(" minutes, cost - ")
                .Append(log.Price).Append(" rub.");
            }
            return(CheckCallLogForEmpty(tempBuilder.ToString()));
        }
示例#3
0
        public static string ViewCallLogForTheCost(ISubscriberNumber subscriberNumber, double cost)
        {
            if (cost < MinCost)
            {
                throw new CallLogArgumentException(cost);
            }

            StringBuilder tempBuilder = new StringBuilder();

            foreach (var log in subscriberNumber.CallLog.Where(log => Math.Abs(log.Price - cost) < 1e-10))
            {
                tempBuilder.Append("Call to number ").Append(log.Called.Number).Append(", conversation duration ")
                .Append(log.Duration.Minutes).Append(":").Append(log.Duration.Seconds).Append(" minutes, cost - ")
                .Append(log.Price).Append(" rub.");
            }
            return(CheckCallLogForEmpty(tempBuilder.ToString()));
        }
示例#4
0
        public static string ViewCallLog(ISubscriberNumber subscriberNumber, int numberOfDays)
        {
            if (numberOfDays > MaxDay)
            {
                throw new CallLogArgumentException(numberOfDays);
            }

            StringBuilder tempBuilder = new StringBuilder();

            foreach (var log in subscriberNumber.CallLog.Where(log =>
                                                               log.StartedAt > DateTime.Now - TimeSpan.FromDays(numberOfDays)))
            {
                tempBuilder.Append("Call to number ").Append(log.Called.Number).Append(", conversation duration ")
                .Append(log.Duration.Minutes).Append(":").Append(log.Duration.Seconds).Append(" minutes, cost - ")
                .Append(log.Price).Append(" rub.");
            }
            return(CheckCallLogForEmpty(tempBuilder.ToString()));
        }
示例#5
0
 public Terminal(ITerminalModel model, ISubscriberNumber subscriberNumber)
 {
     Model            = model;
     SubscriberNumber = subscriberNumber;
     Port?PortUsed = null;
 }
示例#6
0
        static void Main(string[] args)
        {
            try
            {
                var fileLog = ConfigurationManager.AppSettings["FileLog"];
                var log     = new ProgramLog(fileLog);
            }
            catch (DirectoryNotFoundException)
            {
                var exception =
                    new ConfigurationDirectoryNotFoundException(ConfigurationManager.AppSettings["FileLog"]);
                Console.WriteLine(exception.Message);
                throw exception;
            }

            IAdress vasinAdress = ContactAddressInformation.CreateNewAdress("Belarus", "Grodno", "Kleckova",
                                                                            new Tuple <int, char, char>(12, '/', 'A'), 3);

            IList <int> vasinListNumbers = new List <int>();

            vasinListNumbers.Add(654321);
            vasinListNumbers.Add(543210);

            IList <string> vasinListEmails = new List <string>();

            vasinListEmails.Add("*****@*****.**");
            vasinListEmails.Add("*****@*****.**");

            IContactInforamtion vasinaContactInforamtion =
                ContactAddressInformation.CreateNewContacts(vasinListNumbers, vasinListEmails);

            IFullName vasyasFullName = PersonalIdentification.CreateNewFullName("Vasya", "Pupkin", "Ivanavich");

            IPassportIdentification passportIdentification = PersonalIdentification.CreateNewPassportIdentification(
                vasyasFullName,
                "REPUBLIC OF BELARUS", new DateTime(1997, 10, 28), true, "3456797K000PB9", "REPUBLIC OF BELARUS");
            IPassportData passportData = PersonalIdentification.CreateNewPassportData(passportIdentification,
                                                                                      "KH248248",
                                                                                      "MINISTRY OF INTERNAL AFFAIRS", new DateTime(2015, 10, 28), new DateTime(2025, 10, 28));

            IInformationOfAnIndividual informationOfVasya =
                InformationProvided.CreateNewInformationOfAnIndividual(vasinAdress, vasinaContactInforamtion,
                                                                       passportData);

            Console.WriteLine(informationOfVasya.ToString());

            //
            IBillingCompany billingCompany       = CompanyManagement.CreateNewCompany("Company");
            IAdress         billingCompanyAdress = ContactAddressInformation.CreateNewAdress("Belarus", "Grodno", "Kleckova",
                                                                                             new Tuple <int, char, char>(10, '/', '2'), 3);

            CompanyManagement.ChangeAdress(billingCompany, billingCompanyAdress);

            IList <int> companyListNumbers = new List <int>();

            vasinListNumbers.Add(123456);
            vasinListNumbers.Add(234567);

            IList <string> companyListEmails = new List <string>();

            vasinListEmails.Add("*****@*****.**");
            vasinListEmails.Add("*****@*****.**");

            IContactInforamtion companyContactInforamtion =
                ContactAddressInformation.CreateNewContacts(companyListNumbers, companyListEmails);

            CompanyManagement.ChangeContactInforamtion(billingCompany, companyContactInforamtion);
            CompanyManagement.ChangeAboutLegalEntity(billingCompany, "Some company");
            StationManagment.CreateNewStation(billingCompany, CodecType.G711);

            try
            {
                StationManagment.AddPortRange(billingCompany.Stations[0], 2030, 2110);
            }
            catch (PortArgumentOutOfRangeException e)
            {
                Console.WriteLine(e.Message);
            }

            Console.WriteLine(StationManagment.OutputAllPorts(billingCompany.Stations[0]));


            IClient client = ContractManagement.CreateNewClient(informationOfVasya);

            IRate rate = ContractManagement.CreateNewRate("Tarif", 0.5);

            ISubscriberNumber subscriberNumber1 = ContractManagement.CreateNewSubscriberNumber(rate, 505050);
            ISubscriberNumber subscriberNumber2 = ContractManagement.CreateNewSubscriberNumber(rate, 525252);

            ContractManagement.MakeNewTerminalContract(billingCompany, client, subscriberNumber1);
            ContractManagement.MakeNewTerminalContract(billingCompany, client, subscriberNumber2);

            TerminalManagement.ConnectTerminal(billingCompany.Stations[0], client.Contracts[0].Terminal, 2030);
            Thread.Sleep(200);
            TerminalManagement.ConnectTerminal(billingCompany.Stations[0], client.Contracts[1].Terminal, 2100);
            Thread.Sleep(200);

            TerminalManagement.CallToSubscriber(billingCompany.Stations[0], client.Contracts[0].Terminal,
                                                client.Contracts[1].Terminal);
            Thread.Sleep(200);
            TerminalManagement.AnswerTheCall(billingCompany.Stations[0], client.Contracts[0].Terminal,
                                             client.Contracts[1].Terminal);
            Thread.Sleep(1200);
            TerminalManagement.CompleteCall(billingCompany.Stations[0], client.Contracts[0].Terminal,
                                            client.Contracts[1].Terminal);
            Thread.Sleep(200);

            TerminalManagement.DisconnectTerminal(billingCompany.Stations[0], client.Contracts[0].Terminal);
            Thread.Sleep(200);
            TerminalManagement.DisconnectTerminal(billingCompany.Stations[0], client.Contracts[1].Terminal);


            try
            {
                Console.WriteLine(CallManagement.ViewCallLog(client.Contracts[0].Terminal.SubscriberNumber, 30));
            }
            catch (CallLogArgumentException e)
            {
                Console.WriteLine(e.Message);
            }
        }
示例#7
0
        public static ITerminalContract MakeNewTerminalContract(ITerminal terminal, IBillingCompany billingCompany, IClient client, ISubscriberNumber subscriberNumber)
        {
            var contract = new TerminalContract(terminal, new Tuple <IBillingCompany, IClient>(billingCompany, client));

            client.Contracts.Add(contract);
            billingCompany.Contracts.Add(contract);

            return(contract);
        }
示例#8
0
        public static ITerminalContract MakeNewTerminalContract(IBillingCompany billingCompany, IClient client, ISubscriberNumber subscriberNumber)
        {
            ITerminalModel model = new TerminalModel("ModelName", new[] { "ru", "eng" }, new Tuple <double, double>(3.14, 3.14), true);

            ITerminal terminal = new Terminal(model, subscriberNumber);

            var contract = new TerminalContract(terminal, new Tuple <IBillingCompany, IClient>(billingCompany, client));

            client.Contracts.Add(contract);
            billingCompany.Contracts.Add(contract);

            return(contract);
        }
示例#9
0
 public CallLog(ISubscriberNumber called)
 {
     Called    = called;
     StartedAt = DateTime.Now;
 }