private UpdateScaleAnswerSetStatus ValidateUpdateLabels(UpdateScaleAnswerSetRequestDto model) { UpdateScaleAnswerSetStatus status = 0; if (string.IsNullOrEmpty(model.Labels.HighLabel.Value)) { status |= UpdateScaleAnswerSetStatus.HighLabelIsRequired; } if (string.IsNullOrEmpty(model.Labels.LowLabel.Value)) { status |= UpdateScaleAnswerSetStatus.LowLabelIsRequired; } return(status); }
/// <summary> /// Updates the specified answer set. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="scaleAnswerSetId">The scale answer set identifier.</param> /// <param name="answerSet">The answer set.</param> /// <returns></returns> public async Task <UpdateScaleAnswerSetStatus> Update(int customerId, Guid scaleAnswerSetId, ScaleAnswerSet answerSet) { var dbEntity = await Get(customerId, scaleAnswerSetId); if (dbEntity == null) { return(UpdateScaleAnswerSetStatus.NotFound); } dbEntity.CustomerId = answerSet.CustomerId; dbEntity.Tags.RemoveRange(dbEntity.Tags.ToList()); dbEntity.Tags.AddRange(answerSet.Tags.ToList()); dbEntity.Name = answerSet.Name; dbEntity.HighValue = answerSet.HighValue; dbEntity.LowValue = answerSet.LowValue; var lowLabel = answerSet.LowLabelScaleAnswerSetStrings.First(); var midLabel = answerSet.MidLabelScaleAnswerSetStrings.FirstOrDefault(); var highLabel = answerSet.HighLabelScaleAnswerSetStrings.First(); var dbLowLabel = dbEntity.LowLabelScaleAnswerSetStrings.FirstOrDefault( l => l.Language == lowLabel.Language); var dbHighLabel = dbEntity.HighLabelScaleAnswerSetStrings.FirstOrDefault( l => l.Language == highLabel.Language); UpdateScaleAnswerSetStatus status = 0; if (dbLowLabel == null) { status = status | UpdateScaleAnswerSetStatus.LowLabelLanguageNotMatch; } if (dbHighLabel == null) { status = status | UpdateScaleAnswerSetStatus.HighLabelLanguageNotMatch; } if (status > 0) { return(status); } if (midLabel != null) { var dbMidLabel = dbEntity.MidLabelScaleAnswerSetStrings .FirstOrDefault(l => l.Language == midLabel.Language); if (dbMidLabel == null) { dbMidLabel = new MidLabelScaleAnswerSetString(); UpdateLabelFields(midLabel, dbMidLabel); dbEntity.MidLabelScaleAnswerSetStrings.Add(dbMidLabel); } else { UpdateLabelFields(midLabel, dbMidLabel); } } UpdateLabelFields(lowLabel, dbLowLabel); UpdateLabelFields(highLabel, dbHighLabel); scaleAnswerSetRepository.Update(dbEntity); await unitOfWork.SaveAsync(); return(UpdateScaleAnswerSetStatus.Success); }