コード例 #1
0
        public GetKpiTargetItemResponse GetKpiTarget(int kpiId, DateTime date, RangeFilter rangeFilter)
        {
            var response = new GetKpiTargetItemResponse();

            try
            {
                switch (rangeFilter)
                {
                case RangeFilter.CurrentDay:
                case RangeFilter.CurrentMonth:
                case RangeFilter.CurrentYear:
                case RangeFilter.MTD:
                case RangeFilter.YTD:
                case RangeFilter.AllExistingYears:
                {
                    var kpi = DataContext.Kpis
                              .Include(x => x.Measurement)
                              .Single(x => x.Id == kpiId);

                    return(GetKpiTarget(kpi.Id, date, rangeFilter, kpi.YtdFormula));
                }
                }
            }
            catch (Exception exception)
            {
                response.Message = exception.Message;
            }


            return(response);
        }
コード例 #2
0
        public GetKpiTargetItemResponse GetKpiTarget(int kpiId, DateTime date, PeriodeType periodeType)
        {
            var response = new GetKpiTargetItemResponse();

            var kpiTarget = DataContext.KpiTargets
                            .Include(x => x.Kpi)
                            .Where(x => x.PeriodeType == periodeType &&
                                   x.Periode == date && x.Kpi.Id == kpiId).FirstOrDefault();

            if (kpiTarget != null)
            {
                response.Kpi = new GetKpiTargetItemResponse.KpiResponse
                {
                    Id   = kpiTarget.Kpi.Id,
                    Name = kpiTarget.Kpi.Name
                };
                response.Value       = kpiTarget.Value;
                response.Periode     = kpiTarget.Periode;
                response.PeriodeType = kpiTarget.PeriodeType;
            }

            return(response);
        }
コード例 #3
0
ファイル: KpiTargetService.cs プロジェクト: yhsantosa/Pear
        public GetKpiTargetItemResponse GetKpiTargetByValue(GetKpiTargetRequestByValue request)
        {
            var         response    = new GetKpiTargetItemResponse();
            PeriodeType periodeType = (PeriodeType)Enum.Parse(typeof(PeriodeType), request.PeriodeType);

            response.PeriodeType = periodeType;
            try
            {
                var kpiTarget = DataContext.KpiTargets.Include(x => x.Kpi).Single(x => x.Kpi.Id == request.Kpi_Id && x.PeriodeType == periodeType && x.Periode == request.periode);
                response           = kpiTarget.MapTo <GetKpiTargetItemResponse>();
                response.IsSuccess = true;
            }
            catch (InvalidOperationException invalidOperationException)
            {
                response.IsSuccess = false;
                response.Message   = invalidOperationException.Message;
            }
            catch (ArgumentNullException argumentNullException)
            {
                response.IsSuccess = false;
                response.Message   = argumentNullException.Message;
            }
            return(response);
        }
コード例 #4
0
        public GetKpiTargetItemResponse GetKpiTarget(int kpiId, DateTime date, RangeFilter rangeFilter, YtdFormula ytdFormula)
        {
            var response = new GetKpiTargetItemResponse();

            try
            {
                switch (rangeFilter)
                {
                case RangeFilter.CurrentDay:
                {
                    var kpi         = DataContext.Kpis.Include(x => x.Measurement).Single(x => x.Id == kpiId);
                    var data        = DataContext.KpiTargets.Include(x => x.Kpi).FirstOrDefault(x => x.Kpi.Id == kpiId && x.PeriodeType == PeriodeType.Daily && x.Periode == date);
                    var kpiResponse = new GetKpiTargetItemResponse.KpiResponse
                    {
                        Id          = kpi.Id,
                        Measurement = kpi.Measurement.Name,
                        Name        = kpi.Name,
                        Remark      = kpi.Remark,
                    };

                    return(new GetKpiTargetItemResponse
                        {
                            Value = (data != null) ? data.Value : null,
                            Kpi = kpiResponse,
                            IsSuccess = true
                        });
                }

                case RangeFilter.CurrentMonth:
                {
                    var kpi         = DataContext.Kpis.Include(x => x.Measurement).Single(x => x.Id == kpiId);
                    var data        = DataContext.KpiTargets.Include(x => x.Kpi).FirstOrDefault(x => x.Kpi.Id == kpiId && x.PeriodeType == PeriodeType.Monthly && x.Periode.Month == date.Month && x.Periode.Year == date.Year);
                    var kpiResponse = new GetKpiTargetItemResponse.KpiResponse
                    {
                        Id          = kpi.Id,
                        Measurement = kpi.Measurement.Name,
                        Name        = kpi.Name,
                        Remark      = kpi.Remark,
                    };

                    return(new GetKpiTargetItemResponse
                        {
                            Value = (data != null) ? data.Value : null,
                            Kpi = kpiResponse,
                            IsSuccess = true
                        });
                }

                case RangeFilter.CurrentYear:
                {
                    var kpi         = DataContext.Kpis.Include(x => x.Measurement).Single(x => x.Id == kpiId);
                    var data        = DataContext.KpiTargets.Include(x => x.Kpi).FirstOrDefault(x => x.Kpi.Id == kpiId && x.PeriodeType == PeriodeType.Yearly && x.Periode.Year == date.Year);
                    var kpiResponse = new GetKpiTargetItemResponse.KpiResponse
                    {
                        Id          = kpi.Id,
                        Measurement = kpi.Measurement.Name,
                        Name        = kpi.Name,
                        Remark      = kpi.Remark,
                    };

                    return(new GetKpiTargetItemResponse
                        {
                            Value = (data != null) ? data.Value : null,
                            Kpi = kpiResponse,
                            IsSuccess = true
                        });
                }

                case RangeFilter.MTD:
                {
                    var kpi  = DataContext.Kpis.Include(x => x.Measurement).Single(x => x.Id == kpiId);
                    var data = DataContext.KpiTargets.Include(x => x.Kpi)
                               .Where(x => x.Kpi.Id == kpiId && x.PeriodeType == PeriodeType.Daily &&
                                      (x.Periode.Day >= 1 && x.Periode.Day <= date.Day && x.Periode.Month == date.Month && x.Periode.Year == date.Year)).AsQueryable();
                    double?kpiAchievement = ytdFormula == YtdFormula.Average ? data.Average(x => x.Value) : data.Sum(x => x.Value);
                    var    kpiResponse    = new GetKpiTargetItemResponse.KpiResponse
                    {
                        Id          = kpi.Id,
                        Measurement = kpi.Measurement.Name,
                        Name        = kpi.Name,
                        Remark      = kpi.Remark,
                    };

                    return(new GetKpiTargetItemResponse
                        {
                            Value = kpiAchievement,
                            Kpi = kpiResponse,
                            IsSuccess = true
                        });
                }

                case RangeFilter.YTD:
                {
                    var kpi  = DataContext.Kpis.Include(x => x.Measurement).Single(x => x.Id == kpiId);
                    var data = DataContext.KpiTargets.Include(x => x.Kpi)
                               .Where(x => x.Kpi.Id == kpiId && x.PeriodeType == PeriodeType.Monthly && x.Value.HasValue &&
                                      (x.Periode.Month >= 1 && x.Periode.Month <= date.Month && x.Periode.Year == date.Year)).AsQueryable();
                    double?kpiAchievement = ytdFormula == YtdFormula.Average ? data.Average(x => x.Value) : data.Sum(x => x.Value);
                    var    kpiResponse    = new GetKpiTargetItemResponse.KpiResponse
                    {
                        Id          = kpi.Id,
                        Measurement = kpi.Measurement.Name,
                        Name        = kpi.Name,
                        Remark      = kpi.Remark,
                    };

                    return(new GetKpiTargetItemResponse
                        {
                            Value = kpiAchievement,
                            Kpi = kpiResponse,
                            IsSuccess = true
                        });
                }

                case RangeFilter.AllExistingYears:
                {
                    var kpi  = DataContext.Kpis.Include(x => x.Measurement).Single(x => x.Id == kpiId);
                    var data = DataContext.KpiTargets.Include(x => x.Kpi)
                               .Where(x => x.Kpi.Id == kpiId && x.PeriodeType == PeriodeType.Yearly && x.Value.HasValue &&
                                      (x.Periode.Year >= 2011 && x.Periode.Year <= date.Year)).AsQueryable();
                    double?kpiAchievement = ytdFormula == YtdFormula.Average ? data.Average(x => x.Value) : data.Sum(x => x.Value);
                    var    kpiResponse    = new GetKpiTargetItemResponse.KpiResponse
                    {
                        Id          = kpi.Id,
                        Measurement = kpi.Measurement.Name,
                        Name        = kpi.Name,
                        Remark      = kpi.Remark,
                    };

                    return(new GetKpiTargetItemResponse
                        {
                            Value = kpiAchievement,
                            Kpi = kpiResponse,
                            IsSuccess = true
                        });
                }
                }
            }
            catch (Exception exception)
            {
                response.Message = exception.Message;
            }


            return(response);
        }