public async Task <IHttpActionResult> UpdateTextMediaElementLocalization( int customerId, Guid textMediaElementId, UpdateTextMediaElementLocalizedRequestDto request, string language = null ) { var result = await controllerHelper.UpdateLocalization(customerId, textMediaElementId, request); 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 localization. /// </summary> /// <param name="customerId">The customer identifier.</param> /// <param name="textMediaElementId">The text media element identifier.</param> /// <param name="model">The model.</param> /// <returns></returns> public async Task <UpdateTextMediaElementStatus> UpdateLocalization( int customerId, Guid textMediaElementId, UpdateTextMediaElementLocalizedRequestDto model ) { if (model.Type != null && model.Media == null && !model.MediaId.HasValue) { return(UpdateTextMediaElementStatus.MediaFileMissed); } if (model.Media != null && !model.MediaId.HasValue && model.Type == null) { return(UpdateTextMediaElementStatus.MediaMediaType); } if (model.Text == null && model.Media == null && !model.MediaId.HasValue) { return(UpdateTextMediaElementStatus.TextOrMediaMissed); } var element = await this.textMediaElementsService.GetElement(customerId, textMediaElementId); if (element == null) { return(UpdateTextMediaElementStatus.NotFound); } var language = CareElementRequestContext.Current.Language; if (model.Text != null) { var elementLocalizedText = element.TextLocalizedStrings.FirstOrDefault(ls => ls.Language == language); if (elementLocalizedText == null) { elementLocalizedText = Mapper.Map <TextMediaElementString>(model.Text); elementLocalizedText.Language = language; element.TextLocalizedStrings.Add(elementLocalizedText); } else { elementLocalizedText.Value = model.Text.Value; elementLocalizedText.Description = model.Text.Description; elementLocalizedText.Pronunciation = model.Text.Pronunciation; } if (model.Text.AudioFileMedia != null) { elementLocalizedText.AudioFileMedia = await mediaFileHelper.CreateMediaFile(model.Text.AudioFileMedia); } } 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 (model.MediaId.HasValue) { var existingMedia = await mediaService.Get(customerId, model.MediaId.Value); if (existingMedia == null) { return(UpdateTextMediaElementStatus.MediaFileNotFound); } var media = new TextMediaElementToMedia() { MediaId = model.MediaId.Value, Language = language }; element.TextMediaElementsToMedias.Add(media); } else if (model.Media != null) { var media = await mediaFileHelper.CreateMediaFile(model.Media); if (media != null) { element.TextMediaElementsToMedias.Add( new TextMediaElementToMedia() { Media = media, Language = language } ); } } #endregion await this.textMediaElementsService.Update(element); return(UpdateTextMediaElementStatus.Success); }