Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }