示例#1
0
        /// <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));
        }
示例#2
0
        /// <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 language.
        /// </summary>
        /// <param name="languageIdDetails">The language identifier details.</param>
        /// <returns></returns>
        public async Task <KeyValue> GetCssLanguage(LanguageIdDetails languageIdDetails)
        {
            var language = FindByCondition(x => x.Id == languageIdDetails.LanguageId)
                           .ProjectTo <KeyValue>(_mapper.ConfigurationProvider).SingleOrDefault();

            return(await Task.FromResult(language));
        }
        /// <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));
        }
示例#5
0
        /// <summary>
        /// Gets the language translations by menu and language.
        /// </summary>
        /// <param name="languageIdDetails">The language identifier details.</param>
        /// <param name="menuIdDetails">The menu identifier details.</param>
        /// <returns></returns>
        public async Task <CSSResponse> GetLanguageTranslationsByMenuAndLanguage(LanguageIdDetails languageIdDetails, MenuIdDetails menuIdDetails)
        {
            var language = await _repository.CssLanguage.GetCssLanguage(languageIdDetails);

            if (language == null)
            {
                return(new CSSResponse($"Language with id '{languageIdDetails.LanguageId}' not found", HttpStatusCode.NotFound));
            }

            var menu = await _repository.CssMenu.GetCssMenu(menuIdDetails);

            if (menu == null)
            {
                return(new CSSResponse($"Menu with id '{menuIdDetails.MenuId}' not found", HttpStatusCode.NotFound));
            }

            var languageTranslations = await _repository.LanguageTranslation.GetLanguageTranslationsByMenuAndLanguage(languageIdDetails, menuIdDetails);

            var mappedLanguageTranslations = _mapper.Map <List <LanguageTranslationDTO> >(languageTranslations);

            return(new CSSResponse(mappedLanguageTranslations, HttpStatusCode.OK));
        }
        /// <summary>
        /// Gets the language translations by menu and language.
        /// </summary>
        /// <param name="languageIdDetails">The language identifier details.</param>
        /// <param name="menuIdDetails">The menu identifier details.</param>
        /// <returns></returns>
        public async Task <List <LanguageTranslation> > GetLanguageTranslationsByMenuAndLanguage(LanguageIdDetails languageIdDetails, MenuIdDetails menuIdDetails)
        {
            var languages = FindByCondition(x => x.IsDeleted == false && x.LanguageId == languageIdDetails.LanguageId && x.MenuId == menuIdDetails.MenuId)
                            .Include(x => x.Language)
                            .Include(x => x.Variable)
                            .ToList();

            return(await Task.FromResult(languages));
        }