public ActionResult ConfigurationPartial(ConfigurationParamViewModel paramViewModel)
        {
            int         roleGroupId = paramViewModel.Id;
            PeriodeType pType       = string.IsNullOrEmpty(paramViewModel.PeriodeType)
                                    ? PeriodeType.Yearly
                                    : (PeriodeType)Enum.Parse(typeof(PeriodeType), paramViewModel.PeriodeType);

            var request = new GetKpiAchievementsConfigurationRequest();

            request.PeriodeType = pType.ToString();
            request.RoleGroupId = roleGroupId;
            request.Year        = paramViewModel.Year;
            request.Month       = paramViewModel.Month;
            var response = _kpiAchievementService.GetKpiAchievementsConfiguration(request);

            if (response.IsSuccess)
            {
                var viewModel = response.MapTo <ConfigurationKpiAchievementsViewModel>();
                viewModel.Year        = request.Year;
                viewModel.Month       = request.Month;
                viewModel.Years       = _dropdownService.GetYears().MapTo <SelectListItem>();
                viewModel.Months      = _dropdownService.GetMonths().MapTo <SelectListItem>();
                viewModel.PeriodeType = pType.ToString();
                viewModel.FileName    = this._ExportToExcel(viewModel);
                return(PartialView("Configuration/_" + pType.ToString(), viewModel));
            }

            return(base.ErrorPage(response.Message));
        }
        private OperationDataConfigurationViewModel ConfigurationViewModel(OperationDataParamConfigurationViewModel paramViewModel, bool?isIncludeGroup)
        {
            PeriodeType pType = string.IsNullOrEmpty(paramViewModel.PeriodeType)
                                    ? PeriodeType.Yearly
                                    : (PeriodeType)Enum.Parse(typeof(PeriodeType), paramViewModel.PeriodeType);

            var request = paramViewModel.MapTo <GetOperationDataConfigurationRequest>();

            request.PeriodeType = pType;
            request.IsPartial   = isIncludeGroup.HasValue && isIncludeGroup.Value;
            var response  = _operationDataService.GetOperationDataConfiguration(request);
            var viewModel = response.MapTo <OperationDataConfigurationViewModel>();

            viewModel.Years       = _dropdownService.GetYearsForOperationData().MapTo <SelectListItem>();
            viewModel.PeriodeType = pType.ToString();
            viewModel.Year        = request.Year;
            viewModel.ConfigType  = ConfigType.OperationData.ToString();
            return(viewModel);
        }
        public ActionResult DownloadTemplateForAllGroup(OperationDataParamConfigurationViewModel paramViewModel)
        {
            PeriodeType pType = string.IsNullOrEmpty(paramViewModel.PeriodeType)
                                   ? PeriodeType.Yearly
                                   : (PeriodeType)Enum.Parse(typeof(PeriodeType), paramViewModel.PeriodeType);

            var request = paramViewModel.MapTo <GetOperationDataConfigurationRequest>();

            request.PeriodeType = pType;
            request.IsPartial   = false;
            var response  = _operationDataService.GetOperationDataConfigurationForAllGroup(request);
            var viewModel = response.MapTo <OperationDataConfigurationViewModel>();

            viewModel.Years       = _dropdownService.GetYearsForOperationData().MapTo <SelectListItem>();
            viewModel.PeriodeType = pType.ToString();
            viewModel.Year        = request.Year;
            viewModel.ConfigType  = ConfigType.OperationData.ToString();
            return(ConvertToExcelFile(paramViewModel, viewModel));
        }
        public ActionResult UpdatePartial(int id, string periodeType)
        {
            int         pmsSummaryId = id;
            PeriodeType pType        = (PeriodeType)Enum.Parse(typeof(PeriodeType), periodeType);

            var request = new GetKpiAchievementsRequest {
                PeriodeType = pType, PmsSummaryId = pmsSummaryId
            };
            var    response = _kpiAchievementService.GetKpiAchievements(request);
            string view     = pType == PeriodeType.Yearly ? "_yearly" : "_monthly";

            if (response.IsSuccess)
            {
                var viewModel = response.MapTo <UpdateKpiAchievementsViewModel>();
                viewModel.PeriodeType  = pType.ToString();
                viewModel.PmsSummaryId = pmsSummaryId;
                return(PartialView(view, viewModel));
            }

            return(Content(response.Message));
        }
        public ActionResult Update(int id, string periodeType)
        {
            int         pmsSummaryId = id;
            PeriodeType pType        = string.IsNullOrEmpty(periodeType)
                            ? PeriodeType.Yearly
                            : (PeriodeType)Enum.Parse(typeof(PeriodeType), periodeType);
            var request = new GetKpiAchievementsRequest {
                PeriodeType = pType, PmsSummaryId = pmsSummaryId
            };
            var response = _kpiAchievementService.GetKpiAchievements(request);

            if (response.IsSuccess)
            {
                var viewModel = response.MapTo <UpdateKpiAchievementsViewModel>();
                viewModel.PmsSummaryId = pmsSummaryId;
                viewModel.PeriodeType  = pType.ToString();
                viewModel.PeriodeTypes = _dropdownService.GetPeriodeTypesForKpiTargetAndAchievement().MapTo <SelectListItem>();
                return(View("Update", viewModel));
            }
            return(base.ErrorPage(response.Message));
        }
Exemple #6
0
        private DisplayKpiInformationViewModel GetGeneralDerKpiInformations(int numberOfKpi, GetDerLayoutitemResponse layout, DateTime date, PeriodeType periodeType)
        {
            var viewModel = new DisplayKpiInformationViewModel();

            for (int i = 0; i < numberOfKpi; i++)
            {
                var kpiInformationVm = new DisplayKpiInformationViewModel.KpiInformationViewModel { Position = i };
                var item = layout.KpiInformations.FirstOrDefault(x => x.Position == i) ??
                           new GetDerLayoutitemResponse.KpiInformationResponse { Position = i };
                if (item.Kpi != null)
                {
                    kpiInformationVm = item.MapTo<DisplayKpiInformationViewModel.KpiInformationViewModel>();
                    //var achievement = _kpiAchievementService.GetKpiAchievement(item.Kpi.Id, date, periodeType);
                    //kpiInformationVm.DerItemValue = achievement.MapTo<DerItemValueViewModel>();
                    if (item.ConfigType.Equals(ConfigType.KpiAchievement))
                    {
                        var achievement = new Services.Responses.KpiAchievement.GetKpiAchievementResponse();
                        if (item.Kpi.Id == 62)
                        {
                            achievement = _kpiAchievementService.GetKpiAchievement(item.Kpi.Id, new DateTime(date.Year, date.Month, 1), PeriodeType.Monthly);
                        }
                        else if (item.Kpi.Id == 385)
                        {
                            var prevMonth = date.AddMonths(-1);
                            achievement = _kpiAchievementService.GetKpiAchievement(item.Kpi.Id, new DateTime(prevMonth.Year, prevMonth.Month, 1), PeriodeType.Monthly);
                        }
                        else
                        {
                            achievement = _kpiAchievementService.GetKpiAchievement(item.Kpi.Id, date, periodeType);
                        }
                        kpiInformationVm.DerItemValue = achievement.MapTo<DerItemValueViewModel>();
                    }
                    else if (item.ConfigType.Equals(ConfigType.KpiTarget))
                    {
                        var target = _kpiTargetService.GetKpiTargetByValue(new GetKpiTargetRequestByValue { Kpi_Id = item.Kpi.Id, periode = date, PeriodeType = periodeType.ToString() });
                        kpiInformationVm.DerItemValue = target.MapTo<DerItemValueViewModel>();
                    }
                }

                viewModel.KpiInformationViewModels.Add(kpiInformationVm);
            }

            return viewModel;
        }
        private ReadExcelFileModel _ReadExcelFile(string filename)
        {
            var response = new ReadExcelFileModel();

            try
            {
                int inserted = 0;
                int skipped  = 0;
                int rejected = 0;
                var listPrev = new List <UpdateKpiAchievementsViewModel.KpiAchievementItem>();

                var      file     = Server.MapPath(filename);
                var      userId   = UserProfile().UserId;
                Workbook workbook = new Workbook();
                using (FileStream stream = new FileStream(file, FileMode.Open))
                {
                    workbook.LoadDocument(stream, DevExpress.Spreadsheet.DocumentFormat.OpenXml);
                    foreach (var worksheet in workbook.Worksheets)
                    {
                        string[] name = worksheet.Name.Split('_');
                        //if (name.Count() > 0 && name[0] != "Sheet1" && (name[0] == PeriodeType.Daily.ToString() || name[0] == PeriodeType.Hourly.ToString() || name[0] == PeriodeType.Monthly.ToString() || name[0] == PeriodeType.Weekly.ToString() || name[0] == PeriodeType.Yearly.ToString()))
                        if (name[0] == "Daily" || name[0] == "Monthly" || name[0] == "Yearly")
                        {
                            string      periodType = name[0];
                            PeriodeType pType      = string.IsNullOrEmpty(periodType)
                                                    ? PeriodeType.Yearly
                                                    : (PeriodeType)Enum.Parse(typeof(PeriodeType), periodType);
                            string   period = name[name.Count() - 1];
                            string[] periodes = null;
                            int      tahun, bulan;
                            //validate and switch value by periodType
                            if (periodType != period && !string.IsNullOrEmpty(period))
                            {
                                switch (periodType)
                                {
                                case "Daily":
                                    periodes = period.Split('-');
                                    tahun    = int.Parse(periodes[0]);
                                    bulan    = int.Parse(periodes[periodes.Count() - 1]);
                                    break;

                                case "Monthly":
                                    tahun = int.Parse(period);
                                    break;

                                case "Yearly":
                                default:
                                    break;
                                }
                            }

                            //coba baca value
                            workbook.Worksheets.ActiveWorksheet = worksheet;
                            //get row

                            Range    range      = worksheet.GetUsedRange();
                            int      rows       = range.RowCount;
                            int      column     = range.ColumnCount - 2;
                            int      kpiId      = 0;
                            DateTime periodData = new DateTime();
                            double?  nilai      = null;
                            for (int i = 1; i < rows; i++)
                            {
                                //get rows
                                for (int j = 0; j < column; j++)
                                {
                                    bool fromExistedToNull    = false;
                                    var  prepareDataContainer = new UpdateKpiAchievementsViewModel.KpiAchievementItem();
                                    //get rows header and period
                                    if (j == 0)
                                    {
                                        if (worksheet.Cells[i, j].Value.Type == CellValueType.Numeric)
                                        {
                                            kpiId = int.Parse(worksheet.Cells[i, j].Value.ToString());
                                        }
                                    }
                                    else if (j > 1)
                                    {
                                        if (worksheet.Cells[0, j].Value.Type == CellValueType.DateTime)
                                        {
                                            periodData = DateTime.Parse(worksheet.Cells[0, j].Value.ToString());
                                        }

                                        if (worksheet.Cells[i, j].Value.Type == CellValueType.Numeric)
                                        {
                                            nilai = double.Parse(worksheet.Cells[i, j].Value.ToString());
                                        }
                                        else if (worksheet.Cells[i, j].Value.Type == CellValueType.Text)
                                        {
                                            fromExistedToNull = true;
                                            nilai             = null;
                                        }
                                        else
                                        {
                                            nilai = null;
                                        }

                                        bool isValidKpi = false;
                                        if (!this.UserProfile().IsSuperAdmin)
                                        {
                                            skipped++;
                                            isValidKpi =
                                                _kpiService.IsValidKpi(new Services.Requests.Kpi.GetKpiByRole
                                            {
                                                RoleId = this.UserProfile().RoleId
                                            });
                                        }
                                        else
                                        {
                                            isValidKpi = true;
                                        }

                                        if (isValidKpi && (nilai != null || fromExistedToNull))
                                        {
                                            prepareDataContainer.Value       = nilai.ToString();
                                            prepareDataContainer.KpiId       = kpiId;
                                            prepareDataContainer.Periode     = periodData;
                                            prepareDataContainer.PeriodeType = pType;
                                            var oldKpiAchievement =
                                                _kpiAchievementService.GetKpiAchievementByValue(
                                                    new GetKpiAchievementRequestByValue
                                            {
                                                KpiId       = kpiId,
                                                Periode     = periodData,
                                                PeriodeType = periodType
                                            });
                                            if (oldKpiAchievement.IsSuccess)
                                            {
                                                prepareDataContainer.Id = oldKpiAchievement.Id;
                                            }
                                            else
                                            {
                                                var fixedError = false;
                                                if (oldKpiAchievement.ExceptionType != null &&
                                                    oldKpiAchievement.ExceptionType ==
                                                    typeof(InvalidOperationException))
                                                {
                                                    //var delete = _kpiAchievementService.DeleteKpiAchievement(kpiId, periodData, pType);
                                                    var delete = _kpiAchievementService.DeleteKpiAchievement(new DeleteKpiAchievementRequest {
                                                        kpiId          = kpiId,
                                                        periode        = periodData,
                                                        periodeType    = pType,
                                                        ControllerName = "KPI Achievement",
                                                        ActionName     = "Read Excel File",
                                                        UserId         = UserProfile().UserId
                                                    });
                                                    fixedError = delete.IsSuccess;
                                                }

                                                if (!fixedError)
                                                {
                                                    throw new Exception(string.Format(@"KPI with id {0} and periode {1} and periode type {2} can't be inserted", kpiId, periodData.ToShortDateString(), pType.ToString()));
                                                }
                                            }
                                            var request = prepareDataContainer.MapTo <UpdateKpiAchievementItemRequest>();
                                            request.UserId     = userId;
                                            request.UpdateFrom = "KPIAchievementForm";
                                            var insert = _kpiAchievementService.UpdateKpiAchievementItem(request);
                                            if (insert.IsSuccess)
                                            {
                                                inserted++;
                                            }
                                            else
                                            {
                                                rejected++;
                                            }
                                        }
                                    }
                                }
                            }

                            response.isSuccess = true;
                            response.Message   = "Success :" + inserted + "\r\n";
                            response.Message  += "Skipped :" + skipped + "\r\n";
                            response.Message  += "Rejected :" + rejected + "\r\n";
                        }
                        else
                        {
                            response.isSuccess = false;
                            response.Message   = "File Not Valid";
                            break;
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                response.Message   = exception.Message;
                response.isSuccess = false;
            }

            return(response);
        }