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 <MetricOrgValue> RelatedValuesList(int ValueCount, DateTime NormalizedDate, int FrequencyID, LinqMicajahDataContext dc, List <DateHeader> hl, Guid?CalcMetricID, bool OrderByMetric, Guid? @ApproverUserId) { DateTime EndDate = Frequency.AddPeriod(NormalizedDate, FrequencyID, 1); DateTime BeginDate = Frequency.AddPeriod(EndDate, FrequencyID, -ValueCount); ISingleResult <Sp_SelectMetricRelatedValuesResult> V = dc.Sp_SelectMetricRelatedValues(LinqMicajahDataContext.InstanceId, FrequencyID, CalcMetricID, BeginDate, EndDate, OrderByMetric, @ApproverUserId); List <MetricOrgValue> MetricMetricValues = new List <MetricOrgValue>(); MetricOrgValue LastMetricMetricValue = null; int GroupNumber = 0; int GroupCount = 0; List <Micajah.Common.Bll.MeasureUnit> OrgUoMs = Mc_UnitsOfMeasure.GetOrganizationUoMs(); foreach (var v in V) { if (LastMetricMetricValue == null || v.MetricID != LastMetricMetricValue.MetricID || v.OrgLocationID != LastMetricMetricValue.OrgLocationID) { if (LastMetricMetricValue == null || v.OrgLocationID == LastMetricMetricValue.OrgLocationID) { GroupNumber++; } else { SetOrgLocationNumber(GroupNumber, MetricMetricValues); GroupNumber = 1; GroupCount++; } PushMetricValue(LastMetricMetricValue, null, hl); LastMetricMetricValue = new MetricOrgValue(); LastMetricMetricValue.GroupCount = GroupCount; // Common fields LastMetricMetricValue.InstanceId = (Guid)v.InstanceId; LastMetricMetricValue.FrequencyID = FrequencyID; LastMetricMetricValue.FrequencyName = v.FrequencyName; //Metric fields LastMetricMetricValue.MetricID = (Guid)v.MetricID; LastMetricMetricValue.Name = v.MetricName; LastMetricMetricValue.MetricTypeID = (int)v.MetricTypeID; LastMetricMetricValue.MetricDataTypeID = 1; LastMetricMetricValue.NODecPlaces = v.NODecPlaces; LastMetricMetricValue.InputUnitOfMeasureID = v.MetricInputUnitOfMeasureID; LastMetricMetricValue.InputUnitOfMeasureName = GetMeasureUnitAbbvr(OrgUoMs, v.MetricInputUnitOfMeasureID); //MetricOrg fields LastMetricMetricValue.OrgLocationID = (Guid)v.OrgLocationID; LastMetricMetricValue.OrgLocationFullName = v.OrgLocationID == Guid.Empty ? LinqMicajahDataContext.OrganizationName : v.OrgLocationFullName; LastMetricMetricValue.RelatedOrgLocationUoMRecordID = v.MetricOrgLocationUoMID; LastMetricMetricValue.OrgLocationUnitOfMeasureID = v.OrgLocationUnitOfMeasureID; LastMetricMetricValue.OrgLocationUnitOfMeasureName = GetMeasureUnitAbbvr(OrgUoMs, v.OrgLocationUnitOfMeasureID); // define actual measure unit if (v.MetricOrgLocationUoMID != null) { LastMetricMetricValue.InputUnitOfMeasureName = LastMetricMetricValue.OrgLocationUnitOfMeasureName; } MetricMetricValues.Add(LastMetricMetricValue); } MetricValue.Extend LastMetricValue = new MetricValue.Extend(); // Value fields LastMetricValue.InstanceId = (Guid)v.InstanceId; LastMetricValue.MetricValueID = (Guid)v.MetricValueID; LastMetricValue.MetricID = (Guid)v.MetricID; LastMetricValue.Date = (DateTime)v.Date; LastMetricValue.OrgLocationID = (Guid)v.OrgLocationID; LastMetricValue.FrequencyID = FrequencyID; LastMetricValue.Value = v.Value; LastMetricValue.Verified = v.Verified == null ? false : (bool)v.Verified; LastMetricValue.Approved = v.MetricValueID == Guid.Empty ? false : v.Approved; LastMetricValue.FilesAttached = v.FilesAttached == null ? false : (bool)v.FilesAttached; LastMetricValue.ReviewUpdated = v.ReviewUpdated == null ? false : (bool)v.ReviewUpdated; LastMetricValue.MissedCalc = v.MissedCalc == null ? false : (bool)v.MissedCalc; LastMetricValue.MetricDataTypeID = 1; LastMetricValue.InputUnitOfMeasureID = v.ValueInputUnitOfMeasureID; // Extend fields // extend - value reference LastMetricValue.ValueFrequencyName = v.FrequencyName; LastMetricValue.ValueInputUnitOfMeasureName = GetMeasureUnitAbbvr(OrgUoMs, v.ValueInputUnitOfMeasureID); LastMetricValue.OrgLocationFullName = v.OrgLocationID == Guid.Empty ? LinqMicajahDataContext.OrganizationName : v.OrgLocationFullName; LastMetricValue.RelatedOrgLocationUoMRecordID = v.MetricOrgLocationUoMID; LastMetricValue.OrgLocationUnitOfMeasureID = v.OrgLocationUnitOfMeasureID; LastMetricValue.OrgLocationUnitOfMeasureName = GetMeasureUnitAbbvr(OrgUoMs, v.OrgLocationUnitOfMeasureID); // extend - metric fields LastMetricValue.MetricName = v.MetricName; LastMetricValue.MetricFrequencyID = FrequencyID; LastMetricValue.ActualMetricDataTypeID = 1; LastMetricValue.MetricInputUnitOfMeasureID = v.MetricInputUnitOfMeasureID; LastMetricValue.NODecPlaces = v.NODecPlaces; LastMetricValue.MetricInputUnitOfMeasureName = GetMeasureUnitAbbvr(OrgUoMs, v.MetricInputUnitOfMeasureID); LastMetricValue.IsCalculated = (int)v.MetricTypeID > 1; LastMetricValue.IsAbsent = false; LastMetricValue.RelatedFormulaID = v.MetricFormulaID; LastMetricValue.Formula = v.Formula; PushMetricValue(LastMetricMetricValue, LastMetricValue, hl); } SetOrgLocationNumber(GroupNumber, MetricMetricValues); PushMetricValue(LastMetricMetricValue, null, hl); return(MetricMetricValues); }
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); }
public static List <DistinctMetricOrgValue> AlertQueueList(LinqMicajahDataContext dc, DateTime NormalizedDate, int FrequencyID, Guid?MetricID, Guid?OrgLocationID, Guid?SelUserId, Guid? @ApproverUserId, bool ViewMode, bool OrderByMetric) { DateTime EndDate = Frequency.AddPeriod(NormalizedDate, FrequencyID, 1); ISingleResult <Sp_SelectUnderReviewMetricValuesResult> V = dc.Sp_SelectUnderReviewMetricValues(LinqMicajahDataContext.InstanceId, EndDate, ViewMode, FrequencyID, MetricID, OrgLocationID, SelUserId, @ApproverUserId, OrderByMetric); List <DistinctMetricOrgValue> MetricMetricValues = new List <DistinctMetricOrgValue>(); DistinctMetricOrgValue LastMetricMetricValue = null; List <Micajah.Common.Bll.MeasureUnit> OrgUoMs = Mc_UnitsOfMeasure.GetOrganizationUoMs(); int i = 0; int j = 0; DateTime NextDate = DateTime.MinValue; foreach (var v in V) { if (LastMetricMetricValue == null || v.MetricID != LastMetricMetricValue.MetricID || v.OrgLocationID != LastMetricMetricValue.OrgLocationID) { i = 0; j = 0; LastMetricMetricValue = new DistinctMetricOrgValue(); // copy metric data LastMetricMetricValue.InstanceId = (Guid)v.InstanceId; LastMetricMetricValue.MetricID = (Guid)v.MetricID; LastMetricMetricValue.Name = v.MetricName; LastMetricMetricValue.FrequencyID = (int)v.MetricFrequencyID; LastMetricMetricValue.MetricTypeID = (int)v.MetricTypeID; LastMetricMetricValue.MetricDataTypeID = (int)v.MetricDataTypeID; LastMetricMetricValue.NODecPlaces = v.NODecPlaces; LastMetricMetricValue.InputUnitOfMeasureID = v.MetricInputUnitOfMeasureID; LastMetricMetricValue.InputUnitOfMeasureName = GetMeasureUnitAbbvr(OrgUoMs, v.MetricInputUnitOfMeasureID); LastMetricMetricValue.OrgLocationID = (Guid)v.OrgLocationID; LastMetricMetricValue.OrgLocationFullName = v.OrgLocationID == Guid.Empty ? LinqMicajahDataContext.OrganizationName : v.OrgLocationFullName; LastMetricMetricValue.RelatedOrgLocationUoMRecordID = v.MetricOrgLocationUoMID; LastMetricMetricValue.OrgLocationUnitOfMeasureID = v.OrgLocationUnitOfMeasureID; LastMetricMetricValue.OrgLocationUnitOfMeasureName = GetMeasureUnitAbbvr(OrgUoMs, v.OrgLocationUnitOfMeasureID); LastMetricMetricValue.AllowCustomNames = (bool)v.AllowCustomNames; // find actual input measure unit for metric-org location pair LastMetricMetricValue.InputUnitOfMeasureName = (LastMetricMetricValue.RelatedOrgLocationUoMRecordID == null) ? LastMetricMetricValue.InputUnitOfMeasureName : LastMetricMetricValue.OrgLocationUnitOfMeasureName; LastMetricMetricValue.RelatedOrgLocationNameRecordID = v.MetricOrgLocationNameID; LastMetricMetricValue.MetricOrgLocationAlias = v.CustomMetricAlias; LastMetricMetricValue.MetricOrgLocationCode = v.CustomMetricCode; LastMetricMetricValue.IsPreviousValues = false; LastMetricMetricValue.IsNextValues = false; LastMetricMetricValue.PreviousDate = DateTime.MinValue; LastMetricMetricValue.NextDate = DateTime.MinValue; LastMetricMetricValue.DatesHeader = new List <DateHeader>(); MetricMetricValues.Add(LastMetricMetricValue); } if (v.ValuePosType == "A") // check for existed left values { j++; if (j == 2) { LastMetricMetricValue.NextDate = (DateTime)v.Date; } continue; } if (LastMetricMetricValue.MetricValues.Count == 6) // check for existed right values { LastMetricMetricValue.IsPreviousValues = true; continue; } if (j == 2) { LastMetricMetricValue.IsNextValues = true; } MetricValue.Extend LastMetricValue = new MetricValue.Extend(); // metric data LastMetricValue.InstanceId = (Guid)v.InstanceId; LastMetricValue.MetricID = (Guid)v.MetricID; LastMetricValue.NODecPlaces = v.NODecPlaces; // value data LastMetricValue.MetricValueID = (Guid)v.MetricValueID; LastMetricValue.FrequencyID = (int)v.MetricFrequencyID; LastMetricValue.Date = (DateTime)v.Date; LastMetricValue.Value = v.Value; LastMetricValue.Approved = v.Approved; LastMetricValue.FilesAttached = (bool)v.FilesAttached; LastMetricValue.ReviewUpdated = (bool)v.ReviewUpdated; LastMetricValue.OrgLocationID = (Guid)v.OrgLocationID; LastMetricValue.MetricDataTypeID = (int)v.ValueDataTypeID; LastMetricValue.InputUnitOfMeasureID = v.ValueInputUnitOfMeasureID; LastMetricValue.OrgLocationFullName = v.OrgLocationID == Guid.Empty ? LinqMicajahDataContext.OrganizationName : v.OrgLocationFullName; LastMetricValue.RelatedOrgLocationUoMRecordID = v.MetricOrgLocationUoMID; LastMetricValue.OrgLocationUnitOfMeasureID = v.OrgLocationUnitOfMeasureID; LastMetricValue.IsCalculated = v.MetricTypeID != 1; DateHeader h = new DateHeader(); h.Date = (DateTime)v.Date; h.sDate = Frequency.GetPeriodName((DateTime)v.Date, FrequencyID, true); LastMetricMetricValue.DatesHeader.Add(h); if (i == 1) { LastMetricMetricValue.PreviousDate = LastMetricValue.Date; } LastMetricMetricValue.MetricValues.Add(LastMetricValue); i++; } foreach (DistinctMetricOrgValue m in MetricMetricValues) { if (m.MetricValues.Count < 6) { int count = 6 - m.MetricValues.Count; for (int k = 1; k <= count; k++) { MetricValue.Extend AnotherMetricValue = new MetricValue.Extend(); // metric data AnotherMetricValue.InstanceId = LastMetricMetricValue.InstanceId; AnotherMetricValue.MetricID = LastMetricMetricValue.MetricID; AnotherMetricValue.NODecPlaces = LastMetricMetricValue.NODecPlaces; // value data AnotherMetricValue.MetricValueID = Guid.Empty; AnotherMetricValue.FrequencyID = FrequencyID; AnotherMetricValue.Date = DateTime.MinValue; AnotherMetricValue.Value = null; AnotherMetricValue.Approved = false; AnotherMetricValue.FilesAttached = false; AnotherMetricValue.ReviewUpdated = false; AnotherMetricValue.OrgLocationID = LastMetricMetricValue.OrgLocationID; AnotherMetricValue.MetricDataTypeID = LastMetricMetricValue.MetricDataTypeID; AnotherMetricValue.InputUnitOfMeasureID = LastMetricMetricValue.InputUnitOfMeasureID; AnotherMetricValue.OrgLocationFullName = LastMetricMetricValue.OrgLocationFullName; AnotherMetricValue.RelatedOrgLocationUoMRecordID = LastMetricMetricValue.RelatedOrgLocationUoMRecordID; AnotherMetricValue.OrgLocationUnitOfMeasureID = LastMetricMetricValue.OrgLocationUnitOfMeasureID; AnotherMetricValue.IsCalculated = LastMetricMetricValue.MetricTypeID != 1; DateHeader ah = new DateHeader(); ah.Date = DateTime.MinValue; ah.sDate = " "; m.DatesHeader.Add(ah); m.MetricValues.Add(AnotherMetricValue); } } } return(MetricMetricValues); }