/// <summary> /// Generate evaluation template and user score evaluation. /// </summary> /// <param name="workbook">The npoi workbook interface.</param> /// <param name="sheet1">The npoi sheet interface.</param> /// <param name="rowIndex">The row target index.</param> /// <param name="weigthingKey">The weighting key condition max score.</param> /// <param name="summary">The evaluation summary.</param> /// <param name="evaTemplate">The evaluation template.</param> /// <param name="evaLogs">The user evaluation log collection.</param> private void GenerateCriteriaContent(IWorkbook workbook, ISheet sheet1, ref int rowIndex, string weigthingKey, SummaryEvaluationViewModel summary, EvaluationTemplateDisplayViewModel evaTemplate, UserEvaluationDetailViewModel evaLogs) { foreach (var item in evaTemplate.Criteria.CriteriaGroups) { rowIndex++; string criteriaGroup = $" {item.Sequence}. {item.KpiGroupNameTh}"; string score = this.GetScore(evaLogs, item.KpiGroupId, 0); IRow kpiGroupContent = sheet1.CreateRow(rowIndex); ExcelService.CreateContentCell(workbook, sheet1, kpiGroupContent, 2, criteriaGroup, horizontalAlignment: HorizontalAlignment.Left); ExcelService.SetCellContentStyle(workbook, kpiGroupContent, 3, 3); ExcelService.CreateContentCell(workbook, sheet1, kpiGroupContent, 4, score); ExcelService.CreateContentCell(workbook, sheet1, kpiGroupContent, 5, this.GetMaxScore(weigthingKey, item.MaxScore)); sheet1.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 2, 3)); foreach (var subItem in item.CriteriaItems) { rowIndex++; string criteriaItem = $" {item.Sequence}.{subItem.Sequence}. {subItem.KpiNameTh}"; string subScore = this.GetScore(evaLogs, item.KpiGroupId, subItem.KpiId.Value); IRow kpiContent = sheet1.CreateRow(rowIndex); ExcelService.CreateContentCell(workbook, sheet1, kpiContent, 2, criteriaItem, horizontalAlignment: HorizontalAlignment.Left); ExcelService.SetCellContentStyle(workbook, kpiContent, 3, 3); ExcelService.CreateContentCell(workbook, sheet1, kpiContent, 4, score); ExcelService.CreateContentCell(workbook, sheet1, kpiContent, 5, this.GetMaxScore(weigthingKey, subItem.MaxScore)); sheet1.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 2, 3)); } } }
/// <summary> /// Get evaluation template for display. /// </summary> /// <param name="id">The identity of evaluation template.</param> /// <returns></returns> public EvaluationTemplateDisplayViewModel LoadTemplate(int id) { var result = new EvaluationTemplateDisplayViewModel(); var evaTemplate = _unitOfWork.GetRepository <EvaluationTemplate>().GetCache(x => x.Id == id).FirstOrDefault(); if (evaTemplate != null) { result.Name = evaTemplate.EvaluationTemplateName; result.Criteria = _criteria.GetDetail(evaTemplate.CriteriaId.Value); result.LevelPoint = _levelPoint.GetDetail(evaTemplate.LevelPointId.Value); result.Grade = _grade.GetDetail(evaTemplate.GradeId.Value); result.MaxTotalScore = this.GetMaxTotalScore(result.LevelPoint.WeightingKey, result.LevelPoint.LevelPointItems.Count, result.Criteria); } return(result); }