示例#1
0
        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;
        }
示例#2
0
        /// <summary>
        /// create a new dossier, if it can be created
        /// </summary>
        /// <param name="o">the dossier to be created</param>
        /// <returns>the id of the new dossier</returns>
        public int Create(Dossier o)
        {
            var fs = fieldsetService.GetActive();
            var ms = measuresetService.GetActive();
            (fs == null).B("la moment nu exista nici un set de campuri activ");
            (ms == null).B("la moment nu exista nici un se de masuri activ");
            var measure = u.Get<Measure>(o.MeasureId);

            o.FieldsetId = fs.Id;
            o.MeasuresetId = ms.Id;
            o.AmountPayed = o.AmountRequested;
            o.StateId = measure.NoContest ? DossierStates.HasIndicators : DossierStates.Registered;
            o.CreatedDate = DateTime.Now;

            var fpis = fpiRepo.GetWhere(new { o.MeasureId, o.MeasuresetId, o.CreatedDate.Month });
               (fpis.Count() == 0).B("la moment in planul financiar pentru aceasta luna si masura nu a fost stabilita nici o suma");
            var fpi = fpis.Single();
            o.FpiId = fpi.Id;

            int id;
            using (var scope = new TransactionScope())
            {
                id = dossierRepo.Insert(o);
                var d = dossierRepo.Get(id);

                d.Code = d.CreatedDate.AddYears(-2000).Year + d.CreatedDate.Month.ToString("00") + u.Get<District>(d.DistrictId.Value).Code + d.Id;
                dossierRepo.UpdateWhatWhere(new { d.Code }, new { d.Id });
                scope.Complete();
            }
            return id;
        }