public void Previous(ICalculatorComponent calculator) { Index += PreviousI; bool end = EndOfCollection(); int temp = Index; while (temp >= 0) { while (!end) { ShowSingle(Index, calculator); end = true; } temp = -1; } temp = Index; while (temp < 0) { Index = 0; temp = Index; WriteToConsole.Write("\nYou are at the beginning of the calculation history."); First(calculator); } }
public override void ExecuteConsole(Invoker command, ICalculatorComponent calculator, ILogger <CalculatorManager> logger) { bool check = UserChoiceCheck(command); while (check) { Prompts.Addition(); double a, b; double result; Prompts.FirstNumber(); a = Convert.ToDouble(Console.ReadLine()); Prompts.SecondNumber(); b = Convert.ToDouble(Console.ReadLine()); calculator.Operations["addition"].CreateCalculation(calculator, a, b); result = calculator.Operations["addition"].GetResult(calculator); Prompts.Result(result); calculator.UserOperations.Add("+"); calculator.CalculatorState.Add(new Context(new Unmodified())); check = false; } }
// Event Handler public static ICalculatorComponent Handler(ICalculatorComponent calculator) { ICalculatorComponent squareroot = new SquareRootDecorator(calculator); calculator.Operations["square root"] = squareroot; return(calculator); }
// Event Handler public static ICalculatorComponent Handler(ICalculatorComponent calculator) { ICalculatorComponent multiplication = new MultiplicationDecorator(calculator); calculator.Operations["multiplication"] = multiplication; return(calculator); }
public KKMDecorator(ICalculatorComponent component, int kkmCount, int baseKkmCount, decimal price) : base(component) { mPrice = price; if (kkmCount > baseKkmCount) { mExtraKKMCount = kkmCount - baseKkmCount; } }
// Event Handler public static ICalculatorComponent Handler(ICalculatorComponent calculator) { ICalculatorComponent subtraction = new SubtractionDecorator(calculator); calculator.Operations["subtraction"] = subtraction; return(calculator); }
// Event Handler public static ICalculatorComponent Handler(ICalculatorComponent calculator) { ICalculatorComponent addition = new AdditionDecorator(calculator); calculator.Operations["addition"] = addition; return(calculator); }
// Event Handler public static ICalculatorComponent Handler(ICalculatorComponent calculator) { ICalculatorComponent division = new DivisionDecorator(calculator); calculator.Operations["division"] = division; return(calculator); }
public static void Activate(ICalculatorComponent calculator, Publisher publisher) { bool repeat = true; while (repeat) { Prompts.Functionality(); String Done = ""; string operationInput = Console.ReadLine(); while ((!operationInput.Equals("addition")) && (!operationInput.Equals("subtraction")) && (!operationInput.Equals("multiplication")) && (!operationInput.Equals("division") && (!operationInput.Equals("square root") && (!operationInput.Equals("square")) && (!operationInput.Equals("DONE"))))) { Prompts.NotAvailable(); operationInput = Console.ReadLine(); } while (!Done.Equals("DONE")) { Invoker command1 = new Invoker(operationInput); calculator.Commands.Add(command1); Prompts._Functionality(); operationInput = Console.ReadLine(); while ((!operationInput.Equals("addition")) && (!operationInput.Equals("subtraction")) && (!operationInput.Equals("multiplication")) && (!operationInput.Equals("division") && (!operationInput.Equals("square root") && (!operationInput.Equals("square")) && (!operationInput.Equals("DONE"))))) { Prompts.NotAvailable(); operationInput = Console.ReadLine(); } Done = operationInput; repeat = false; } Prompts.Divider(); } Invoker finalCommand = new Invoker("Final Command"); calculator.Commands.Add(finalCommand); // Handle User Input foreach (Invoker command in calculator.Commands) { string op = command.OperationString; while (op != "Final Command") { // Event calculator = publisher.AddFunctionality(command, calculator); op = "Final Command"; } } }
// The event adds functionality based on user input. public virtual ICalculatorComponent AddFunctionality(Invoker command, ICalculatorComponent calculator) { Operation = command.OperationString; command.Addition.Execute(command, calculator); command.Subtraction.Execute(command, calculator); command.Multiplication.Execute(command, calculator); command.Division.Execute(command, calculator); command.SquareRoot.Execute(command, calculator); command.Square.Execute(command, calculator); OnAddOperation(EventArgs.Empty); return(calculator); }
public override ICalculatorComponent Execute(Invoker command, ICalculatorComponent calculator) { bool check = UserInputCheck(command); while (check) { calculator.OnAdd_Addition(calculator); calculator.TempOperations.Add("Addition", new AdditionDecorator(calculator)); calculator = Events.Addition.Handler(calculator); check = false; } return(calculator); }
public override void ExecuteConsole(Invoker command, ICalculatorComponent calculator, ILogger <CalculatorManager> logger) { bool check = UserChoiceCheck(command); while (check) { Prompts.Division(); double a, b; int c, d; double result, test; bool skip = false; Prompts.FirstNumber(); a = Convert.ToDouble(Console.ReadLine()); c = (int)a; Prompts.SecondNumber(); b = Convert.ToDouble(Console.ReadLine()); d = (int)b; // Handles Divide By Zero Condition + Log Entry try { test = c / d; } catch (DivideByZeroException e) { skip = true; Prompts.Logger(); logger.LogInformation(e.Message); } while ((skip.Equals(false)) && (b != 0)) { calculator.Operations["division"].CreateCalculation(calculator, a, b); result = calculator.Operations["division"].GetResult(calculator); Prompts.Result(result); calculator.UserOperations.Add("/"); calculator.CalculatorState.Add(new Context(new Unmodified())); check = false; skip = true; } check = false; skip = false; } }
// Console Manager public static void Activate(ICalculatorComponent calculator, Publisher publisher, ILogger <CalculatorManager> logger) { Prompts.Intro(); // User adds functionality to calculator. Decorator.Activate(calculator, publisher); // User chooses the operation they want to calculate from the functionality they added to the calculator and performs calculations. Receiver.Activate(calculator, logger); // User is displayed options to view the calculation history if different formats, perform another calculation, or exit the program. Options.Activate(calculator, logger); Prompts.Outro(); }
public static void DisplayOperations(ICalculatorComponent calculator, String options) { foreach (Invoker command in calculator.Commands) { string op = command.OperationString; while (op != "Final Command") { options += command.OperationString; options += ","; op = "Final Command"; } } options = options.Replace(",", " | "); WriteToConsole.Write($"| {options}\n"); }
public void Next(ICalculatorComponent calculator) { Index += NextI; bool end = EndOfCollection(); while (!end) { ShowSingle(Index, calculator); end = true; } end = EndOfCollection(); while (end) { Index = CalculationHistory.Count - 1; WriteToConsole.Write("\nYou are at the end of the calculation history."); Last(calculator); end = false; } }
public static void Activate(ICalculatorComponent calculator, ILogger <CalculatorManager> logger) { string another = "YES"; while (!another.Equals("NO")) { Prompts.ChooseOperation(); string options = ""; DisplayOperations(calculator, options); string choice = Console.ReadLine(); Invoker command2 = new Invoker(choice + "_USER_CHOICE"); Invoker finalCalculation = new Invoker("Final Calculation"); calculator.Commands2.Add(command2); calculator.Commands2.Add(finalCalculation); // Handle User Input string last = ""; foreach (Invoker command in calculator.Commands2) { while (!last.Equals("Final Calculation")) { command.Addition.ExecuteConsole(command, calculator, logger); command.Subtraction.ExecuteConsole(command, calculator, logger); command.Multiplication.ExecuteConsole(command, calculator, logger); command.Division.ExecuteConsole(command, calculator, logger); command.SquareRoot.ExecuteConsole(command, calculator, logger); command.Square.ExecuteConsole(command, calculator, logger); last += "Final Calculation"; } } Prompts.Another(); another = Console.ReadLine(); calculator.Commands2.Clear(); options = ""; } }
public static void Activate(ICalculatorComponent calculator, ILogger <CalculatorManager> logger) { string choice = ""; while (!choice.Equals("6")) { Prompts.Options(); choice = Console.ReadLine(); CalculationHistory.Activate(calculator, choice); // | 3 | Create New Calculations while (choice.Equals("3")) { WriteToConsole.Write("\n"); Receiver.Activate(calculator, logger); choice = "pass"; } // | 4 | Display What The Calculator Is Capable Of Doing (In Its Current State) while (choice.Equals("4")) { Prompts.Capability(); Receiver.DisplayOperations(calculator, ""); Prompts.Back(); String enter = Console.ReadLine(); choice = "pass"; } while ((!choice.Equals("1")) && (!choice.Equals("2")) && (!choice.Equals("3")) && (!choice.Equals("4") && (!choice.Equals("5")) && (!choice.Equals("6")) && (!choice.Equals("pass")))) { Prompts.Unavailable(); String enter = Console.ReadLine(); choice = "pass"; } } }
public override void ExecuteConsole(Invoker command, ICalculatorComponent calculator, ILogger <CalculatorManager> logger) { bool check = UserChoiceCheck(command); while (check) { Prompts.SquareRoot(); double a; double result; Prompts.Number(); a = Convert.ToDouble(Console.ReadLine()); calculator.Operations["square root"].CreateCalculation(calculator, a); result = calculator.Operations["square root"].GetResult(calculator); Prompts.Result(result); calculator.UserOperations.Add("SQUARE ROOT OF"); calculator.CalculatorState.Add(new Context(new Unmodified())); check = false; } }
public abstract void ExecuteConsole(Invoker command, ICalculatorComponent calculator, ILogger <CalculatorManager> logger);
public abstract ICalculatorComponent Execute(Invoker command, ICalculatorComponent calculator);
private void Button_Click(object sender, RoutedEventArgs e) { //AbstractCalculatorDecorator currentDecorator; // Base BaseCalculatorComponent baseComponent = new BaseCalculatorComponent(cmb_taxRegime.SelectedValue.ToString(), cmb_operationCountRanges.SelectedValue.ToString(), new BasicPriceList()); ICalculatorComponent currentComponent = baseComponent; // Employees decorator EmployeesCalculatorDecorator employeeDecorator = new EmployeesCalculatorDecorator(currentComponent, BASE_EMPLOYEE_COUNT, EXTRA_EMPLOYEE_PRICE); employeeDecorator.EmployeeCount = nud_employees.Value.Value; currentComponent = employeeDecorator; // VED decorator if (chk_ved.IsChecked.Value) { VEDExportImportDecorator vedDecorator = new VEDExportImportDecorator(currentComponent, VED_PRICE); currentComponent = vedDecorator; } // Currency account decorator CurrencyAccountCountDecorator currencyDecorator = new CurrencyAccountCountDecorator(currentComponent, price: CURRENCY_ACCOUNT_PRICE, accountCount: nud_currencyAccounts.Value.Value); currentComponent = currencyDecorator; // KKM decorator KKMDecorator kkmDecorator = new KKMDecorator(currentComponent, nud_kkmCount.Value.Value, BASE_KKM_COUNT, EXTRA_KKM_PRICE); currentComponent = kkmDecorator; // Branches decorator if (chk_branches.IsChecked.Value) { BranchesDecorator branchesDecorator = new BranchesDecorator(currentComponent, EXTRA_BRANCH_PRICE); currentComponent = branchesDecorator; } // Leasing/Credit if (chk_leasingCredits.IsChecked.Value) { LeasingCreditDecorator leasingCreditDecorator = new LeasingCreditDecorator(currentComponent, LEASING_CREDIT_PRICE); currentComponent = leasingCreditDecorator; } // Expats decorator ExpatsDecorator expatsDecorator = new ExpatsDecorator(currentComponent, nud_expatCount.Value.Value, EXPAT_PRICE); currentComponent = expatsDecorator; // Client bank decorator if (chk_clientBank.IsChecked.Value) { ClientBankDecorator clientBankDecorator = new ClientBankDecorator(currentComponent, CLIENT_BANK_PRICE); currentComponent = clientBankDecorator; } // Primary documents decorator if (chk_primaryDocuments.IsChecked.Value) { PrimaryDocumentsDecorator primaryDocumentsDecorator = new PrimaryDocumentsDecorator(currentComponent, baseComponent, PRIMERY_DOCUMENTS_PERCENT); currentComponent = primaryDocumentsDecorator; } // Fixed assets decorator if (chk_fixedAssets.IsChecked.Value) { FixedAssetsDecorator fixedAssetsDecorator = new FixedAssetsDecorator(currentComponent, FIXED_ASSETS_PRICE); currentComponent = fixedAssetsDecorator; } // Manufacture decorator if (chk_manufacture.IsChecked.Value) { ManufactureDecorator manufactureDecorator = new ManufactureDecorator(currentComponent, baseComponent, MANUFACTURE_PERCENT); currentComponent = manufactureDecorator; } // RESULT lbl_result.Content = currentComponent.GetPrice() * HIDDEN_COEFFICIENT + " rub."; // // Additional services // DummyBaseComponent dummy = new DummyBaseComponent(); ICalculatorComponent addServCurrent = dummy; if (chk_keepingDocumentsOfPastYears.IsChecked.Value) { KeepingDocumentsOFPastYears keepingDecor = new KeepingDocumentsOFPastYears(addServCurrent, KEEPING_DOCUMENTS_OF_PAST_YEARS_PRICE); addServCurrent = keepingDecor; } if (chk_preparingDocumentsForTrading.IsChecked.Value) { PreparingDocumentsForBargainingDecorator preparingDocumentsDecor = new PreparingDocumentsForBargainingDecorator(addServCurrent, PREPARING_DOCUMENTS_FOR_BARGAINING_PRICE); addServCurrent = preparingDocumentsDecor; } if (chk_resubmissionOfDocuments.IsChecked.Value) { ResubmissionOfReport resubmissionDecor = new ResubmissionOfReport(addServCurrent, RESUBMISSION_OF_REPORT_PRICE); addServCurrent = resubmissionDecor; } // RESULT lbl_AdditionalServiceResult.Content = addServCurrent.GetPrice() + " rub."; }
public ClientBankDecorator(ICalculatorComponent component, decimal price) : base(component) { mPrice = price; }
public SquareDecorator(ICalculatorComponent calculator) : base(calculator) { }
public override double GetResult(ICalculatorComponent calculator) { return(calculator.CalculationHistory[^ 1].Operation(calculator.CalculationHistory[^ 1].A, 0));
public AdditionDecorator(ICalculatorComponent calculator) : base(calculator) { }
public CurrencyAccountCountDecorator(ICalculatorComponent component, decimal price, int accountCount) : base(component) { mAccountCount = accountCount; mPrice = price; }
public BranchesDecorator(ICalculatorComponent component, decimal price) : base(component) { mPrice = price; }
public ExpatsDecorator(ICalculatorComponent component, int expatCount, decimal price) : base(component) { mPrice = price; mExpatCount = expatCount; }
public PrimaryDocumentsDecorator(ICalculatorComponent component, ICalculatorComponent baseComponent, decimal percent) : base(component) { mPercent = percent; mBaseComponent = baseComponent; }
public override Calculation CreateCalculation(ICalculatorComponent calculator, double a) { var square = Calculation.Create(a, 0, Operations.Square, calculator); return(square); }