Esempio n. 1
0
    private string SubContent(string content)
    {
        if (content == errorInfo)
        {
            return(content);
        }

        if (content.Length == 1)
        {
            bufferStr  = num_zero.ToString();
            bufferType = CalculatorData.GetKeyTypeByValue(num_zero);
            return(num_zero.ToString());
        }

        Stack <char> characters = new Stack <char>(content.ToCharArray());

        characters.Pop();

        char Pop_Char = characters.Peek();

        if (Pop_Char == num_zero)
        {
            Pop_Char = magic_value;
        }

        bufferStr  = Pop_Char.ToString();
        bufferType = CalculatorData.GetKeyTypeByValue(Pop_Char);

        var outCharacters = characters.ToArray();

        Array.Reverse(outCharacters);

        return(new string(outCharacters));
    }
Esempio n. 2
0
    private string AddContent(string content, KeyName name, KeyType type)
    {
        if (defaultNum == errorInfo)
        {
            return(content);
        }

        char s = CalculatorData.GetKeyValueByName(name);

        if (content == defaultNum)
        {
            if (AddOnDefalut(s, type))
            {
                content += s;
            }
            else
            {
                content = s.ToString();
            }
        }
        else
        {
            if (AddOnEquation(s, type))
            {
                content += s;
            }
        }
        return(content);
    }
Esempio n. 3
0
    public string UpdateContent(string content, KeyName name)
    {
        string resultContent = "";

        KeyType type = CalculatorData.GetKeyTypeByName(name);

        switch (type)
        {
        case KeyType.NumberKey:
        case KeyType.NumberPointKey:
        case KeyType.OperatorKey:
        case KeyType.BacketLeftKey:
        case KeyType.BacketRightKey:
            resultContent = AddContent(content, name, type);
            break;

        case KeyType.BackKey:
            resultContent = SubContent(content);
            break;

        case KeyType.ClearKey:
            resultContent = ClearContent();
            break;

        case KeyType.ResultKey:
            resultContent = GetResultContent(content);
            break;
        }

        return(resultContent);
    }
Esempio n. 4
0
    private bool AddOnEquation(char operation, KeyType type)
    {
        Debug.Log("AddOnEquation():" + " bufferStr = " + bufferStr + ", bufferType = " + bufferType.ToString());
        Debug.Log("AddOnEquation():" + " operation = " + operation + ", type = " + type.ToString());

        if (bufferType == KeyType.NumberKey && (type == KeyType.NumberKey || type == KeyType.NumberPointKey))
        {
            if (bufferStr == num_zero.ToString())
            {
                return(false);
            }
            else
            {
                char point = CalculatorData.GetKeyValueByName(KeyName.Number_point);
                if (bufferStr.Contains(point.ToString()) && type == KeyType.NumberPointKey)
                {
                    return(false);
                }

                bufferStr += operation;
                return(true);
            }
        }

        bufferStr  = operation.ToString();
        bufferType = type;
        return(true);
    }
Esempio n. 5
0
        /// <summary>
        /// Calculates prices of the given shipping option.
        /// </summary>
        /// <param name="shippingInfo">Shipping option info object (<see cref="ShippingOptionInfo"/>) for which the prices are calculated.</param>
        /// <param name="cart">Shopping cart (<see cref="ShoppingCart"/>) used to gather the price calculation information.</param>
        /// <returns><see cref="ShippingPrice"/> object containing the shipping's prices.</returns>
        public virtual ShippingPrice CalculateShippingOptionPrice(ShippingOptionInfo shippingInfo, ShoppingCart cart)
        {
            if (shippingInfo == null)
            {
                throw new ArgumentNullException(nameof(shippingInfo));
            }

            if (cart == null)
            {
                throw new ArgumentNullException(nameof(cart));
            }

            var originalCart = cart.OriginalCart;

            // Evaluate the cart to get total items price
            originalCart.Evaluate();

            var request = Service.Resolve <IShoppingCartAdapterService>().GetCalculationRequest(originalCart);

            request.ShippingOption = shippingInfo;
            var calculatorData = new CalculatorData(request, new CalculationResult());

            // Get shipping price
            var shippingPrice = Service.Resolve <IShippingPriceService>().GetShippingPrice(calculatorData, originalCart.TotalItemsPrice).Price;

            var roundingService = Service.Resolve <IRoundingServiceFactory>().GetRoundingService(originalCart.ShoppingCartSiteID);

            return(new ShippingPrice
            {
                Currency = cart.Currency,
                Price = roundingService.Round(shippingPrice, cart.Currency.OriginalCurrency),
                Tax = 0m
            });
        }
Esempio n. 6
0
 private void InputOperatorStack_BacketRightKey()
 {
     while (operatorsStack.Peek() != CalculatorData.GetKeyValueByName(KeyName.Bracket_Left))
     {
         Calculate();
     }
     operatorsStack.Pop();
 }
        public ActionResult Index(CalculatorData data)
        {
            ViewBag.Success = true;

            data.ConvertUnits();

            return(View(data));
        }
Esempio n. 8
0
        public void SetFork(Fork fork, int maxBett)
        {
            var coeff1 = Convert.ToDouble(fork.Cof1);
            var coeff2 = Convert.ToDouble(fork.Cof2);
            var bet    = maxBett;

            Data = Calculator.CalculatorBet(coeff1, coeff2, bet);
        }
Esempio n. 9
0
        /// <summary>
        /// Save the financial calculator to a stream.
        /// </summary>
        /// <param name="stream">Stream to save data to. Stream will not be closed by this method.</param>
        public void Save(Stream stream)
        {
            var data   = new CalculatorData(this);
            var text   = Native.Serializer.Serialize(data);
            var writer = new StreamWriter(stream);

            writer.Write(text);
            writer.Flush();
        }
Esempio n. 10
0
        public IActionResult Calculate([FromForm] CalculatorData myData)
        {
            var svc    = new CompoundCalculatorService();
            var result = svc.CalculateCompoundInterest(myData);

            if (result != -1)
            {
                myData.CalcResults = result;
            }
            return(View(myData));
        }
Esempio n. 11
0
        public void LandingReportRunwayTooShort()
        {
            var d = new CalculatorData()
            {
                Table      = LoaderTest.GetTable(),
                Parameters = GetParameters
            };

            d.Parameters.RwyLengthMeter = 100;
            Assert.Throws <RunwayTooShortException>(() => Calculator.LandingReport(d));
        }
Esempio n. 12
0
        public void NoCorrection()
        {
            var d = new CalculatorData()
            {
                Table      = LoaderTest.GetTable(),
                Parameters = GetParameters
            };

            var dis = Calculator.LandingDistanceMeter(d);

            Assert.AreEqual(2460 * Constants.FtMeterRatio, dis, 10);
        }
Esempio n. 13
0
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            int a = int.Parse(txta.Text);
            int b = int.Parse(txtb.Text);

            ChannelFactory <ICalculatorService> factory = new ChannelFactory <ICalculatorService>("SelfhostCalculator");
            ICalculatorService client = factory.CreateChannel();

            CalculatorData c = client.Add(a, b);

            lblResult.Text = c.Result.ToString();
        }
Esempio n. 14
0
        public void BothReversersCorrectionDry()
        {
            var d = new CalculatorData()
            {
                Table      = LoaderTest.GetTable(),
                Parameters = GetParameters
            };

            d.Parameters.Reverser = 1;
            var dis = Calculator.LandingDistanceMeter(d);

            Assert.AreEqual(2460 * Constants.FtMeterRatio * 0.97, dis, 10);
        }
Esempio n. 15
0
        public void TailwindCorrectionDry()
        {
            var d = new CalculatorData()
            {
                Table      = LoaderTest.GetTable(),
                Parameters = GetParameters
            };

            d.Parameters.HeadwindKts = -10;
            var dis = Calculator.LandingDistanceMeter(d);

            Assert.AreEqual(2460 * Constants.FtMeterRatio * 1.20, dis, 10);
        }
Esempio n. 16
0
        public void LandingReportTest()
        {
            var d = new CalculatorData()
            {
                Table      = LoaderTest.GetTable(),
                Parameters = GetParameters
            };

            var r = Calculator.LandingReport(d);

            Assert.IsTrue(r.AllBrakes.All(x => x.RemainingDistanceMeter >= 0));
            Assert.IsTrue(r.SelectedBrake.RemainingDistanceMeter >= 0);
        }
Esempio n. 17
0
        public void ElevationCorrectionDry()
        {
            var d = new CalculatorData()
            {
                Table      = LoaderTest.GetTable(),
                Parameters = GetParameters
            };

            d.Parameters.ElevationFT = 1000;
            var dis = Calculator.LandingDistanceMeter(d);

            Assert.AreEqual(2460 * Constants.FtMeterRatio * 1.03, dis, 10);
        }
Esempio n. 18
0
        public void SpeedCorrection()
        {
            var d = new CalculatorData()
            {
                Table      = LoaderTest.GetTable(),
                Parameters = GetParameters
            };

            d.Parameters.AppSpeedIncrease = 5;
            var dis = Calculator.LandingDistanceMeter(d);

            Assert.AreEqual(2460 * Constants.FtMeterRatio * 1.08, dis, 10);
        }
Esempio n. 19
0
        public void HeadwindCorrectionWet()
        {
            var d = new CalculatorData()
            {
                Table      = LoaderTest.GetTable(),
                Parameters = GetParameters
            };

            d.Parameters.HeadwindKts      = 10;
            d.Parameters.SurfaceCondition = 1;
            var dis = Calculator.LandingDistanceMeter(d);

            Assert.AreEqual(2952 * Constants.FtMeterRatio, dis, 10);
        }
Esempio n. 20
0
        public void ElevationCorrectionWet()
        {
            var d = new CalculatorData()
            {
                Table      = LoaderTest.GetTable(),
                Parameters = GetParameters
            };

            d.Parameters.SurfaceCondition = 1;
            d.Parameters.ElevationFT      = -1000;
            var dis = Calculator.LandingDistanceMeter(d);

            Assert.AreEqual(2952 * Constants.FtMeterRatio * 0.97, dis, 10);
        }
Esempio n. 21
0
        public Employee GetEmployeeWithCalculation(string empId)
        {
            var emp = DataContext.Employees.Single(p => p.Id == empId);

            var salaryList = new List <Employee>();
            var data       = new CalculatorData
            {
                CalculationDate = DateTime.Now,
                Employee        = emp,
                EmpSalaries     = salaryList
            };
            var calculator = CalculationHelper.FactoryCalculator(data);

            calculator.CalculateSalary();
            return(data.Employee);
        }
Esempio n. 22
0
    private double Execute()
    {
        operatorsStack = new Stack <char>();
        numbersStack   = new Stack <double>();

        var bufferNumString = "";

        var operations = equation.ToCharArray();

        foreach (var operation in operations)
        {
            var type = CalculatorData.GetKeyTypeByValue(operation);
            var name = CalculatorData.GetKeyNameByValue(operation);

            switch (type)
            {
            case KeyType.NumberKey:
            case KeyType.NumberPointKey:
                bufferNumString += operation;
                break;

            case KeyType.OperatorKey:
            case KeyType.BacketLeftKey:
            case KeyType.BacketRightKey:
                if (bufferNumString != "")
                {
                    InputNumberStack(bufferNumString);
                    bufferNumString = "";
                }
                InputOperatorStack(type, name);
                break;
            }
        }

        if (bufferNumString != "")
        {
            InputNumberStack(bufferNumString);
            bufferNumString = "";
        }

        var result = OutputResult();

        return(result);
    }
Esempio n. 23
0
        public static AbstractCalculator FactoryCalculator(CalculatorData calcData)
        {
            AbstractCalculator calc = null;

            switch (calcData.Employee.TypeId)
            {
            case (int)EmployeeType.EmployeeTypes.Employee:
                calc = new EmployeeCalculator(calcData);
                break;

            case (int)EmployeeType.EmployeeTypes.Manager:
                calc = new ManagerCalculator(calcData);
                break;

            case (int)EmployeeType.EmployeeTypes.Salesman:
                calc = new SalesmanCalculator(calcData);
                break;
            }
            return(calc);
        }
        public decimal CalculateCompoundInterest(CalculatorData myData)
        {
            if (myData == null)
            {
                return(-1);
            }
            decimal result = 0m;
            //Math.Pow(100.00, 3.00); // 100.00 ^ 3.00
            //Principal=5000;
            //InterestRate=0.05;
            //Number of times the interest is compounded: 12
            //Time=10 years

            // example: 1+ 0.05 /12
            var temp1 = Decimal.ToDouble(1 + (myData.InterestRate / 100) / myData.NoOfTimesInterestComp);
            var temp2 = (decimal)Math.Pow(temp1, myData.NoOfTimesInterestComp * myData.Time);

            result = myData.Principal * temp2;

            return(result);
        }
Esempio n. 25
0
        public override double CalculateSalary()
        {
            var check = CalculationHelper.HaveCircularDependency(CalcData.Employee.Id, CalcData.Employee.Dependants);

            if (check)
            {
                throw new HandledException("Circular dependency error.");
            }
            double dependantsSum    = 0;
            double dependantsSumRec = 0;

            if (CalcData.Employee.Dependants != null)
            {
                foreach (var emp in CalcData.Employee.Dependants)
                {
                    var item = CalcData.EmpSalaries.SingleOrDefault(p => p.Id == emp.Id);
                    if (item != null)
                    {
                        dependantsSum += item.Salary;
                        continue;
                    }
                    var data = new CalculatorData
                    {
                        CalculationDate = CalcData.CalculationDate,
                        Employee        = emp,
                        EmpSalaries     = CalcData.EmpSalaries,
                        Recursively     = CalcData.Recursively
                    };
                    var calculator = CalculationHelper.FactoryCalculator(data);
                    dependantsSumRec += calculator.CalculateSalary();
                    dependantsSum    += data.EmpSalaries.Single(p => p.Id == emp.Id).Salary;
                }
            }

            double salary = CalcData.Employee.BasicRate + CalcData.Employee.CalculateAllowance(CalcData.CalculationDate) + dependantsSum * CalcData.Employee.Type.DependantsAllowance / 100;

            CalcData.Employee.Salary = NotAvailableSalary() ? 0 : salary;
            CalcData.EmpSalaries.Add(CalcData.Employee);
            return(CalcData.Recursively ? salary + dependantsSumRec : salary);
        }
Esempio n. 26
0
        public IEnumerable <Employee> CalculateSalary(DateTime date)
        {
            var employees  = GetEmployees().Result.Where(p => p.BossId == null);
            var salaryList = new List <Employee>();

            foreach (var emp in employees)
            {
                var data = new CalculatorData
                {
                    CalculationDate = date,
                    Employee        = emp,
                    EmpSalaries     = salaryList
                };
                var calculator = CalculationHelper.FactoryCalculator(data);
                calculator.CalculateSalary();
            }
            if (salaryList.Count != DataContext.Employees.Count())
            {
                throw new HandledException("Circular dependency error.");
            }
            return(salaryList);
        }
Esempio n. 27
0
    private void InputOperatorStack_Operator(KeyName newName)
    {
        char newOperator = CalculatorData.GetKeyValueByName(newName);
        int  newLevel    = OperatorFactory.OperatorPriority(newOperator);

        while (operatorsStack.Count != 0 &&
               operatorsStack.Peek() != CalculatorData.GetKeyValueByName(KeyName.Bracket_Left))
        {
            var oldOperator = operatorsStack.Peek();
            var oldLevel    = OperatorFactory.OperatorPriority(oldOperator);

            if (newLevel <= oldLevel)
            {
                Calculate();
            }
            else
            {
                operatorsStack.Push(newOperator);
                return;
            }
        }
        operatorsStack.Push(newOperator);
    }
Esempio n. 28
0
        /// <summary>
        /// Load a financial calculator from a stream.
        /// </summary>
        /// <param name="stream">Stream to load data from. Stream will not be closed by this method.</param>
        public static FinancialCalculator Load(Stream stream)
        {
            var            reader = new StreamReader(stream);
            var            text   = reader.ReadToEnd();
            CalculatorData data   = null;

            try
            {
                data = DoLoadAsXml(text);
            }
            catch
            {
            }

            if (data == null)
            {
                data = DoLoadAsTxt(text);
            }

            var result = data.CreateCalculator();

            return(result);
        }
Esempio n. 29
0
 public SalesmanCalculator(CalculatorData calcData) : base(calcData)
 {
 }
Esempio n. 30
0
 public ManagerCalculator(CalculatorData calcData) : base(calcData)
 {
 }