Esempio n. 1
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 { }
        }
Esempio n. 2
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));
        }
Esempio n. 3
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);
        }
        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);
        }
Esempio n. 6
0
        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 = "&nbsp;";
                        m.DatesHeader.Add(ah);
                        m.MetricValues.Add(AnotherMetricValue);
                    }
                }
            }
            return(MetricMetricValues);
        }