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); }
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 { } }
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)); }
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); }
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); }