Exemplo n.º 1
0
        public async Task <IEnumerable <SettingsDto> > Handle(GetCompanySettingListQuery request, CancellationToken cancellationToken)
        {
            var settings = await _repository.Queryable()
                           .Where(x => x.SettingType == Domain.Enums.SettingType.Company)
                           .Select(x => new
            {
                Settings        = x,
                CompanySettings = x.CompanySettings.Where(c => c.CompanyId == request.CompanyId)
            })
                           .ToListAsync();

            List <SettingsDto> settingsDto = new List <SettingsDto>();

            if (settings != null)
            {
                _logger.LogInformation($"Got a request get company setting by CompanyId: {request.CompanyId}");
                foreach (var setting in settings)
                {
                    var companySettings = setting.CompanySettings.FirstOrDefault(x => x.SettingId == setting.Settings.SettingId);
                    settingsDto.Add(new SettingsDto()
                    {
                        SettingId = setting.Settings.SettingId,
                        Key       = setting.Settings.SettingKey,
                        Value     = companySettings == null ? setting.Settings.DefaultValue : companySettings.SettingValue
                    });
                }
                return(settingsDto);
            }

            _logger.LogInformation($"Settings not found by CompanyId: {request.CompanyId}");

            return(settingsDto);
        }
Exemplo n.º 2
0
        public async Task Should_ReturnCompanySettings_When_CompanyHasCustomSettingsValue()
        {
            // Arrange
            var entity = new SettingsDb()
            {
                SettingKey   = "key_1",
                DefaultValue = "default_value_1",
                SettingType  = Domain.Enums.SettingType.Company
            };

            entity.CompanySettings.Add(new Domain.Models.CompanySetting()
            {
                CompanyId    = 1,
                SettingValue = "company_1_value"
            });
            entity.CompanySettings.Add(new Domain.Models.CompanySetting()
            {
                CompanyId    = 2,
                SettingValue = "company_2_value"
            });
            _fixture.Context.Settings.Attach(entity);

            entity = new SettingsDb()
            {
                SettingKey   = "key_2",
                DefaultValue = "default_value_2",
                SettingType  = Domain.Enums.SettingType.Company
            };
            _fixture.Context.Settings.Attach(entity);

            _fixture.Context.SaveChanges();

            IRepository <SettingsDb> repository = new Repository <SettingsDb>(_fixture.Context);

            var handler = new GetCompanySettingListHandler(repository, _mapper, _logger);

            var request = new GetCompanySettingListQuery(companyId: 1);

            // Act
            var tcs = new CancellationToken();

            var result = await handler.Handle(request, tcs);

            // Assert
            Assert.Equal("company_1_value", result.SingleOrDefault(x => x.Key == "key_1").Value);
            Assert.Equal("default_value_2", result.SingleOrDefault(x => x.Key == "key_2").Value);
        }