예제 #1
0
        /// <summary>
        /// Validates the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="languageToSave">The language to save.</param>
        /// <param name="languages">The languages.</param>
        private static void Validate(PutLanguageRequest request, Module.Root.Models.Language languageToSave, List <Module.Root.Models.Language> languages)
        {
            if (languageToSave == null)
            {
                throw new ArgumentNullException("languageToSave");
            }

            if (languageToSave.Code != request.Data.Code)
            {
                throw new CmsApiValidationException("Language code changing is not allowed.");
            }

            if (CultureInfo.GetCultures(CultureTypes.AllCultures).All(c => c.Name != request.Data.Code))
            {
                var message = string.Format("Language with code '{0}' doesn't exist.", request.Data.Code);
                throw new CmsApiValidationException(message);
            }

            if (languages.Any(l => l.Id != request.Id && l.Code == request.Data.Code))
            {
                var message = string.Format("Language with code '{0}' already exists.", request.Data.Code);
                throw new CmsApiValidationException(message);
            }

            if (languages.Any(l => l.Id != request.Id && l.Name == request.Data.Name))
            {
                var message = string.Format("Language with name '{0}' already exists.", request.Data.Name);
                throw new CmsApiValidationException(message);
            }
        }
예제 #2
0
        /// <summary>
        /// Puts the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns><c>PutLanguageResponse</c> with id of created/updated language.</returns>
        public PutLanguageResponse Put(PutLanguageRequest request)
        {
            var languages = repository.AsQueryable <Module.Root.Models.Language>()
                            .Where(l => l.Id == request.Id || l.Code == request.Data.Code || l.Name == request.Data.Name)
                            .ToList();

            var languageToSave = languages.FirstOrDefault(l => l.Id == request.Id);

            var createLanguage = languageToSave == null;

            if (createLanguage)
            {
                languageToSave = new Module.Root.Models.Language
                {
                    Id   = request.Id.GetValueOrDefault(),
                    Code = request.Data.Code
                };
            }
            else if (request.Data.Version > 0)
            {
                languageToSave.Version = request.Data.Version;
            }

            Validate(request, languageToSave, languages);

            unitOfWork.BeginTransaction();

            languageToSave.Name = request.Data.Name;

            repository.Save(languageToSave);

            unitOfWork.Commit();

            // Fire events.
            if (createLanguage)
            {
                Events.RootEvents.Instance.OnLanguageCreated(languageToSave);
            }
            else
            {
                Events.RootEvents.Instance.OnLanguageUpdated(languageToSave);
            }

            return(new PutLanguageResponse
            {
                Data = languageToSave.Id
            });
        }
예제 #3
0
        /// <summary>
        /// Puts the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns><c>PutLanguageResponse</c> with id of created/updated language.</returns>
        public PutLanguageResponse Put(PutLanguageRequest request)
        {
            var languages = repository.AsQueryable<Module.Root.Models.Language>()
                .Where(l => l.Id == request.Id || l.Code == request.Data.Code || l.Name == request.Data.Name)
                .ToList();

            var languageToSave = languages.FirstOrDefault(l => l.Id == request.Id);

            var createLanguage = languageToSave == null;
            if (createLanguage)
            {
                languageToSave = new Module.Root.Models.Language
                {
                    Id = request.Id.GetValueOrDefault(),
                    Code = request.Data.Code
                };
            }
            else if (request.Data.Version > 0)
            {
                languageToSave.Version = request.Data.Version;
            }

            Validate(request, languageToSave, languages);

            unitOfWork.BeginTransaction();

            languageToSave.Name = request.Data.Name;

            repository.Save(languageToSave);

            unitOfWork.Commit();

            // Fire events.
            if (createLanguage)
            {
                Events.RootEvents.Instance.OnLanguageCreated(languageToSave);
            }
            else
            {
                Events.RootEvents.Instance.OnLanguageUpdated(languageToSave);
            }

            return new PutLanguageResponse
            {
                Data = languageToSave.Id
            };
        }