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())); }
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())); }
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())); }
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())); }
public Terminal(ITerminalModel model, ISubscriberNumber subscriberNumber) { Model = model; SubscriberNumber = subscriberNumber; Port?PortUsed = null; }
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); } }
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); }
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); }
public CallLog(ISubscriberNumber called) { Called = called; StartedAt = DateTime.Now; }