public void ChangeBillingSettingPreset(BillingSettingPreset billingSettingPreset)
        {
            var index = _billingSettingPresets.FindIndex(x => x.BillingSettingId == billingSettingPreset.BillingSettingId);

            _billingSettingPresets[index].SetSettingPresetValue(billingSettingPreset.Value);
            _billingSettingPresets[index].SetIsHidden(billingSettingPreset.IsHidden);
            _billingSettingPresets[index].SetIsReadOnly(billingSettingPreset.IsReadOnly);
            _billingSettingPresets[index].SetIsRequired(billingSettingPreset.IsRequired);
        }
        public void AddBillingSettingPreset(BillingSettingPreset billingSettingPreset)
        {
            if (_billingSettingPresets.Any(x => x.BillingSettingId == billingSettingPreset.BillingSettingId))
            {
                throw new InvariantViolationException(
                          ValidationMessage.AlreadyExists($"Billing setting [id:{billingSettingPreset.BillingSettingId}]"));
            }

            _billingSettingPresets.Add(billingSettingPreset);
        }
        public async Task <IActionResult> Add([FromBody] SettingsPresetDto settingsPresetDto)
        {
            SettingsPreset settingPreset = new SettingsPreset(settingsPresetDto.Name);

            foreach (var billingSettingPresetDto in settingsPresetDto.BillingSettingPresets)
            {
                SettingPresetValue settingPresetValue = new SettingPresetValue(
                    billingSettingPresetDto.Value.DefaultValue,
                    billingSettingPresetDto.Value.MinValue,
                    billingSettingPresetDto.Value.MaxValue
                    );
                BillingSettingPreset billingSettingPreset = new BillingSettingPreset(
                    billingSettingPresetDto.SettingsPresetId,
                    billingSettingPresetDto.BillingSettingId,
                    settingPresetValue,
                    billingSettingPresetDto.IsRequired,
                    billingSettingPresetDto.IsReadOnly,
                    billingSettingPresetDto.IsHidden
                    );
                settingPreset.AddBillingSettingPreset(billingSettingPreset);
            }

            foreach (var ApplicationSettingPresetDto in settingsPresetDto.ApplicationSettingPresets)
            {
                SettingPresetValue settingPresetValue = new SettingPresetValue(
                    ApplicationSettingPresetDto.Value.DefaultValue,
                    ApplicationSettingPresetDto.Value.MinValue,
                    ApplicationSettingPresetDto.Value.MaxValue
                    );
                ApplicationSettingPreset applicationSettingPreset = new ApplicationSettingPreset(
                    ApplicationSettingPresetDto.SettingsPresetId,
                    ApplicationSettingPresetDto.ApplicationSettingId,
                    settingPresetValue,
                    ApplicationSettingPresetDto.IsRequired,
                    ApplicationSettingPresetDto.IsReadOnly,
                    ApplicationSettingPresetDto.IsHidden
                    );
                settingPreset.AddApplicationSettingPreset(applicationSettingPreset);
            }

            await settingsPresetRepository.Add(settingPreset);

            await unitOfWork.SaveEntitiesAsync();

            return(Ok());
        }
 public static BillingSettingPresetDto Map(this BillingSettingPreset billingSettingPreset)
 {
     if (billingSettingPreset == null)
     {
         return(null);
     }
     else
     {
         return(new BillingSettingPresetDto
         {
             Id = billingSettingPreset.Id,
             BillingSettingId = billingSettingPreset.BillingSettingId,
             BillingSetting = billingSettingPreset.BillingSetting.Map(),
             SettingsPresetId = billingSettingPreset.SettingsPresetId,
             IsHidden = billingSettingPreset.IsHidden,
             IsReadOnly = billingSettingPreset.IsReadOnly,
             IsRequired = billingSettingPreset.IsRequired,
             Value = billingSettingPreset.Value.Map()
         });
     }
 }
        public async Task <IActionResult> Update([FromBody] SettingsPresetDto settingsPresetDto)
        {
            SettingsPreset settingsPreset = await settingsPresetRepository.GetSettingsPreset(settingsPresetDto.Id);

            settingsPreset.SetName(settingsPresetDto.Name);
            settingsPreset.RemoveApplicationSettingsPresets(settingsPresetDto.ApplicationSettingPresets.Select(x => x.ApplicationSettingId).ToList());
            settingsPreset.RemoveBillingSettingPresets(settingsPresetDto.BillingSettingPresets.Select(x => x.BillingSettingId).ToList());
            foreach (var item in settingsPresetDto.ApplicationSettingPresets)
            {
                SettingPresetValue settingPresetValue = new SettingPresetValue(
                    item.Value.DefaultValue,
                    item.Value.MinValue,
                    item.Value.MaxValue
                    );
                ApplicationSettingPreset applicationSettingPreset = new ApplicationSettingPreset(
                    item.SettingsPresetId,
                    item.ApplicationSettingId,
                    settingPresetValue,
                    item.IsRequired,
                    item.IsReadOnly,
                    item.IsHidden
                    );

                if (settingsPreset.ApplicationSettingPresets.Select(x => x.ApplicationSettingId).Contains(item.ApplicationSettingId))
                {
                    settingsPreset.ChangeApplicationSetting(applicationSettingPreset);
                }
                else
                {
                    settingsPreset.AddApplicationSettingPreset(applicationSettingPreset);
                }
            }

            foreach (var item in settingsPresetDto.BillingSettingPresets)
            {
                SettingPresetValue settingPresetValue = new SettingPresetValue(
                    item.Value.DefaultValue,
                    item.Value.MinValue,
                    item.Value.MaxValue
                    );
                BillingSettingPreset billingSettingPreset = new BillingSettingPreset(
                    item.SettingsPresetId,
                    item.BillingSettingId,
                    settingPresetValue,
                    item.IsRequired,
                    item.IsReadOnly,
                    item.IsHidden
                    );

                if (settingsPreset.BillingSettingPresets.Select(x => x.BillingSettingId).Contains(item.BillingSettingId))
                {
                    settingsPreset.ChangeBillingSettingPreset(billingSettingPreset);
                }
                else
                {
                    settingsPreset.AddBillingSettingPreset(billingSettingPreset);
                }
            }

            await settingsPresetRepository.Update(settingsPreset);

            await unitOfWork.SaveEntitiesAsync();

            return(Ok());
        }