public bool AddPerformanceDetail(string kpiIDs, Guid performanceTemplateID)
        {
            var    isSuccess = false;
            string status    = string.Empty;

            if (kpiIDs != null && kpiIDs.Any() && performanceTemplateID != Guid.Empty)
            {
                //chức năng thêm và tiêu chí đánh giá
                var listKPI = kpiIDs.Split(',').Select(x => Guid.Parse(x)).ToList();
                using (var context = new VnrHrmDataContext())
                {
                    var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                    if (listKPI.Any())
                    {
                        var performanceDetails = GetAllUseEntity <Eva_PerformanceDetail>(ref status).Where(p => p.IsDelete == null && p.PerformanceTemplateID == performanceTemplateID);
                        #region Lay so thu tu lon nhat
                        var maxOrderNumberFollowTemplateId = performanceDetails.Max(m => m.OrderNumber);
                        if (maxOrderNumberFollowTemplateId == null)
                        {
                            maxOrderNumberFollowTemplateId = 0;
                        }
                        #endregion
                        //lay danh sach rate cua KPI
                        var kpiRates = unitOfWork.CreateQueryable <Eva_KPI>(Guid.Empty, m => listKPI.Contains(m.ID)).Select(m => new { m.ID, m.Rate }).ToList();

                        foreach (var kpiID in listKPI)
                        {
                            if (!performanceDetails.Any(p => p.KPIID == kpiID))
                            {
                                //tao moi
                                var kpiRate = kpiRates.Where(m => m.ID == kpiID).Select(m => m.Rate).FirstOrDefault();
                                maxOrderNumberFollowTemplateId++;
                                var performanceDetail = new Eva_PerformanceDetailEntity()
                                {
                                    KPIID = kpiID,
                                    PerformanceTemplateID = performanceTemplateID,
                                    OrderNumber           = maxOrderNumberFollowTemplateId,
                                    Rate = kpiRate
                                };
                                isSuccess = true;
                                Add(performanceDetail);
                            }
                            else
                            {
                                //edit
                            }
                        }
                    }
                }
            }

            return(isSuccess);
        }
        public Eva_PerformanceDetailEntity EditPerformanceDetail(Guid performanceDetailID, double?rate, int?orderNumber)
        {
            string status = string.Empty;

            using (var context = new VnrHrmDataContext())
            {
                var unitOfWork = (IUnitOfWork)(new UnitOfWork(context));
                var performanceDetailEntity = new Eva_PerformanceDetailEntity();
                var performanceDetail       = unitOfWork.CreateQueryable <Eva_PerformanceDetail>(Guid.Empty, m => m.ID == performanceDetailID).FirstOrDefault();
                if (performanceDetail != null)
                {
                    performanceDetailEntity             = performanceDetail.CopyData <Eva_PerformanceDetailEntity>();
                    performanceDetailEntity.Rate        = rate;
                    performanceDetailEntity.OrderNumber = orderNumber;
                    Edit(performanceDetailEntity);
                }
                return(performanceDetailEntity);
            }
        }