public UpdatePmsSummaryResponse UpdatePmsSummary(UpdatePmsSummaryRequest request) { var response = new UpdatePmsSummaryResponse(); try { var updatedPmsSummary = request.MapTo<PmsSummary>(); var existedPmsSummary = DataContext.PmsSummaries .Where(x => x.Id == request.Id) .Include(x => x.ScoreIndicators) .Single(); var existedPmsSummaryEntry = DataContext.Entry(existedPmsSummary); existedPmsSummaryEntry.CurrentValues.SetValues(updatedPmsSummary); foreach (var scoreIndicator in updatedPmsSummary.ScoreIndicators) { var existedScoreIndicator = existedPmsSummary.ScoreIndicators.SingleOrDefault(x => x.Id == scoreIndicator.Id && x.Id != 0); if (existedScoreIndicator != null) { var scoreIndicatorEntry = DataContext.Entry(existedScoreIndicator); scoreIndicatorEntry.CurrentValues.SetValues(scoreIndicator); } else { scoreIndicator.Id = 0; existedPmsSummary.ScoreIndicators.Add(scoreIndicator); } } foreach (var item in existedPmsSummary.ScoreIndicators.Where(x => x.Id != 0).ToList()) { if (updatedPmsSummary.ScoreIndicators.All(x => x.Id != item.Id)) { DataContext.ScoreIndicators.Remove(item); } } DataContext.SaveChanges(); response.IsSuccess = true; response.Message = "Pms Summary has been updated"; } catch (DbUpdateException dbUpdateException) { response.Message = dbUpdateException.Message; } return response; }
public UpdatePmsSummaryResponse UpdatePmsSummary(UpdatePmsSummaryRequest request) { var response = new UpdatePmsSummaryResponse(); try { var isExisted = DataContext.PmsSummaries.FirstOrDefault(x => x.IsActive); if (request.IsActive && isExisted != null && isExisted.Id != request.Id) { response.Message = string.Format(@"There is one Pms Summary has actived already, You have to unactivate first."); return response; } var updatedPmsSummary = request.MapTo<PmsSummary>(); var existedPmsSummary = DataContext.PmsSummaries .Where(x => x.Id == request.Id) .Include(x => x.ScoreIndicators) .Single(); string expression; bool isExpressionValid = IsExpressionValid(updatedPmsSummary.ScoreIndicators, out expression); if (!isExpressionValid) { response.Message = string.Format(@"This Score Indicator ({0}) Is Not Valid", expression); return response; } var existedPmsSummaryEntry = DataContext.Entry(existedPmsSummary); existedPmsSummaryEntry.CurrentValues.SetValues(updatedPmsSummary); foreach (var scoreIndicator in updatedPmsSummary.ScoreIndicators) { var existedScoreIndicator = existedPmsSummary.ScoreIndicators.SingleOrDefault(x => x.Id == scoreIndicator.Id && x.Id != 0); if (existedScoreIndicator != null) { var scoreIndicatorEntry = DataContext.Entry(existedScoreIndicator); scoreIndicatorEntry.CurrentValues.SetValues(scoreIndicator); } else { scoreIndicator.Id = 0; existedPmsSummary.ScoreIndicators.Add(scoreIndicator); } } foreach (var item in existedPmsSummary.ScoreIndicators.Where(x => x.Id != 0).ToList()) { if (updatedPmsSummary.ScoreIndicators.All(x => x.Id != item.Id)) { DataContext.ScoreIndicators.Remove(item); } } DataContext.SaveChanges(); response.IsSuccess = true; response.Message = "Pms Summary has been updated"; } catch (DbUpdateException dbUpdateException) { response.Message = dbUpdateException.Message; } return response; }