Exemplo n.º 1
0
        public static FrequencyMetric RelatedValuesList(int ValueCount, DateTime BaseDate, DateTime FirstDate, Guid CalcMetricID, bool GroupByMetric, Guid? @ApproveUserId)
        {
            LinqMicajahDataContext dc = new LinqMicajahDataContext();

            var fm = (from f in dc.Frequency
                      join m in dc.Metric on f.FrequencyID equals m.FrequencyID
                      where m.MetricID == CalcMetricID
                      select new FrequencyMetric
            {
                FrequencyID = f.FrequencyID,
                Name = f.Name
            }).FirstOrNull();

            if (fm != null)
            {
                DateTime NormalizedDate = FirstDate;
                if (FirstDate == DateTime.MinValue)
                {
                    NormalizedDate = Frequency.GetNormalizedDate(fm.FrequencyID, BaseDate);
                }
                fm.Date    = GetDateHeader(fm.FrequencyID, NormalizedDate, ValueCount);
                fm.Metrics = RelatedValuesList(ValueCount, NormalizedDate, fm.FrequencyID, dc, fm.Date, CalcMetricID, GroupByMetric, @ApproveUserId);
            }
            return(fm);
        }
Exemplo n.º 2
0
        public void AddCompositeDailyValue(DateTime InputDate, decimal Value, int FrequencyID, DateTime date, int MetricFrequencyID)
        {
            try
            {
                if (DailyValues == null)
                {
                    DailyValues = new Dictionary <DateTime, CompositeInfo>();
                }

                DateTime BeginPeriod = Frequency.GetNormalizedDate(FrequencyID, date);
                DateTime EndPeripd   = Frequency.AddPeriod(BeginPeriod, FrequencyID, 1);
                decimal  v           = Value / (EndPeripd - BeginPeriod).Days;
                for (DateTime Date = BeginPeriod; Date < EndPeripd; Date = Date.AddDays(1))
                {
                    CompositeInfo ci;
                    if (FrequencyID == MetricFrequencyID || !DailyValues.Keys.Contains(Date))
                    {
                        ci = new CompositeInfo();
                        DailyValues[Date] = ci;
                    }
                    else
                    {
                        ci = DailyValues[Date];
                    }

                    ci.FrequencyID = FrequencyID;
                    ci.Value       = v;
                    ci.InputDate   = InputDate;
                }
            }
            catch { }
        }
Exemplo n.º 3
0
        public decimal?GetCompositeValue(int FrequencyID, DateTime date, bool InterpolateMissingDays)
        {
            DateTime BeginPeriod = Frequency.GetNormalizedDate(FrequencyID, date);
            DateTime EndPeripd   = Frequency.AddPeriod(BeginPeriod, FrequencyID, 1);

            return(GetCompositeValue(BeginPeriod, EndPeripd, InterpolateMissingDays));
        }
Exemplo n.º 4
0
        static PeriodDate GetPeriod(int FrequencyID, bool prev, DateTime DTNow)
        {
            PeriodDate ret = new PeriodDate();

            ret.Begin = Frequency.GetNormalizedDate(FrequencyID, DTNow);
            if (prev)
            {
                ret.Begin = Frequency.AddPeriod(ret.Begin, FrequencyID, -1);
            }
            ret.End = Frequency.AddPeriod(ret.Begin, FrequencyID, 1);
            return(ret);
        }
Exemplo n.º 5
0
        public static List <DistinctFrequencyMetric> AlertQueueList(DateTime BaseDate, Dictionary <FrequencyMetricOrgLocationID, DateTime> FrequencyFirstDate, Guid?SelUserId, Guid? @ApproverUserId, bool ViewMode, bool OrderByMetric)
        {
            LinqMicajahDataContext dc = new LinqMicajahDataContext();

            List <DistinctFrequencyMetric> fml = (from f in dc.Frequency
                                                  orderby f.FrequencyID
                                                  select new DistinctFrequencyMetric
            {
                FrequencyID = f.FrequencyID,
                Name = f.Name
            }).ToList();

            for (int i = 0; i < fml.Count(); i++)
            {
                DistinctFrequencyMetric fm = fml[i];
                DateTime FirstDate         = Frequency.GetNormalizedDate(fm.FrequencyID, BaseDate);
                fm.Metrics = AlertQueueList(dc, FirstDate, fm.FrequencyID, null, null, SelUserId, @ApproverUserId, ViewMode, OrderByMetric);

                if (fm.Metrics.Count < 1)
                {
                    fml.Remove(fm);
                    i--;
                }
                else
                {
                    foreach (FrequencyMetricOrgLocationID fmo in FrequencyFirstDate.Keys)
                    {
                        if (fmo.FrequencyID == fm.FrequencyID)
                        {
                            List <DistinctMetricOrgValue> r = AlertQueueList(dc, FrequencyFirstDate[fmo], fm.FrequencyID, fmo.MetricID, fmo.OrgLocationID, SelUserId, @ApproverUserId, ViewMode, OrderByMetric);
                            if (r != null)
                            {
                                foreach (DistinctMetricOrgValue dmo in r)
                                {
                                    int OldMetricOrgValueIndex = fm.Metrics.FindIndex(n => (n.FrequencyID == dmo.FrequencyID && n.MetricID == dmo.MetricID && n.OrgLocationID == dmo.OrgLocationID));
                                    if (OldMetricOrgValueIndex >= 0)
                                    {
                                        fm.Metrics[OldMetricOrgValueIndex] = dmo;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(fml);
        }
        public static MetricOrgValue List(int ValueCount, DateTime BaseDate, Guid ScoreCardMetricID, MetricTrac.Bll.ScoreCardMetric.CalcStringFormula Calculator)
        {
            LinqMicajahDataContext dc = new LinqMicajahDataContext();
            var r = from cm in dc.ScoreCardMetric
                    join _m in dc.Metric on new { LinqMicajahDataContext.InstanceId, cm.MetricID, Status = (bool?)true } equals new { _m.InstanceId, MetricID = (Guid?)_m.MetricID, _m.Status } into __m
            join o in dc.ViewnameOrgLocation on new { InstanceId = (Guid?)cm.InstanceId, cm.OrgLocationID } equals new { o.InstanceId, o.OrgLocationID }
            join _u in dc.MetricOrgLocationUoM on new { LinqMicajahDataContext.InstanceId, cm.MetricID, cm.OrgLocationID } equals new { _u.InstanceId, MetricID = (Guid?)_u.MetricID, OrgLocationID = (Guid?)_u.OrgLocationID } into __u
            join _pi in dc.PerformanceIndicator on new { LinqMicajahDataContext.InstanceId, cm.PerformanceIndicatorId, Status = (bool?)true } equals new { _pi.InstanceId, PerformanceIndicatorId = (Guid?)_pi.PerformanceIndicatorID, _pi.Status } into __pi

            from m in __m.DefaultIfEmpty()
            from u in __u.DefaultIfEmpty()
            from pi in __pi.DefaultIfEmpty()

            where cm.InstanceId == LinqMicajahDataContext.InstanceId && cm.ScoreCardMetricID == ScoreCardMetricID && cm.Status == true
                select new MetricOrgValue
            {
                Name = cm.MetricID == null ? pi.Name : m.Name,
                OrgLocationFullName    = o.FullName,
                MetricID               = cm.MetricID == null ? Guid.Empty : (Guid)cm.MetricID,
                OrgLocationID          = cm.OrgLocationID == null ? Guid.Empty : (Guid)cm.OrgLocationID,                     //o.EntityNodeId, !!!! TODO fix this
                FrequencyID            = m.MetricID == null ? 3 : m.FrequencyID,
                InputUnitOfMeasureID   = u.MetricOrgLocationUoMID == null ? m.InputUnitOfMeasureID : u.InputUnitOfMeasureID, //u.InputUnitOfMeasureID == null ? m.InputUnitOfMeasureID : u.InputUnitOfMeasureID,
                UnitOfMeasureID        = cm.MetricID == null ? pi.UnitOfMeasureID : m.UnitOfMeasureID,
                NODecPlaces            = m.NODecPlaces,
                PerformanceIndicatorID = cm.PerformanceIndicatorId == null || pi.PerformanceIndicatorID == Guid.Empty ? null : (Guid?)pi.PerformanceIndicatorID
            };
            var mo = r.FirstOrNull();

            if (mo == null)
            {
                return(null);
            }

            DateTime EndDate = Frequency.GetNormalizedDate(mo.FrequencyID, BaseDate);


            ScoreCardMetric.Extend e = new ScoreCardMetric.Extend()
            {
                InstanceId             = LinqMicajahDataContext.InstanceId,
                ScoreCardMetricID      = ScoreCardMetricID,
                MetricID               = mo.MetricID,
                OrgLocationID          = mo.OrgLocationID,
                ScoreCardPeriodID      = 1,
                MetricFrequencyID      = mo.FrequencyID,
                PerformanceIndicatorId = mo.PerformanceIndicatorID,
                UomID = mo.UnitOfMeasureID
            };

            mo.MetricValues = new List <Extend>();
            for (int i = ValueCount - 1; i >= 0; i--)
            {
                DateTime dtBegin = Frequency.AddPeriod(EndDate, mo.FrequencyID, -i);
                DateTime dtEnd   = Frequency.AddPeriod(dtBegin, mo.FrequencyID, 1);
                if (e.MetricID != null && e.MetricID != Guid.Empty)
                {
                    e.CurrentValue = ScoreCardMetric.CalculateTotalValue(dc, LinqMicajahDataContext.OrganizationId, LinqMicajahDataContext.InstanceId, (Guid)e.MetricID, e.OrgLocationID, e.UomID, dtBegin, dtEnd, true, ScoreCardMetric.enTotalValueType.Sum, false);
                }
                else if (e.PerformanceIndicatorId != null)
                {
                    var    f = PerformanceIndicator.GetFormulasWithRealValues(dc, dtBegin, dtEnd, (new Guid[] { e.OrgLocationID == null ? Guid.Empty : (Guid)e.OrgLocationID }).ToList(), (Guid)e.PerformanceIndicatorId, e.UomID == null?Guid.Empty:(Guid)e.UomID);
                    double v = Calculator(f);
                    if (v != 0)
                    {
                        e.CurrentValue = v;
                    }
                    //e.PerformanceIndicatorId;
                }

                Extend mv = new Extend()
                {
                    InstanceId           = mo.InstanceId,
                    MetricID             = mo.MetricID,
                    FrequencyID          = mo.FrequencyID,
                    Date                 = dtBegin,
                    UnitOfMeasureID      = e.UomID,
                    InputUnitOfMeasureID = e.UomID,
                    MetricDataTypeID     = 1,
                    DValue               = e.CurrentValue,
                    OrgLocationID        = mo.OrgLocationID,
                    Period               = Frequency.GetPeriodName(dtBegin, mo.FrequencyID, true)
                };

                mo.MetricValues.Add(mv);
                mo.UnitOfMeasureID = e.UomID;
            }
            return(mo);
        }