示例#1
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#5
0
        /// <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);
        }
示例#8
0
        /// <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);
        }
示例#9
0
        /// <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);
        }