/// <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()); } } } }
public bool IsMailAlreadySentForKPI(DeviatedClientKpi deviatedClientKpi, int userId) { try { int id = _m3PactContext.MailRecepientsDetailsDayWise.Where(m => deviatedClientKpi.DeviatedClientKpiid == m.DeviatedClientKpiid && m.SentDate.Date == DateTime.Now.Date && m.UserId == userId.ToString()). Select(m => m.Id).FirstOrDefault(); return(id > 0); } catch (Exception ex) { throw ex; } }
/// <summary> /// DeviatedClientKPi Table mapping /// </summary> /// <param name="kpiId"></param> /// <param name="clientid"></param> /// <param name="expected"></param> /// <param name="Actual"></param> /// <param name="date"></param> /// <param name="checklistTypeId"></param> /// <param name="questionCode"></param> private void DeviatedKPI(int kpiId, int clientid, string expected, string Actual, DateTime date, int checklistTypeId, string questionCode) { DeviatedClientKpi deviatedClientKpi = new DeviatedClientKpi(); deviatedClientKpi.ActualResponse = Actual; deviatedClientKpi.ExpectedResponse = expected; deviatedClientKpi.ClientId = clientid; deviatedClientKpi.SubmittedDate = DateTime.Now.Date; deviatedClientKpi.CheckListDate = date; deviatedClientKpi.ChecklistTypeId = checklistTypeId; deviatedClientKpi.RecordStatus = DomainConstants.RecordStatusActive; deviatedClientKpi.QuestionCode = questionCode; deviatedClientKpi.SubmittedDate = DateTime.Now.Date; _m3PactContext.DeviatedClientKpi.Add(deviatedClientKpi); _m3PactContext.SaveChanges(); }