Пример #1
0
        public void ShouldCalculateIndicatorValues()
        {
            var ivs = c.CalculateIndicatorValues(
                new Dossier {
                Id = 3
            },
                new[]
            {
                new FieldValue {
                    FieldId = 1, Value = 10
                },
                new FieldValue {
                    FieldId = 2, Value = 5
                }
            },
                new[] {
                new Indicator {
                    Id = 4, Formula = "c1+c2"
                },
                new Indicator {
                    Id = 5, Formula = "c1*c2"
                }
            }
                );

            ivs.Count().ShouldEqual(2);
            ivs.Where(o => o.IndicatorId == 4).Single().Value.ShouldEqual(15);
            ivs.Where(o => o.IndicatorId == 5).Single().Value.ShouldEqual(50);
        }
Пример #2
0
        /// <summary>
        /// calculate indicator values
        /// save indicator values
        /// change the state
        /// </summary>
        private void SaveIndicators(int dossierId)
        {
            var dossier     = dossierRepo.Get(dossierId);
            var fieldValues = u.GetWhere <FieldValue>(new { dossierId }).ToList();

            using (var scope = new TransactionScope())
            {
                var indicators      = u.GetWhere <Indicator>(new { dossier.FieldsetId }).ToList();
                var indicatorValues = ecoCalc.CalculateIndicatorValues(dossier, fieldValues, indicators);

                if (!indicatorValues.All(o => u.InsertNoIdentity(o) == 1))
                {
                    throw new AsmsEx("nu pot salva valorile indicatorilor");
                }

                dossierRepo.ChangeState(dossierId, DossierStates.HasIndicators);
                scope.Complete();
            }
        }