public async Task <LocalisationTextDto> GetAsync(string id)
        {
            var localisationText = await GetLocalisationTextAsync(id);

            if (localisationText == null)
            {
                return(null);
            }

            LocalisationTextDto localisationTextDto = new LocalisationTextDto()
            {
                Id            = localisationText.Id,
                ETag          = localisationText.ETag,
                GroupId       = localisationText.GroupId,
                Culture       = localisationText.Culture,
                Section       = localisationText.Section,
                Key           = localisationText.Key,
                Remark        = localisationText.Remark,
                Priority      = localisationText.Priority,
                Value         = localisationText.Value,
                IncludeInPod  = localisationText.IncludeInPod,
                UpdatedOnUtc  = localisationText.UpdatedOnUtc,
                UpdatedById   = localisationText.UpdatedById,
                UpdatedByName = localisationText.UpdatedByName
            };

            return(localisationTextDto);
        }
        public async Task <DocumentUpdateResultDto> CreateAsync(LocalisationTextDto localisationTextDto)
        {
            await CheckForDuplicates(localisationTextDto);

            LocalisationText localisationText = new LocalisationText();

            AssignLocalisationDtoToEntity(localisationText, localisationTextDto);
            return(await _dataContext.CreateDocumentAsync(localisationText));
        }
        public async Task <DocumentUpdateResultDto> UpdateAsync(LocalisationTextDto localisationTextDto)
        {
            await CheckForDuplicates(localisationTextDto);

            var localisation = await GetLocalisationTextAsync(localisationTextDto.Id);

            AssignLocalisationDtoToEntity(localisation, localisationTextDto);
            return(await _dataContext.ReplaceDocumentAsync(localisation));
        }
        private async Task CheckForDuplicates(LocalisationTextDto localisationTextDto)
        {
            var exists = await _dataContext.AnyAsync <LocalisationText>(q => q.Where(d =>
                                                                                     d.Key == localisationTextDto.Key &&
                                                                                     d.GroupId == localisationTextDto.GroupId &&
                                                                                     d.Culture == localisationTextDto.Culture &&
                                                                                     d.Section == localisationTextDto.Section &&
                                                                                     (localisationTextDto.Id == null || d.Id != localisationTextDto.Id)));

            if (exists)
            {
                throw new DocumentDuplicateException();
            }
        }
 private void AssignLocalisationDtoToEntity(LocalisationText localisationSetting, LocalisationTextDto localisationSettingDto)
 {
     localisationSetting.Section      = localisationSettingDto.Section;
     localisationSetting.Culture      = localisationSettingDto.Culture;
     localisationSetting.Key          = localisationSettingDto.Key;
     localisationSetting.Remark       = localisationSettingDto.Remark;
     localisationSetting.Value        = localisationSettingDto.Value;
     localisationSetting.IncludeInPod = localisationSettingDto.IncludeInPod;
     localisationSetting.Priority     = ConfigurationHelper.GetConfigurationPriority(localisationSettingDto.GroupId, localisationSettingDto.Culture, localisationSettingDto.Section);
     if (!string.IsNullOrEmpty(localisationSetting.Id))
     {
         localisationSetting.ETag = localisationSettingDto.ETag;
     }
 }
 public async Task <DocumentUpdateResultDto> Put([FromBody] LocalisationTextDto localisationTextDto)
 {
     return(await _localisationService.UpdateAsync(localisationTextDto));
 }