Do not allow entry of duplicate attribute value for individual attribute (user code)
- public UserCode UpdateUserDefinedField(UserCode userCode, User user)
- {
- var dbCode = DbContext.UserCodes.Find(userCode.Id);
- dbCode.Name = userCode.Name;
- dbCode.Description = userCode.Description;
- if (dbCode.UserCodeTypeId != userCode.UserCodeTypeId)
- if (dbCode.UserCodeValidValues.Any(x=>x.UserCodeValues.Any()))
- throw new NotSupportedException("You cannot change the attribute type because it has values in use.");
- dbCode.UserCodeTypeId = userCode.UserCodeTypeId;
- dbCode.IsFreeformTextValue = userCode.IsFreeformTextValue;
- dbCode.IsMandatory = userCode.IsMandatory;
-
- foreach (UserCodeValidValue ucvv in userCode.UserCodeValidValues)
- {
- UserCodeValidValue compare = dbCode.UserCodeValidValues.Where(x => x.Id == ucvv.Id).FirstOrDefault();
- if (compare != null)
- {
- if (ucvv.Description != compare.Description || ucvv.CodeValue != compare.CodeValue)
- {
- compare.CodeValue = ucvv.CodeValue;
- compare.Description = ucvv.Description;
- UpdateWithUser(compare, user.UserId, "UpdateUserDefinedField");
- }
- }
- else
- {
- ucvv.UserCode = dbCode;
- AddWithUser(ucvv, user.UserId, "UpdateUserDefinedField");
- }
- }
- UpdateWithUser(dbCode, user.UserId, "UpdateUserDefinedField");
- return dbCode;
- }
