Ejemplo n.º 1
0
        private UpdateTextMediaElementStatus ValidateUpdateTextMediaElement(UpdateTextMediaElementRequestDto textMediaElementDto)
        {
            if (textMediaElementDto.Type != null && textMediaElementDto.Media == null &&
                !textMediaElementDto.MediaId.HasValue)
            {
                return(UpdateTextMediaElementStatus.MediaFileMissed);
            }

            if (textMediaElementDto.Media != null && !textMediaElementDto.MediaId.HasValue &&
                textMediaElementDto.Type == null)
            {
                return(UpdateTextMediaElementStatus.MediaMediaType);
            }

            if (textMediaElementDto.Text == null && textMediaElementDto.Media == null && !textMediaElementDto.MediaId.HasValue)
            {
                return(UpdateTextMediaElementStatus.TextOrMediaMissed);
            }

            if (textMediaElementDto.Tags != null &&
                textMediaElementDto.Tags.Count != textMediaElementDto.Tags.Distinct().Count())
            {
                return(UpdateTextMediaElementStatus.DupplicateTags);
            }

            if (textMediaElementDto.Tags != null && textMediaElementDto.Tags.Any() && textMediaElementDto.Tags.Max(t => t.Length) > 30)
            {
                return(UpdateTextMediaElementStatus.TagLengthMustBeLessThan);
            }

            return(UpdateTextMediaElementStatus.Success);
        }
        public async Task <IHttpActionResult> UpdateTextMediaElement(
            int customerId,
            Guid textMediaElementId,
            UpdateTextMediaElementRequestDto textMediaElementDto
            )
        {
            var result = await this.controllerHelper.Update(customerId, textMediaElementId, textMediaElementDto);

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

            if (result != UpdateTextMediaElementStatus.Success)
            {
                return(Content(
                           HttpStatusCode.BadRequest,
                           new ErrorResponseDto()
                {
                    Error = ErrorCode.InvalidRequest,
                    Message = ErrorCode.InvalidRequest.Description(),
                    Details = result.Description()
                }
                           ));
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Updates the specified identifier.
        /// </summary>
        /// <param name="customerId">The customer identifier.</param>
        /// <param name="textMediaElementId">The identifier.</param>
        /// <param name="textMediaElementDto">The text media element dto.</param>
        /// <returns></returns>
        public async Task <UpdateTextMediaElementStatus> Update(
            int customerId,
            Guid textMediaElementId,
            UpdateTextMediaElementRequestDto textMediaElementDto
            )
        {
            var validationResult = ValidateUpdateTextMediaElement(textMediaElementDto);

            if (validationResult != UpdateTextMediaElementStatus.Success)
            {
                return(validationResult);
            }

            var element = await textMediaElementsService.GetElement(customerId, textMediaElementId);

            if (element == null)
            {
                return(UpdateTextMediaElementStatus.NotFound);
            }

            element.Name      = textMediaElementDto.Name;
            element.MediaType = textMediaElementDto.Type;

            element.Tags.RemoveRange(element.Tags.ToList());

            var newElementTags = await this.tagsService.BuildTagsList(customerId, textMediaElementDto.Tags);

            element.Tags.AddRange(newElementTags);

            string language = CareElementRequestContext.Current.DefaultLanguage;

            if (textMediaElementDto.Text != null)
            {
                var localizedString = element.TextLocalizedStrings.FirstOrDefault(s => s.Language == language);

                if (localizedString == null)
                {
                    localizedString = new TextMediaElementString()
                    {
                        TextMediaElement = element
                    };

                    element.TextLocalizedStrings.Add(localizedString);
                    localizedString.Language = language;
                }

                localizedString.Value         = textMediaElementDto.Text.Value;
                localizedString.Description   = textMediaElementDto.Text.Description;
                localizedString.Pronunciation = textMediaElementDto.Text.Pronunciation;

                if (textMediaElementDto.Text.AudioFileMedia != null)
                {
                    if (textMediaElementDto.Text.AudioFileMediaId.HasValue)
                    {
                        localizedString.AudioFileMediaId = textMediaElementDto.Text.AudioFileMediaId.Value;
                    }
                    else
                    {
                        localizedString.AudioFileMedia =
                            await mediaFileHelper.CreateMediaFile(textMediaElementDto.Text.AudioFileMedia);
                    }
                }
                else
                {
                    localizedString.AudioFileMediaId = null;
                }
            }
            else
            {
                element.TextLocalizedStrings.RemoveRange(
                    element.TextLocalizedStrings.Where(s => s.Language == language).ToList()
                    );
            }

            #region Media

            if (element.TextMediaElementsToMedias.Any(m => m.Language == language))
            {
                element.TextMediaElementsToMedias.RemoveRange(
                    element.TextMediaElementsToMedias.Where(m => m.Language == language).ToList()
                    );
            }

            if (textMediaElementDto.MediaId.HasValue)
            {
                var existingMedia = await mediaService.Get(customerId, textMediaElementDto.MediaId.Value);

                if (existingMedia == null)
                {
                    return(UpdateTextMediaElementStatus.MediaFileNotFound);
                }

                var media = new TextMediaElementToMedia()
                {
                    MediaId  = textMediaElementDto.MediaId.Value,
                    Language = language
                };

                element.TextMediaElementsToMedias.Add(media);
            }
            else if (textMediaElementDto.Media != null)
            {
                var media = await mediaFileHelper.CreateMediaFile(textMediaElementDto.Media);

                if (media != null)
                {
                    element.TextMediaElementsToMedias.Add(
                        new TextMediaElementToMedia()
                    {
                        Media    = media,
                        Language = language
                    }
                        );
                }
            }

            #endregion

            await textMediaElementsService.Update(element);

            await globalSearchCacheHelper.AddOrUpdateEntry(customerId, Mapper.Map <TextMediaElement, SearchTextAndMediaDto>(element));

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

            var unusedTags = await tagsService.RemoveUnusedTags(customerId);

            await tagsSearchCacheHelper.RemoveTags(customerId, unusedTags);

            return(UpdateTextMediaElementStatus.Success);
        }
Ejemplo n.º 4
0
        public async Task UpdateTextMediaElement(UpdateTextMediaElementRequestDto updateTextMediaElementDto, int customerId, string token)
        {
            var url = string.Format("/api/{0}/text-media-elements/{1}", customerId, updateTextMediaElementDto.Id);

            await this.apiClient.SendRequestAsync(url, updateTextMediaElementDto, Method.PUT, null, token);
        }
 public async Task UpdateTextMediaElement(UpdateTextMediaElementRequestDto updateTextMediaElementDto, int customerId, string token)
 {
     await this.healthLibraryDataProvider.UpdateTextMediaElement(updateTextMediaElementDto, customerId, token);
 }