public async Task <IHttpActionResult> UpdateScaleAnswerSet(
            int customerId,
            Guid scaleAnswerSetId,
            UpdateScaleAnswerSetRequestDto model
            )
        {
            var status = await scaleAnswerSetHelper.Update(customerId, scaleAnswerSetId, model);

            if (status == UpdateScaleAnswerSetStatus.NotFound)
            {
                return(Content(HttpStatusCode.NotFound,
                               new ErrorResponseDto()
                {
                    Error = ErrorCode.InvalidRequest,
                    Message = ErrorCode.InvalidRequest.Description(),
                    Details = status.GetConcatString()
                }
                               ));
            }

            if (!status.HasFlag(UpdateScaleAnswerSetStatus.Success))
            {
                return(Content(
                           HttpStatusCode.BadRequest,
                           new ErrorResponseDto()
                {
                    Error = ErrorCode.InvalidRequest,
                    Message = ErrorCode.InvalidRequest.Description(),
                    Details = status.GetConcatString()
                }
                           ));
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <summary>
        /// Updates the scale answer set.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="customerId">The customer identifier.</param>
        /// <param name="token">The token.</param>
        public async Task UpdateScaleAnswerSet(UpdateScaleAnswerSetRequestDto request, int customerId, string token)
        {
            var url = string.Format("api/{0}/answer-sets/scale/{1}", customerId, request.Id);

            await apiClient.SendRequestAsync(url, request, Method.PUT, null, token);
        }
예제 #4
0
        /// <summary>
        /// Updates the specified identifier.
        /// </summary>
        /// <param name="customerId">The customer identifier.</param>
        /// <param name="scaleAnswerSetId">The scale answer set identifier.</param>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public async Task <UpdateScaleAnswerSetStatus> Update(int customerId, Guid scaleAnswerSetId, UpdateScaleAnswerSetRequestDto model)
        {
            var status = ValidateUpdateLabels(model);

            if (status > 0)
            {
                return(status);
            }

            var answerSet = Mapper.Map <ScaleAnswerSet>(model);

            answerSet.Id         = scaleAnswerSetId;
            answerSet.CustomerId = customerId;
            answerSet.Tags       = await tagsService.BuildTagsList(customerId, model.Tags);

            var lowLabel = Mapper.Map <LowLabelScaleAnswerSetString>(model.Labels.LowLabel);

            lowLabel.Language = careElementContext.DefaultLanguage;

            if (model.Labels.LowLabel.AudioFileMedia != null)
            {
                lowLabel.AudioFileMedia = await mediaFileHelper.CreateMediaFile(model.Labels.LowLabel.AudioFileMedia);
            }

            answerSet.LowLabelScaleAnswerSetStrings.Add(lowLabel);

            // Mid is optional
            if (model.Labels.MidLabel != null)
            {
                var midLabel = Mapper.Map <MidLabelScaleAnswerSetString>(model.Labels.MidLabel);
                midLabel.Language = careElementContext.DefaultLanguage;
                if (model.Labels.MidLabel.AudioFileMedia != null)
                {
                    midLabel.AudioFileMedia = await mediaFileHelper.CreateMediaFile(model.Labels.MidLabel.AudioFileMedia);
                }
                answerSet.MidLabelScaleAnswerSetStrings.Add(midLabel);
            }

            var highLabel = Mapper.Map <HighLabelScaleAnswerSetString>(model.Labels.HighLabel);

            highLabel.Language = careElementContext.DefaultLanguage;
            if (model.Labels.HighLabel.AudioFileMedia != null)
            {
                highLabel.AudioFileMedia = await mediaFileHelper.CreateMediaFile(model.Labels.HighLabel.AudioFileMedia);
            }
            answerSet.HighLabelScaleAnswerSetStrings.Add(highLabel);

            status = await scaleAnswerSetService.Update(customerId, scaleAnswerSetId, answerSet);

            await globalSearchCacheHelper.AddOrUpdateEntry(customerId, Mapper.Map <ScaleAnswerSet, SearchEntryDto>(answerSet));

            await tagsSearchCacheHelper.AddOrUpdateTags(customerId, answerSet.Tags.Select(t => t.Name).ToList());

            var unusedTags = await tagsService.RemoveUnusedTags(customerId);

            await tagsSearchCacheHelper.RemoveTags(customerId, unusedTags);

            return(status);
        }
 /// <summary>
 /// Updates the scale answer set.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <param name="customerId">The customer identifier.</param>
 /// <param name="token">The token.</param>
 public async Task UpdateScaleAnswerSet(UpdateScaleAnswerSetRequestDto request, int customerId, string token)
 {
     await healthLibraryDataProvider.UpdateScaleAnswerSet(request, customerId, token);
 }