public UpdateKpiAchievementsResponse UpdateKpiAchievements(UpdateKpiAchievementsRequest request) { PeriodeType periodeType = (PeriodeType)Enum.Parse(typeof(PeriodeType), request.PeriodeType); var response = new UpdateKpiAchievementsResponse(); response.PeriodeType = periodeType; try { foreach (var pillar in request.Pillars) { foreach (var kpi in pillar.Kpis) { foreach (var kpiAchievement in kpi.KpiAchievements) { if (kpiAchievement.Id == 0) { var kpiAchievementNew = new KpiAchievement(); kpiAchievementNew.Value = kpiAchievement.Value; kpiAchievementNew.Kpi = DataContext.Kpis.Single(x => x.Id == kpi.Id); kpiAchievementNew.PeriodeType = periodeType; kpiAchievementNew.Periode = kpiAchievement.Periode; kpiAchievementNew.IsActive = true; kpiAchievementNew.Remark = kpiAchievement.Remark; kpiAchievementNew.CreatedDate = DateTime.Now; kpiAchievementNew.UpdatedDate = DateTime.Now; DataContext.KpiAchievements.Add(kpiAchievementNew); } else { var kpiAchievementNew = new KpiAchievement(); kpiAchievementNew.Id = kpiAchievement.Id; kpiAchievementNew.Value = kpiAchievement.Value; kpiAchievementNew.Kpi = DataContext.Kpis.Single(x => x.Id == kpi.Id); kpiAchievementNew.PeriodeType = periodeType; kpiAchievementNew.Periode = kpiAchievement.Periode; kpiAchievementNew.IsActive = true; kpiAchievementNew.Remark = kpiAchievement.Remark; kpiAchievementNew.UpdatedDate = DateTime.Now; DataContext.KpiAchievements.Attach(kpiAchievementNew); DataContext.Entry(kpiAchievementNew).State = EntityState.Modified; } } } } response.IsSuccess = true; response.Message = "KPI Achievements has been updated successfully"; DataContext.SaveChanges(); } catch (InvalidOperationException invalidOperationException) { response.Message = invalidOperationException.Message; } return(response); }
public GetKpiAchievementResponse GetKpiAchievement(int kpiId, DateTime date, PeriodeType periodeType) { var response = new GetKpiAchievementResponse(); try { var kpi = DataContext.Kpis.Include(x => x.Measurement).Single(x => x.Id == kpiId); var data = DataContext.KpiAchievements.Include(x => x.Kpi).Where(x => x.Kpi.Id == kpiId && x.Periode == date).AsQueryable(); var result = new KpiAchievement(); switch (periodeType) { case PeriodeType.Daily: { result = data.FirstOrDefault(x => x.PeriodeType == periodeType); break; } } var kpiResponse = new GetKpiAchievementResponse.KpiResponse { Id = kpi.Id, Measurement = kpi.Measurement.Name, Name = kpi.Name, Remark = kpi.Remark, }; return(new GetKpiAchievementResponse { Value = (result != null) ? result.Value : null, Mtd = (result != null) ? result.Mtd : null, Ytd = (result != null) ? result.Ytd : null, Itd = (result != null) ? result.Itd : null, Remark = (result != null) ? result.Remark : null, Kpi = kpiResponse, Deviation = (result != null) ? result.Deviation : null, IsSuccess = true }); } catch (Exception exception) { response.Message = exception.Message; } return(response); }