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)); }
/// <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); }
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); }