コード例 #1
0
        public SaveKpiTransformationLogResponse Save(SaveKpiTransformationLogRequest request)
        {
            try
            {
                var kpiTransformationLog      = request.MapTo <KpiTransformationLog>();
                var kpiTransformationSchedule = DataContext.KpiTransformationSchedules.Local.FirstOrDefault(x => x.Id == request.KpiTransformationScheduleId);
                if (kpiTransformationSchedule == null)
                {
                    kpiTransformationSchedule = new KpiTransformationSchedule {
                        Id = request.KpiTransformationScheduleId
                    };
                    DataContext.KpiTransformationSchedules.Attach(kpiTransformationSchedule);
                }
                kpiTransformationLog.Schedule = kpiTransformationSchedule;
                var kpi = DataContext.Kpis.Local.FirstOrDefault(x => x.Id == request.KpiId);
                if (kpi == null)
                {
                    kpi = new Kpi {
                        Id = request.KpiId
                    };
                    DataContext.Kpis.Attach(kpi);
                }
                kpiTransformationLog.Kpi = kpi;
                DataContext.KpiTransformationLogs.Add(kpiTransformationLog);

                //remove related kpi if error
                if (request.Status == Data.Enums.KpiTransformationStatus.Error && request.MethodId == 1 && request.NeedCleanRowWhenError)
                {
                    var achievements = DataContext.KpiAchievements.Where(
                        x => x.Kpi.Id == request.KpiId && x.Periode == request.Periode && x.PeriodeType == request.PeriodeType).ToList();
                    foreach (var achievement in achievements)
                    {
                        DataContext.KpiAchievements.Remove(achievement);
                    }
                    DataContext.SaveChanges();
                }

                DataContext.SaveChanges();
                return(new SaveKpiTransformationLogResponse {
                    IsSuccess = true, Message = "You have been successfully saved kpi transformation log"
                });
            }
            catch (Exception ex)
            {
                return(new SaveKpiTransformationLogResponse {
                    IsSuccess = false, Message = "Error when saving kpi transformation log" + ex.Message
                });
            }
        }