/// <summary> /// Updates the language translation. /// </summary> /// <param name="languageTranslationIdDetails">The translation identifier details.</param> /// <param name="translationDetails">The translation details.</param> /// <returns></returns> public async Task <CSSResponse> UpdateLanguageTranslation(LanguageTranslationIdDetails languageTranslationIdDetails, UpdateLanguageTranslation translationDetails) { var language = await _repository.LanguageTranslation.GetLanguageTranslation(languageTranslationIdDetails); if (language == null) { return(new CSSResponse(HttpStatusCode.NotFound)); } var languageIdDetails = new LanguageIdDetails { LanguageId = translationDetails.LanguageId }; var menuIdDetails = new MenuIdDetails { MenuId = translationDetails.MenuId }; var variableIdDetails = new VariableIdDetails { VariableId = translationDetails.VariableId }; var languages = await _repository.LanguageTranslation.GetLanguageTranslationByOtherIds(languageIdDetails, menuIdDetails, variableIdDetails); if (languages?.Count > 0 && languages.IndexOf(languageTranslationIdDetails.TranslationId) == -1) { return(new CSSResponse($"Translation with language id '{translationDetails.LanguageId}' and " + $"menu id '{translationDetails.MenuId}' and variable id '{translationDetails.VariableId}' already exists.", HttpStatusCode.Conflict)); } var languageTranslationRequest = _mapper.Map(translationDetails, language); _repository.LanguageTranslation.UpdateLanguageTranslation(languageTranslationRequest); await _repository.SaveAsync(); return(new CSSResponse(HttpStatusCode.NoContent)); }
/// <summary> /// Creates the language translation. /// </summary> /// <param name="translationDetails">The translation details.</param> /// <returns></returns> public async Task <CSSResponse> CreateLanguageTranslation(CreateLanguageTranslation translationDetails) { var languageIdDetails = new LanguageIdDetails { LanguageId = translationDetails.LanguageId }; var menuIdDetails = new MenuIdDetails { MenuId = translationDetails.MenuId }; var variableIdDetails = new VariableIdDetails { VariableId = translationDetails.VariableId }; var languageTranslations = await _repository.LanguageTranslation.GetLanguageTranslationByOtherIds(languageIdDetails, menuIdDetails, variableIdDetails); if (languageTranslations?.Count > 0) { return(new CSSResponse($"Translation with language id '{translationDetails.LanguageId}' and " + $"menu id '{translationDetails.MenuId}' and variable id '{translationDetails.VariableId}' already exists.", HttpStatusCode.Conflict)); } var languageTranslationRequest = _mapper.Map <LanguageTranslation>(translationDetails); _repository.LanguageTranslation.CreateLanguageTranslation(languageTranslationRequest); await _repository.SaveAsync(); return(new CSSResponse(new LanguageTranslationIdDetails { TranslationId = languageTranslationRequest.Id }, HttpStatusCode.Created)); }
/// <summary> /// Gets the CSS variable. /// </summary> /// <param name="variableIdDetails">The variable identifier details.</param> /// <returns></returns> public async Task <VariableDTO> GetCssVariable(VariableIdDetails variableIdDetails) { var variable = FindByCondition(x => x.Id == variableIdDetails.VariableId) .Include(x => x.Menu); var mappedVariable = variable .ProjectTo <VariableDTO>(_mapper.ConfigurationProvider).SingleOrDefault(); return(await Task.FromResult(mappedVariable)); }
/// <summary> /// Gets the language translation by other ids. /// </summary> /// <param name="languageIdDetails">The language identifier details.</param> /// <param name="menuIdDetails">The menu identifier details.</param> /// <param name="variableIdDetails">The variable identifier details.</param> /// <returns></returns> public async Task <List <int> > GetLanguageTranslationByOtherIds(LanguageIdDetails languageIdDetails, MenuIdDetails menuIdDetails, VariableIdDetails variableIdDetails) { var languages = FindByCondition(x => x.LanguageId == languageIdDetails.LanguageId && x.MenuId == menuIdDetails.MenuId && x.VariableId == variableIdDetails.VariableId && x.IsDeleted == false) .Select(x => x.Id) .ToList(); return(await Task.FromResult(languages)); }