Example #1
0
 /// <summary>
 /// To Save KPI for the Client
 /// </summary>
 /// <param name="clientKPI"></param>
 /// <returns></returns>
 public bool SaveKPIForClient(ClientKPISetupViewModel clientKPI)
 {
     try
     {
         if (clientKPI?.KpiQuestions?.Count > 0)
         {
             ClientKPISetup clientKPISetup = new ClientKPISetup();
             clientKPISetup.ClientCode = clientKPI.ClientCode;
             foreach (KPISetupViewModel KPIViewModel in clientKPI.KpiQuestions)
             {
                 KPISetup kPISetup = new KPISetup();
                 kPISetup.ClientStandard = KPIViewModel.ClientStandard;
                 kPISetup.Sla            = KPIViewModel.Sla;
                 kPISetup.Kpi.KPIID      = KPIViewModel.Kpi.KpiId;
                 kPISetup.ClientKPIMapId = KPIViewModel.clientKPIMapId;
                 foreach (AllUsersViewModel user in KPIViewModel.SendTo)
                 {
                     kPISetup.SendTo.Add(new AllUsers()
                     {
                         ID = user.ID, Email = user.Email
                     });
                 }
                 clientKPISetup.KPIQuestions.Add(kPISetup);
             }
             return(_kpiRepository.SaveKPIForClient(clientKPISetup));
         }
         else
         {
             return(false);
         }
     }
     catch (Exception ex)
     {
         _logger.Log(ex, LogLevel.Error, ex.Message);
         return(false);
     }
 }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="clientCode"></param>
        /// <returns></returns>
        public ClientKPISetupViewModel GetClientAssignedKPIs(string clientCode)
        {
            try
            {
                ClientKPISetupViewModel clientKPISetupViewModel = new ClientKPISetupViewModel();

                ClientKPISetup clientAssignedM3KPIs = _kpiRepository.GetClientAssignedM3KPIs(clientCode);

                if (clientAssignedM3KPIs.KPIQuestions?.Count > 0)
                {
                    foreach (KPISetup clientKPIDto in clientAssignedM3KPIs.KPIQuestions)
                    {
                        KPISetupViewModel clientKPI = new KPISetupViewModel();

                        clientKPI.ClientStandard = clientKPIDto.ClientStandard;
                        if (!string.IsNullOrEmpty(clientKPI.ClientStandard))
                        {
                            string[] words = clientKPI.ClientStandard.Split(',');

                            clientKPI.AlertLevel     = words[0];
                            clientKPI.AlertValue     = words[1];
                            clientKPI.ClientStandard = clientKPI.ClientStandard.Replace(",", " ");
                        }

                        clientKPI.Sla            = clientKPIDto.Sla;
                        clientKPI.clientKPIMapId = clientKPIDto.ClientKPIMapId;
                        clientKPI.Kpi.ChecklistTypeViewModel.CheckListTypeCode = clientKPIDto.Kpi.Source.CheckListTypeCode;
                        clientKPI.Kpi.CompanyStandard = clientKPIDto.Kpi.AlertLevel.Replace(",", " ");
                        clientKPI.Kpi.IsUniversal     = clientKPIDto.Kpi.IsUniversal;
                        clientKPI.Kpi.KpiDescription  = clientKPIDto.Kpi.KPIDescription;
                        clientKPI.Kpi.KpiId           = clientKPIDto.Kpi.KPIID;
                        if (clientKPIDto.Kpi.Measure != null && clientKPIDto.Kpi.Source.CheckListTypeCode == DomainConstants.M3)
                        {
                            clientKPI.Kpi.M3MeasureViewModel.MeasureCode = clientKPIDto.Kpi.Measure.MeasureCode;
                            clientKPI.Kpi.M3MeasureViewModel.MeasureUnit = clientKPIDto.Kpi.Measure.MeasureUnit;
                        }
                        else
                        {
                            clientKPI.Kpi.M3MeasureViewModel = null;
                        }
                        if (clientKPIDto.SendTo?.Count > 0)
                        {
                            foreach (AllUsers user in clientKPIDto.SendTo)
                            {
                                clientKPI.SendTo.Add(BusinessMapper.AllUsersBusinessToAllUsesrViewModel(user));
                            }
                        }
                        clientKPISetupViewModel.KpiQuestions.Add(clientKPI);
                    }
                }

                ClientKPIDetails clientAssignedWeeklyMonthlyKPIs = _kpiRepository.GetClientAssignedWeeklyMonthlyKPIs(clientCode);

                List <int> kpiIds = clientAssignedWeeklyMonthlyKPIs.clientKPIAssignedDetails.Select(c => c.KPIID)?.Distinct()?.ToList();

                foreach (int kpiId in kpiIds)
                {
                    List <ClientKPIAssignedDetails> kpiDetailsForKPIId = clientAssignedWeeklyMonthlyKPIs.clientKPIAssignedDetails.Where(k => k.KPIID == kpiId)?.OrderBy(k => k.ClientKPIMapID).ToList();
                    KPISetupViewModel clientKPI = new KPISetupViewModel();
                    if (kpiDetailsForKPIId.Count >= 2)
                    {
                        if (kpiDetailsForKPIId.Count > 2)
                        {
                            kpiDetailsForKPIId = kpiDetailsForKPIId.Where(k => k.KPIID == kpiId && k.ChecklistEndDate != DateTime.MaxValue.Date).ToList();
                        }

                        if (kpiDetailsForKPIId.Count == 2)
                        {
                            ClientKPIAssignedDetails previousClientKPI = kpiDetailsForKPIId[0];
                            ClientKPIAssignedDetails newClientKPI      = kpiDetailsForKPIId[1];

                            if (previousClientKPI.IsKPI)
                            {
                                ClientKPIAssignedDetailsToKPISetupViewModel(clientAssignedWeeklyMonthlyKPIs, clientKPI, previousClientKPI);
                                if (!newClientKPI.IsKPI)//From KPI to made NonKPI //4th,5th scenario
                                {
                                    clientKPI.Info = InfoMessages.ItemWillRemoveFrom + previousClientKPI.QuestionEndDate.Date.ToString("MM/dd/yyyy");
                                    clientKPI.FutureRemoverOrUniversal = true;
                                }
                                else if (previousClientKPI.IsUnivarsal && !newClientKPI.IsUnivarsal)  //From Universal to made non Universal 3rd scenario
                                {
                                    clientKPI.Info = InfoMessages.ItemNonUniversalFrom + previousClientKPI.QuestionEndDate.Date.ToString("MM/dd/yyyy");
                                }
                                else if (!previousClientKPI.IsUnivarsal && newClientKPI.IsUnivarsal)  //Ftom nonUniversal to made universal 2nd Scenario
                                {
                                    clientKPI.Info = InfoMessages.ItemUniversalFrom + newClientKPI.QuestionEffectiveDate.Date.ToString("MM/dd/yyyy");
                                    clientKPI.FutureRemoverOrUniversal = true;
                                }
                                else if (previousClientKPI.ChecklistQuestionEffectiveDate > DateTime.Now.Date && newClientKPI.ChecklistQuestionEffectiveDate > DateTime.Now.Date) //No changes on KPI and Universal
                                {
                                    clientKPI.Info = InfoMessages.ItemEffectiveFrom + previousClientKPI.ChecklistQuestionEffectiveDate.ToString("MM/dd/yyyy");
                                }
                                else if (previousClientKPI.ChecklistEffectiveDate > DateTime.Now.Date && newClientKPI.ChecklistEffectiveDate > DateTime.Now.Date) //No changes on KPI and Universal
                                {
                                    clientKPI.Info = InfoMessages.ItemEffectiveFrom + previousClientKPI.ChecklistEffectiveDate.ToString("MM/dd/yyyy");
                                }
                                clientKPISetupViewModel.KpiQuestions.Add(clientKPI);
                            }
                            else if (!previousClientKPI.IsKPI && newClientKPI.IsKPI) //If previously non KPI and now made KPI
                            {
                                ClientKPIAssignedDetailsToKPISetupViewModel(clientAssignedWeeklyMonthlyKPIs, clientKPI, newClientKPI);
                                if (newClientKPI.ChecklistEffectiveDate > DateTime.Now.Date)// To check if checklist is starting from future
                                {
                                    clientKPI.Info = InfoMessages.ItemEffectiveFrom + newClientKPI.ChecklistEffectiveDate.ToString("MM/dd/yyyy");
                                }
                                else if (newClientKPI.ChecklistQuestionEffectiveDate > DateTime.Now.Date) //If assigned Quedtion is starting from future
                                {
                                    clientKPI.Info = InfoMessages.ItemEffectiveFrom + newClientKPI.ChecklistQuestionEffectiveDate.ToString("MM/dd/yyyy");
                                }
                                if (newClientKPI.IsUnivarsal)
                                {
                                    clientKPI.FutureRemoverOrUniversal = true;
                                }
                                clientKPISetupViewModel.KpiQuestions.Add(clientKPI);
                            }
                        }
                    }
                    else
                    { //1st scenario
                        ClientKPIAssignedDetails currentAssignedKPI = kpiDetailsForKPIId.FirstOrDefault();
                        ClientKPIAssignedDetailsToKPISetupViewModel(clientAssignedWeeklyMonthlyKPIs, clientKPI, currentAssignedKPI);

                        if (currentAssignedKPI.KPIAssignedEndDate != DateTime.MaxValue.Date) //To check if the KPI is ending in future and only one record is assigned
                        {
                            clientKPI.Info = InfoMessages.ItemWillRemoveFrom + currentAssignedKPI.KPIAssignedEndDate.Date.ToString("MM/dd/yyyy");
                            clientKPI.FutureRemoverOrUniversal = true;
                        }
                        else if (currentAssignedKPI.ChecklistEndDate != DateTime.MaxValue.Date) //If assigned Question is starting from future
                        {
                            clientKPI.Info = InfoMessages.ItemWillRemoveFrom + currentAssignedKPI.ChecklistEndDate.Date.ToString("MM/dd/yyyy");
                            clientKPI.FutureRemoverOrUniversal = true;
                        }
                        else if (currentAssignedKPI.ChecklistEffectiveDate > DateTime.Now.Date)// To check if checklist is starting from future
                        {
                            clientKPI.Info = InfoMessages.ItemEffectiveFrom + currentAssignedKPI.ChecklistEffectiveDate.ToString("MM/dd/yyyy");
                        }
                        else if (currentAssignedKPI.ChecklistQuestionEffectiveDate > DateTime.Now.Date) //If assigned Question to checklist is starting from future
                        {
                            clientKPI.Info = InfoMessages.ItemEffectiveFrom + currentAssignedKPI.ChecklistQuestionEffectiveDate.ToString("MM/dd/yyyy");
                        }
                        else if (currentAssignedKPI.QuestionEffectiveDate > DateTime.Now.Date) //If assigned Question is starting from future
                        {
                            clientKPI.Info = InfoMessages.ItemEffectiveFrom + currentAssignedKPI.QuestionEffectiveDate.ToString("MM/dd/yyyy");
                        }
                        clientKPISetupViewModel.KpiQuestions.Add(clientKPI);
                    }
                }
                return(clientKPISetupViewModel);
            }
            catch (Exception ex)
            {
                _logger.Log(ex, LogLevel.Error, ex.Message);
                return(null);
            }
        }