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; } }