コード例 #1
0
        public bool IsCoefficientFormulaValidForFieldset(int fieldsetId, string formula)
        {
            var re = new Regex(@"suma\(i\d+\)");

            formula = formula.Replace(" ", "");
            var mc = re.Matches(formula);

            foreach (Match mt in mc)
            {
                formula = formula.Replace(mt.Value, mt.Value.Replace("suma(", "").Replace(")", ""));
            }

            var indicators = iRepo.GetWhere(new { fieldsetId });
            var calc       = new CalcContext <decimal>();

            foreach (var i in indicators)
            {
                calc.Constants.Add("i" + i.Id, 1);
            }

            try
            {
                calc.Validate(formula);
                return(true);
            }
            catch (SyntaxException)
            {
                return(false);
            }
        }
コード例 #2
0
        public bool IsCoefficientFormulaValidForFieldset(int fieldsetId, string formula)
        {
            var re = new Regex(@"suma\(i\d+\)");
            formula = formula.Replace(" ", "");
            var mc = re.Matches(formula);

            foreach (Match mt in mc)
            {
                formula = formula.Replace(mt.Value, mt.Value.Replace("suma(","").Replace(")",""));
            }

            var indicators = iRepo.GetWhere(new { fieldsetId });
            var calc = new CalcContext<decimal>();

            foreach (var i in indicators)
            {
                calc.Constants.Add("i" + i.Id, 1);
            }

            try
            {
                calc.Validate(formula);
                return true;
            }
            catch (SyntaxException)
            {
                return false;
            }
        }
コード例 #3
0
ファイル: EcoCalc.cs プロジェクト: rodrigogalhardo/asms-md
        public IEnumerable<CoefficientValue> CalculateCoefficientValues(IEnumerable<IndicatorValue> indicatorValues, IEnumerable<Dossier> dossiers, IEnumerable<Coefficient> coefficients)
        {
            var coefficientValues = new List<CoefficientValue>();

            if (dossiers.Select(o => o.FieldsetId).Distinct().Count() > 1)
                throw new AsmsEx("in luna respectiva sunt dosare inregistrate la diferite seturi de campuri");

            if (dossiers.Select(o => o.MeasuresetId).Distinct().Count() > 1)
                throw new AsmsEx("in luna respectiva sunt dosare inregistrate la diferite seturi de masuri");

            //calculate each coefficient for all dossiers
            foreach (var coefficient in coefficients)
            {
                EvalSums(coefficient, indicatorValues);

                var calc = new CalcContext<decimal>();
                foreach (var dossier in dossiers)
                {
                    calc.Constants.Clear();
                    foreach (var indicatorValue in indicatorValues.Where(o => o.DossierId == dossier.Id))
                    {
                        calc.Constants.Add("i" + indicatorValue.IndicatorId, indicatorValue.Value);
                    }

                    coefficientValues.Add(new CoefficientValue
                                {
                                    CoefficientId = coefficient.Id,
                                    DossierId = dossier.Id,
                                    Value = Zero(() => calc.Evaluate(coefficient.Formula)),
                                });
                }
            }

            return coefficientValues;
        }
コード例 #4
0
 public CalculatorTextBox()
 {
     _calculator = new CalcContext <decimal>()
     {
         Culture = CultureInfo.InvariantCulture,
     };
     _suppressEvent = false;
 }
コード例 #5
0
 public CalculatorTextBox()
 {
     _calculator = new CalcContext<decimal>()
     {
         Culture = CultureInfo.InvariantCulture,
     };
     _suppressEvent = false;
 }
コード例 #6
0
        public void CalcMethod()
        {
            var calc = new CalcContext <decimal>();

            calc.Constants.Add("i2", 23);
            calc.Functions.Add("sumai", o => o);
            calc.Culture = CultureInfo.InvariantCulture;

            Console.WriteLine(calc.Evaluate("sumai(i2)"));
        }
コード例 #7
0
ファイル: CalcController.cs プロジェクト: ukirill/sharpcalc
 public CalcController()
 {
     Calc = new Calc(@"C:\Projects\sharpcalc\WebCalc\bin");
     //OperationList = Calc.Operations.Select(o => new SelectListItem() { Text = $"{o.GetType().Name}.{o.Name}", Value = $"{o.GetType().Name}.{o.Name}" });
     Operations = Calc.Operations
                  .Where(o => o is IOperationArgs)
                  .ToDictionary(o => o.GetType().FullName,
                                o => $"{o.GetType().Name}.{o.Name}");
     db = new CalcContext();
     OperationResultRepository = new NHOperResultRepository();
     UserRepository            = new NHUserRepository();
 }
コード例 #8
0
        public Answer AddAndSaveToDatasebase(int x, int y)
        {
            var total  = this.Add(x, y);
            var answer = new Answer()
            {
                Result = total.ToString()
            };
            var db = new CalcContext();

            db.Answers.Add(answer);
            db.SaveChanges();
            return(answer);
        }
コード例 #9
0
        public void Calc()
        {
            var w = new Stopwatch();

            w.Start();
            var calc = new CalcContext <decimal>();

            calc.Constants.Add("j", 5);
            calc.Constants.Add("j12", 2);
            calc.Constants.Add("j1", 3);
            Console.WriteLine(calc.Evaluate("j"));
            Console.WriteLine(calc.Evaluate("j+j12"));
            Console.WriteLine(calc.Evaluate("j+j1/2+j"));
            w.Stop();
            Console.WriteLine(w.Elapsed);
        }
コード例 #10
0
        public void DoCalc()
        {
            var z = eMathTextBox.Text;

            z = z.Replace(",", ".");

            try
            {
                var calc = new CalcContext <double>();
                Value = calc.Evaluate(z);
            }
            catch
            {
                //error
            }

            Modificato = false;
        }
コード例 #11
0
        public void TestMethod1()
        {
            // Arrange
            var calc = new Calculator();
            // Act
            var total = calc.AddAndSaveToDatasebase(3, 5);
            // Assert
            var expectedTotal = "8";

            Assert.AreEqual(expectedTotal, total.Result);
            // this says taht is inserted the database
            Assert.AreNotEqual(0, total.Id);

            var db       = new CalcContext();
            var inserted = db.Answers.FirstOrDefault(f => f.Id == total.Id);

            Assert.IsNotNull(inserted);
        }
コード例 #12
0
 public void TestCalcContext()
 {
     using (CalcContext context = new CalcContext())
     {
         for (int i = 0; i < 100; i++)
         {
             Calculation c = new Calculation()
             {
                 X          = i,
                 Y          = i + 1,
                 Z          = 2 * i + 1,
                 Operation  = "plus",
                 CreateDate = DateTime.Now.AddDays(-i)
             };
             context.Calculations.Add(c);
             context.SaveChanges();
         }
     }
 }
コード例 #13
0
        public bool IsIndicatorFormulaValidForFieldset(int fieldsetId, string formula)
        {
            var fields = fieldRepo.GetAssigned(fieldsetId);
            var calc   = new CalcContext <decimal>();

            foreach (var field in fields)
            {
                calc.Constants.Add("c" + field.Id, 1);
            }

            try
            {
                calc.Validate(formula);
                return(true);
            }
            catch (SyntaxException)
            {
                return(false);
            }
        }
コード例 #14
0
        public bool IsIndicatorFormulaValidForFieldset(int fieldsetId, string formula)
        {
            var fields = fieldRepo.GetAssigned(fieldsetId);
            var calc = new CalcContext<decimal>();

            foreach (var field in fields)
            {
                calc.Constants.Add("c" + field.Id, 1);
            }

            try
            {
                calc.Validate(formula);
                return true;
            }
            catch (SyntaxException)
            {
                return false;
            }
        }
コード例 #15
0
        public void GetLogFilteredTest()
        {
            using (CalcContext context = new CalcContext())
            {
                Repository repo = new Repository();


                Calculation c = new Calculation()
                {
                    X         = 123,
                    Y         = 100,
                    Z         = 23,
                    Operation = "minus",
                };
                repo.Log(c);
                // c = repo.GetLogFiltered(op => op.Operation=="minus" && op.Z==23).Last();
                //Assert.AreEqual(23, c.Z);

                var c1 = repo.GetLogFiltered(op => op.CreateDate < DateTime.Now).ToList();
                Console.WriteLine(c1.Count());
            }
        }
コード例 #16
0
ファイル: EcoCalc.cs プロジェクト: ZakMed/asms-md
        public IEnumerable <CoefficientValue> CalculateCoefficientValues(IEnumerable <IndicatorValue> indicatorValues, IEnumerable <Dossier> dossiers, IEnumerable <Coefficient> coefficients)
        {
            var coefficientValues = new List <CoefficientValue>();

            if (dossiers.Select(o => o.FieldsetId).Distinct().Count() > 1)
            {
                throw new AsmsEx("in luna respectiva sunt dosare inregistrate la diferite seturi de campuri");
            }

            if (dossiers.Select(o => o.MeasuresetId).Distinct().Count() > 1)
            {
                throw new AsmsEx("in luna respectiva sunt dosare inregistrate la diferite seturi de masuri");
            }

            //calculate each coefficient for all dossiers
            foreach (var coefficient in coefficients)
            {
                EvalSums(coefficient, indicatorValues);

                var calc = new CalcContext <decimal>();
                foreach (var dossier in dossiers)
                {
                    calc.Constants.Clear();
                    foreach (var indicatorValue in indicatorValues.Where(o => o.DossierId == dossier.Id))
                    {
                        calc.Constants.Add("i" + indicatorValue.IndicatorId, indicatorValue.Value);
                    }

                    coefficientValues.Add(new CoefficientValue
                    {
                        CoefficientId = coefficient.Id,
                        DossierId     = dossier.Id,
                        Value         = Zero(() => calc.Evaluate(coefficient.Formula)),
                    });
                }
            }

            return(coefficientValues);
        }
コード例 #17
0
ファイル: EcoCalc.cs プロジェクト: ZakMed/asms-md
        public IEnumerable <IndicatorValue> CalculateIndicatorValues(Dossier dossier, IEnumerable <FieldValue> fieldValues, IEnumerable <Indicator> indicators)
        {
            var calc = new CalcContext <decimal>();

            foreach (var o in fieldValues)
            {
                calc.Constants.Add("c" + o.FieldId, o.Value);
            }

            var indicatorValues = indicators
                                  .Select(
                indicator =>
                new IndicatorValue
            {
                DossierId   = dossier.Id,
                IndicatorId = indicator.Id,
                Value       = Zero(() =>
                                   calc.Evaluate(
                                       indicators.Where(i => i.Id == indicator.Id).Single().Formula))
            }).ToList();

            return(indicatorValues);
        }
コード例 #18
0
ファイル: EcoCalc.cs プロジェクト: rodrigogalhardo/asms-md
        public IEnumerable<IndicatorValue> CalculateIndicatorValues(Dossier dossier, IEnumerable<FieldValue> fieldValues, IEnumerable<Indicator> indicators)
        {
            var calc = new CalcContext<decimal>();

            foreach (var o in fieldValues)
            {
                calc.Constants.Add("c" + o.FieldId, o.Value);
            }

            var indicatorValues = indicators
                .Select(
                indicator =>
                        new IndicatorValue
                            {
                                DossierId = dossier.Id,
                                IndicatorId = indicator.Id,
                                Value = Zero(() =>
                                    calc.Evaluate(
                                    indicators.Where(i => i.Id == indicator.Id).Single().Formula))
                            }).ToList();

            return indicatorValues;
        }
コード例 #19
0
 public CalculationRepo(CalcContext calcContext)
 {
     CalcContext = calcContext;
 }
コード例 #20
0
 public CalculatorController(CalcContext context, ICalculator calculator)
 {
     _context    = context;
     _calculator = calculator;
 }
コード例 #21
0
 public BudgetCalculatorEvaluator(ICachedService cashedService)
 {
     CachedService = cashedService;
     _calculator   = new CalcContext <decimal>();
 }
コード例 #22
0
        public AccountController()
        {
            var calcContext = new CalcContext();

            UserRepository = new NHUserRepository();
        }
コード例 #23
0
 public BudgetCalculatorEvaluator(ICachedService cashedService)
 {
     CachedService = cashedService;
     _calculator = new CalcContext<decimal>();
 }
コード例 #24
0
 public LogRepository(CalcContext db)
 {
     _db = db;
 }