/// <summary> /// Inital evaluation data to view model. /// </summary> /// <param name="data">The evaluation collection data.</param> /// <returns></returns> private IEnumerable <EvaluationReportViewModel> InitalViewModel(IEnumerable <Data.Pocos.Evaluation> data) { var result = new List <EvaluationReportViewModel>(); var vendors = data.Select(x => x.VendorNo).ToArray(); var vendorList = _unitOfWork.GetRepository <Data.Pocos.Vendor>().GetCache(x => vendors.Contains(x.VendorNo)); var comList = _unitOfWork.GetRepository <Hrcompany>().GetCache(); var purOrgList = _unitOfWork.GetRepository <PurchaseOrg>().GetCache(); var valueHelp = _unitOfWork.GetRepository <ValueHelp>().GetCache(x => x.ValueType == ConstantValue.ValueTypeWeightingKey); var gradeList = _unitOfWork.GetRepository <GradeItem>().GetCache(); var templateList = _unitOfWork.GetRepository <EvaluationTemplate>().GetCache(); foreach (var item in data) { result.Add(new EvaluationReportViewModel { Id = item.Id, CompanyName = comList.FirstOrDefault(x => x.SapcomCode == item.ComCode)?.LongText, VendorName = vendorList.FirstOrDefault(x => x.VendorNo == item.VendorNo)?.VendorName, PurchaseOrgName = purOrgList.FirstOrDefault(x => x.PurchaseOrg1 == item.PurchasingOrg)?.PurchaseName, WeightingKey = valueHelp.FirstOrDefault(x => x.ValueKey == item.WeightingKey)?.ValueText, TotalScore = item.TotalScore.Value, GradeName = this.GetGradeName(item.TotalScore.Value, gradeList, templateList.FirstOrDefault(x => x.Id == item.EvaluationTemplateId)), IsPrintReport = item.IsPrintReport ?? false, IsSendEmail = item.IsSendEmail ?? false, SendEmailDate = item.SendEmailDate.HasValue ? UtilityService.DateTimeToString(item.SendEmailDate.Value, ConstantValue.DateTimeFormat) : string.Empty }); } return(result); }
/// <summary> /// Save evaluation information to sap result. /// </summary> /// <param name="evaInfo">The evaluation information.</param> /// <returns></returns> private ResultViewModel SendToEvaluationSapResult(Data.Pocos.Evaluation evaInfo) { var result = new ResultViewModel(); try { var evaluationResult = _summaryEvaluation.GetDetail(evaInfo.Id); var periodItem = _unitOfWork.GetRepository <PeriodItem>().GetCache(x => x.Id == evaInfo.PeriodItemId).FirstOrDefault(); var sapResult = new EvaluationSapResult { ComCode = evaInfo.ComCode, PurOrg = evaInfo.PurchasingOrg, SendToSap = false, Vendor = evaInfo.VendorNo, WeightKey = evaInfo.WeightingKey, YearMonth = UtilityService.DateTimeToString(periodItem.EndEvaDate.Value, "yy.MM") }; this.DeclareScore(sapResult, evaluationResult.Summarys); _unitOfWork.GetRepository <EvaluationSapResult>().Add(sapResult); } catch (Exception ex) { result = UtilityService.InitialResultError(ex.Message); _logger.LogError(ex, "The Errors Message : "); } return(result); }
/// <summary> /// Get period group item. /// </summary> /// <param name="periodId">The identity period group.</param> /// <returns></returns> private IEnumerable <PeriodItemViewModel> GetPeriodItem(int periodId) { var data = _mapper.Map <IEnumerable <PeriodItem>, IEnumerable <PeriodItemViewModel> >( _unitOfWork.GetRepository <PeriodItem>().GetCache(x => x.PeriodId == periodId)); foreach (var item in data) { item.StartEvaDateString = UtilityService.DateTimeToString(item.StartEvaDate, ConstantValue.DateTimeFormat); item.EndEvaDateString = UtilityService.DateTimeToString(item.EndEvaDate, ConstantValue.DateTimeFormat); } return(data); }
/// <summary> /// Get workflow delegate detail item. /// </summary> /// <param name="id">The identity of workflow delegate.</param> /// <returns></returns> public WorkflowDelegateRequestModel GetDelegateInbox() { var data = _unitOfWork.GetRepository <WorkflowDelegate>().Get(x => x.FromUser == _token.AdUser).FirstOrDefault(); return((data != null) ? new WorkflowDelegateRequestModel { Id = data.Id, ToUser = data.ToUser, StartDate = UtilityService.DateTimeToString(data.StartDate.Value, ConstantValue.DateTimeFormat), EndDate = UtilityService.DateTimeToString(data.EndDate.Value, ConstantValue.DateTimeFormat) } : null); }
/// <summary> /// Get Detail of Evaluation Percentage Config. /// </summary> /// <param name="id">The identity EvaluatorGroup.</param> /// <returns></returns> public EvaluationPercentageConfigViewModel GetDetail(int id) { var data = _unitOfWork.GetRepository <EvaluationPercentageConfig>().GetCache(x => x.Id == id).FirstOrDefault(); return(new EvaluationPercentageConfigViewModel { Id = data.Id, UserPercentage = data.UserPercentage, PurchasePercentage = data.PurchasePercentage, StartDate = UtilityService.DateTimeToString(data.StartDate.Value, ConstantValue.DateTimeFormat), EndDate = data.EndDate.HasValue ? UtilityService.DateTimeToString(data.EndDate.Value, ConstantValue.DateTimeFormat) : string.Empty }); }
/// <summary> /// Generate main content table. /// </summary> /// <param name="workbook">The npoi workbook interface.</param> /// <param name="sheet1">The npoi sheet interface.</param> /// <param name="summaryList">The evaluation summary result. </param> /// <param name="evaluationList">The evaluation data collection.</param> /// <param name="rowIndex">The row data index.</param> /// <param name="cellHeaderIndex">The max cell table generate.</param> private void GenerateContentTable(IWorkbook workbook, ISheet sheet1, SummaryEvaluationViewModel summary, Data.Pocos.Evaluation evaluation, ref int rowIndex, PeriodItem periodItem, IEnumerable <Hremployee> empList) { rowIndex++; IRow contentRow = sheet1.CreateRow(rowIndex); int cellContentIndex = 0; string[] mainContent = new string[] { evaluation.DocNo, evaluation.ComCode, UtilityService.DateTimeToString(periodItem.StartEvaDate.Value, "dd.MM.yyyy"), UtilityService.DateTimeToString(periodItem.EndEvaDate.Value, "dd.MM.yyyy"), periodItem.PeriodName, evaluation.VendorNo, summary.VendorName, summary.WeightingKey, summary.PurchasingOrgName, }; foreach (var content in mainContent) { ExcelService.CreateContentCell(workbook, sheet1, contentRow, cellContentIndex, content); cellContentIndex++; } rowIndex += 2; var evaTemplate = _evaluationTemplateBll.LoadTemplate(evaluation.EvaluationTemplateId.Value); this.GenerateScoreHeader(workbook, sheet1, ref rowIndex, summary); foreach (var user in summary.UserLists) { var emp = empList.FirstOrDefault(x => x.Aduser == user.AdUser); string evaluatorName = $" คุณ{emp?.FirstnameTh} {emp?.LastnameTh}"; IRow userContent = sheet1.CreateRow(rowIndex); ExcelService.CreateContentCell(workbook, sheet1, userContent, 1, evaluatorName, horizontalAlignment: HorizontalAlignment.Left); ExcelService.SetCellContentStyle(workbook, userContent, 2, 2); sheet1.AddMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 1, 2)); var evaLogs = user.EvaluationLogs.FirstOrDefault(); this.GenerateCriteriaContent(workbook, sheet1, ref rowIndex, evaluation.WeightingKey, summary, evaTemplate, evaLogs); rowIndex += 2; } }
/// <summary> /// Get Detail of HolidayCalendar year. /// </summary> /// <param name="year">The target holiday year.</param> /// <returns></returns> public HolidayCalendarViewModel GetDetail(string year) { var result = new HolidayCalendarViewModel { Year = year }; var data = _unitOfWork.GetRepository <HolidayCalendar>().GetCache(x => x.Year == year); foreach (var item in data) { result.HolidayList.Add(new HolidayCalendarDetail { HolidayDateString = UtilityService.DateTimeToString(item.HolidayDate.Value, ConstantValue.DateTimeFormat), Description = item.Description }); } return(result); }
/// <summary> /// Get Evaluation Percentage Config list. /// </summary> /// <returns></returns> public IEnumerable <EvaluationPercentageConfigViewModel> GetList() { var result = new List <EvaluationPercentageConfigViewModel>(); var data = _unitOfWork.GetRepository <EvaluationPercentageConfig>().GetCache(); foreach (var item in data) { result.Add(new EvaluationPercentageConfigViewModel { Id = item.Id, UserPercentage = item.UserPercentage, PurchasePercentage = item.PurchasePercentage, StartDate = UtilityService.DateTimeToString(item.StartDate.Value, ConstantValue.DateTimeFormat), EndDate = item.EndDate.HasValue ? UtilityService.DateTimeToString(item.EndDate.Value, ConstantValue.DateTimeFormat) : string.Empty }); } return(result); }
/// <summary> /// Get workflow activity logs. /// </summary> /// <param name="id">The evaluation identity.</param> /// <returns></returns> public IEnumerable <WorkflowActivityViewModel> GetWorkflowActivity(int id) { var result = new List <WorkflowActivityViewModel>(); var empList = _unitOfWork.GetRepository <Hremployee>().GetCache(); var valueHelp = _unitOfWork.GetRepository <ValueHelp>().GetCache(x => x.ValueType == ConstantValue.ValueTypeEvaStatus); var processInstances = _unitOfWork.GetRepository <WorkflowProcessInstance>().Get(x => x.DataId == id && x.ProcessCode == ConstantValue.EvaluationProcessCode); foreach (var item in processInstances) { var workflowSteps = _unitOfWork.GetRepository <WorkflowActivityStep>().GetCache(x => x.ProcessInstanceId == item.ProcessInstanceId && x.Step > 1); foreach (var workflowStep in workflowSteps) { var workflowLog = _unitOfWork.GetRepository <WorkflowActivityLog>().Get(x => x.ProcessInstanceId == workflowStep.ProcessInstanceId && x.Step == workflowStep.Step).FirstOrDefault(); if (workflowLog != null) { result.Add(new WorkflowActivityViewModel { ActionDate = UtilityService.DateTimeToString(workflowLog.ActionDate.Value, ConstantValue.DateTimeFormat), FullName = this.GetFullName(workflowLog.AllocatedUser, workflowLog.ActionUser, empList), Reason = workflowLog.Comment, Status = workflowLog.Action == ConstantValue.WorkflowActionApprove ? "อนุมัติ" : "ไม่อนุมัติ" }); } else { result.Add(new WorkflowActivityViewModel { ActionDate = string.Empty, FullName = this.GetFullName("", workflowStep.ActionUser, empList), Reason = "", Status = "รอการอนุมัติ" }); } } } return(result); }
/// <summary> /// Generate main content table. /// </summary> /// <param name="workbook">The npoi workbook interface.</param> /// <param name="sheet1">The npoi sheet interface.</param> /// <param name="summaryList">The evaluation summary result. </param> /// <param name="evaluationList">The evaluation data collection.</param> /// <param name="rowIndex">The row data index.</param> /// <param name="cellHeaderIndex">The max cell table generate.</param> private void GenerateContentTable(IWorkbook workbook, ISheet sheet1, IEnumerable <SummaryEvaluationViewModel> summaryList, IEnumerable <Data.Pocos.Evaluation> evaluationList, int rowIndex, int cellHeaderIndex) { var periodItemList = _unitOfWork.GetRepository <PeriodItem>().GetCache(); foreach (var item in evaluationList) { rowIndex++; var periodItem = periodItemList.FirstOrDefault(x => x.Id == item.PeriodItemId.Value); IRow contentRow = sheet1.CreateRow(rowIndex); int cellContentIndex = 0; var summary = summaryList.FirstOrDefault(x => x.Id == item.Id); string[] mainContent = new string[] { item.DocNo, item.ComCode, UtilityService.DateTimeToString(periodItem.StartEvaDate.Value, "dd.MM.yyyy"), UtilityService.DateTimeToString(periodItem.EndEvaDate.Value, "dd.MM.yyyy"), item.VendorNo, summary.VendorName, summary.WeightingKey, summary.PurchasingOrgName, summary.UserLists.Count.ToString(), summary.UserLists.Where(x => x.IsAction).Count().ToString(), }; foreach (var content in mainContent) { ExcelService.CreateContentCell(workbook, sheet1, contentRow, cellContentIndex, content); cellContentIndex++; } this.GenerateUserCellContent(summary, ref cellContentIndex, workbook, sheet1, contentRow); if (cellContentIndex < cellHeaderIndex) { ExcelService.SetCellContentStyle(workbook, contentRow, cellContentIndex, cellHeaderIndex - 1); } } }
/// <summary> /// Get evaluation waiting task. /// </summary> /// <returns></returns> private Dictionary <string, List <SummaryEvaWaitingModel> > GetEvaluationWaitingTask() { var result = new Dictionary <string, List <SummaryEvaWaitingModel> >(); var model = _unitOfWork.GetRepository <Evaluation>().Get(x => x.Status == ConstantValue.EvaWaiting); string[] vendors = model.Select(x => x.VendorNo).ToArray(); var vendorList = _unitOfWork.GetRepository <Vendor>().GetCache(x => vendors.Contains(x.VendorNo)); var periodItemList = _unitOfWork.GetRepository <PeriodItem>().GetCache(); var valueHelpList = _unitOfWork.GetRepository <ValueHelp>().GetCache(x => x.ValueType == ConstantValue.ValueTypeWeightingKey); var comList = _unitOfWork.GetRepository <Hrcompany>().GetCache(); foreach (var item in model) { var evaAssignList = _unitOfWork.GetRepository <EvaluationAssign>().Get(x => x.EvaluationId == item.Id && !x.IsAction.Value); foreach (var subItem in evaAssignList) { var vendorInfo = vendorList.FirstOrDefault(x => x.VendorNo == item.VendorNo); var periodItemInfo = periodItemList.FirstOrDefault(x => x.Id == item.PeriodItemId); var company = comList.FirstOrDefault(x => x.SapcomCode == item.ComCode); var valueHelp = valueHelpList.FirstOrDefault(x => x.ValueKey == item.WeightingKey); if (result.Any(x => x.Key == subItem.AdUser)) { result[subItem.AdUser].Add( this.InitialWaitingTask(item.DocNo, company.LongText, vendorInfo.VendorName, valueHelp.ValueText, UtilityService.DateTimeToString(periodItemInfo.StartEvaDate.Value, ConstantValue.DateTimeFormat), UtilityService.DateTimeToString(periodItemInfo.EndEvaDate.Value, ConstantValue.DateTimeFormat))); } else { result.Add(subItem.AdUser, new List <SummaryEvaWaitingModel> { this.InitialWaitingTask(item.DocNo, company.LongText, vendorInfo.VendorName, valueHelp.ValueText, UtilityService.DateTimeToString(periodItemInfo.StartEvaDate.Value, ConstantValue.DateTimeFormat), UtilityService.DateTimeToString(periodItemInfo.EndEvaDate.Value, ConstantValue.DateTimeFormat)) }); } } } return(result); }
/// <summary> /// Initial Evaluation Form list information viewmodel. /// </summary> /// <param name="comList">The company information values.</param> /// <param name="purList">The purchasing org information values.</param> /// <param name="periodList">The period information values.</param> /// <param name="vendorList">The vendor list information values.</param> /// <param name="evaluationTemplateList">The evaluation template information values.</param> /// <param name="data">The evaluation task owner data.</param> /// <param name="isAction">The evaluator is action or not.</param> /// <returns></returns> private IEnumerable <EvaluationViewModel> InitialEvaluationViewModel( IEnumerable <Hrcompany> comList, IEnumerable <PurchaseOrg> purList, IEnumerable <PeriodItem> periodList, IEnumerable <Data.Pocos.Vendor> vendorList, IEnumerable <EvaluationTemplate> evaluationTemplateList, IEnumerable <Data.Pocos.Evaluation> data, bool isAction) { var result = new List <EvaluationViewModel>(); var valueHelpList = _unitOfWork.GetRepository <ValueHelp>().GetCache(x => x.ValueType == ConstantValue.ValueTypeWeightingKey); foreach (var item in data) { var periodTemp = periodList.FirstOrDefault(x => x.Id == item.PeriodItemId); var valueHelp = valueHelpList.FirstOrDefault(x => x.ValueKey == item.WeightingKey); var status = this.GetStatus(isAction, periodTemp); result.Add(new EvaluationViewModel { Id = item.Id, ComCode = item.ComCode, DocNo = item.DocNo, EvaluationTemplateId = item.EvaluationTemplateId.Value, PurchasingOrg = item.PurchasingOrg, VendorNo = item.VendorNo, WeightingKey = item.WeightingKey, PeriodItemId = item.PeriodItemId.Value, Status = status[0], //Display Value. CompanyName = comList.FirstOrDefault(x => x.SapcomCode == item.ComCode)?.LongText, StartEvaDateString = UtilityService.DateTimeToString(periodTemp.StartEvaDate.Value, ConstantValue.DateTimeFormat), EndEvaDateString = UtilityService.DateTimeToString(periodTemp.EndEvaDate.Value, ConstantValue.DateTimeFormat), PurchasingOrgName = purList.FirstOrDefault(x => x.PurchaseOrg1 == item.PurchasingOrg)?.PurchaseName, VendorName = vendorList.FirstOrDefault(x => x.VendorNo == item.VendorNo)?.VendorName, EvaluationTemplateName = evaluationTemplateList.FirstOrDefault(x => x.Id == item.EvaluationTemplateId)?.EvaluationTemplateName, StatusName = status[1], Categorys = item.Category.Split(','), Remark = item.Remark, WeightingKeyName = valueHelp.ValueText, CreateDate = UtilityService.DateTimeToString(item.CreateDate.Value, ConstantValue.DateTimeFormat) }); } return(result); }