Esempio n. 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));
        }
Esempio n. 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 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));
        }