Exemple #1
0
        /// <summary>
        /// Insert metric daily data to M3metricClientKpiDaily
        /// </summary>
        /// <param name="clients"></param>
        /// <param name="m3MetricDataDaily"></param>
        /// <param name="kpiConfig"></param>
        private void PerformM3MetricClientKPIDeviation(List <Client> clients, DataTable m3MetricDataDaily, DataTable kpiConfig)
        {
            bool isDataExist = _m3PactContext.M3metricClientKpiDaily.Where(x => x.InsertedDate == DateTime.Now.Date).Any();

            if (!isDataExist)
            {
                List <M3metricClientKpiDaily> m3metricClientKpiDailyData = new List <M3metricClientKpiDaily>();
                List <Kpi> metricKPIs = _m3PactContext.Kpi.Include(h => h.CheckListType)
                                        .Where(h => h.RecordStatus == DomainConstants.RecordStatusActive && h.CheckListType.CheckListTypeCode == DomainConstants.M3).ToList();

                foreach (Client client in clients)
                {
                    DataRow    m3MetricClientData = m3MetricDataDaily.Select("client='" + client.ClientCode + "'").FirstOrDefault();
                    List <Kpi> clientMetricKPIs   = (from k in metricKPIs
                                                     join ck in _m3PactContext.ClientKpimap on k.Kpiid equals ck.Kpiid
                                                     where ck.ClientId == client.ClientId
                                                     select k).ToList();

                    foreach (Kpi metricKPI in clientMetricKPIs)
                    {
                        M3metricsQuestion m3MetricsQuestion = _m3PactContext.M3metricsQuestion.Where(m => m.M3metricsQuestionId.ToString() == metricKPI.Measure).FirstOrDefault();
                        if (m3MetricsQuestion != null)
                        {
                            string kpiTargetColumn = GetKPITargetColumn(kpiConfig, m3MetricsQuestion.M3metricsQuestionCode);
                            if (kpiTargetColumn != "" && m3MetricClientData != null)
                            {
                                string alertLevel         = GetKPIAlertLevelWithOperatorForClient(client.ClientId, metricKPI);
                                string standardAlertValue = GetStandardAlertValueForClient(alertLevel);
                                string alertCompare       = GetKPIAlertOperatorForClient(alertLevel);
                                string actualkpiValue     = GetActualAlertValueForClient(m3MetricClientData, kpiTargetColumn);
                                bool   isDeviation        = IsKPIDeviated(standardAlertValue, alertCompare, actualkpiValue);

                                M3metricClientKpiDaily m3metricKpi = new M3metricClientKpiDaily();
                                m3metricKpi.ClientId     = client.ClientId;
                                m3metricKpi.KpiId        = metricKPI.Kpiid;
                                m3metricKpi.IsDeviated   = isDeviation ? true : false;
                                m3metricKpi.RecordStatus = DomainConstants.RecordStatusActive;
                                m3metricKpi.InsertedDate = DateTime.Now.Date;
                                m3metricKpi.CreatedDate  = DateTime.Now;
                                m3metricKpi.CreatedBy    = DomainConstants.Admin;
                                m3metricKpi.ModifiedDate = DateTime.Now;
                                m3metricKpi.ModifiedBy   = DomainConstants.Admin;
                                m3metricKpi.ActualValue  = actualkpiValue;
                                m3metricKpi.AlertLevel   = alertCompare + " " + standardAlertValue;
                                m3metricClientKpiDailyData.Add(m3metricKpi);
                            }
                        }
                    }
                }

                if (m3metricClientKpiDailyData != null && m3metricClientKpiDailyData.Count > 0)
                {
                    _m3PactContext.M3metricClientKpiDaily.AddRange(m3metricClientKpiDailyData);
                    _m3PactContext.SaveChanges();
                }
            }
        }
Exemple #2
0
 /// <summary>
 /// Check and insert into deviatedclient KPI table
 /// </summary>
 /// <param name="kpis"></param>
 /// <param name="metrictype"></param>
 /// <param name="kpiConfig"></param>
 /// <param name="m3MetricClientData"></param>
 /// <param name="clientId"></param>
 /// <param name="m3MetricChecklistTypeId"></param>
 private void KPistoBeinDeviated(List <Kpi> kpis, string metrictype, DataTable kpiConfig, DataRow m3MetricClientData, int clientId, int m3MetricChecklistTypeId)
 {
     foreach (Kpi k in kpis)
     {
         M3metricsQuestion m3MetricsQuestion = _m3PactContext.M3metricsQuestion.Where(m => m.M3metricsQuestionId.ToString() == k.Measure).FirstOrDefault();
         DateTime          checklistDate     = new DateTime();
         DeviatedClientKpi deviatedClientKpi = new DeviatedClientKpi();
         if (metrictype == DomainConstants.Monthly)
         {
             GetPreviousMonthAndYear(out int previousYear, out int previousMonth);
             deviatedClientKpi = _m3PactContext.DeviatedClientKpi.Where(d => d.ChecklistTypeId == m3MetricChecklistTypeId &&
                                                                        d.CheckListDate.Month == previousMonth &&
                                                                        d.CheckListDate.Year == previousYear &&
                                                                        d.ClientId == clientId &&
                                                                        d.QuestionCode == m3MetricsQuestion.M3metricsQuestionCode &&
                                                                        d.RecordStatus == DomainConstants.RecordStatusActive)?.FirstOrDefault();
             if (deviatedClientKpi != null)
             {
                 break;
             }
             checklistDate = new DateTime(previousYear, previousMonth, 1).Date;
         }
         else
         {
             deviatedClientKpi = _m3PactContext.DeviatedClientKpi.Where(d => d.ChecklistTypeId == m3MetricChecklistTypeId &&
                                                                        d.CheckListDate == DateTime.Now.Date &&
                                                                        d.ClientId == clientId &&
                                                                        d.QuestionCode == m3MetricsQuestion.M3metricsQuestionId.ToString() &&
                                                                        d.RecordStatus == DomainConstants.RecordStatusActive)?.FirstOrDefault();
             if (deviatedClientKpi != null)
             {
                 break;
             }
         }
         string kpiTargetColumn = GetKPITargetColumn(kpiConfig, m3MetricsQuestion.M3metricsQuestionCode);
         if (kpiTargetColumn != "" && m3MetricClientData != null)
         {
             string alertLevel         = GetKPIAlertLevelWithOperatorForClient(clientId, k);
             string standardAlertValue = GetStandardAlertValueForClient(alertLevel);
             string alertCompare       = GetKPIAlertOperatorForClient(alertLevel);
             string actualkpiValue     = GetActualAlertValueForClient(m3MetricClientData, kpiTargetColumn);
             bool   isDeviation        = IsKPIDeviated(standardAlertValue, alertCompare, actualkpiValue);
             if (isDeviation)
             {
                 DeviatedKPI(k.Kpiid, clientId, standardAlertValue, actualkpiValue,
                             metrictype == DomainConstants.Monthly ? checklistDate : DateTime.Now.Date, m3MetricChecklistTypeId, m3MetricsQuestion.M3metricsQuestionId.ToString());
             }
         }
     }
 }