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