Elwig: Update database to include new BKI wine varieties
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Test / Run tests (push) Successful in 2m43s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Test / Run tests (push) Successful in 2m43s
				
			This commit is contained in:
		@@ -35,7 +35,7 @@
 | 
				
			|||||||
        </DataTemplate>
 | 
					        </DataTemplate>
 | 
				
			||||||
        <DataTemplate x:Key="WineVarietyTemplateExpanded">
 | 
					        <DataTemplate x:Key="WineVarietyTemplateExpanded">
 | 
				
			||||||
            <StackPanel Orientation="Horizontal">
 | 
					            <StackPanel Orientation="Horizontal">
 | 
				
			||||||
                <TextBlock Text="{Binding SortId}" Foreground="{Binding Color}" MinWidth="36" Margin="0,0,10,0"/>
 | 
					                <TextBlock Text="{Binding SortIdFormat}" Foreground="{Binding Color}" MinWidth="36" Margin="0,0,10,0"/>
 | 
				
			||||||
                <TextBlock Text="{Binding Name}" Foreground="{Binding Color}"/>
 | 
					                <TextBlock Text="{Binding Name}" Foreground="{Binding Color}"/>
 | 
				
			||||||
                <TextBlock Text="{Binding CommentFormat}" FontSize="10" VerticalAlignment="Bottom" Margin="0,0,0,2"/>
 | 
					                <TextBlock Text="{Binding CommentFormat}" FontSize="10" VerticalAlignment="Bottom" Margin="0,0,0,2"/>
 | 
				
			||||||
            </StackPanel>
 | 
					            </StackPanel>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -248,9 +248,10 @@ namespace Elwig.Helpers {
 | 
				
			|||||||
            return c + 1;
 | 
					            return c + 1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<WineQualLevel> GetWineQualityLevel(double kmw) {
 | 
					        public async Task<WineQualLevel> GetWineQualityLevel(double kmw, string? maxQualId = null) {
 | 
				
			||||||
            return await WineQualityLevels
 | 
					            return await WineQualityLevels
 | 
				
			||||||
                .Where(q => !q.IsPredicate && (q.MinKmw == null || q.MinKmw <= kmw))
 | 
					                .Where(q => !q.IsPredicate && (q.MinKmw == null || q.MinKmw <= kmw))
 | 
				
			||||||
 | 
					                .Where(q => maxQualId == null || q.QualId == "WEI" || q.QualId == maxQualId)
 | 
				
			||||||
                .OrderBy(q => q.MinKmw)
 | 
					                .OrderBy(q => q.MinKmw)
 | 
				
			||||||
                .LastAsync();
 | 
					                .LastAsync();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ namespace Elwig.Helpers {
 | 
				
			|||||||
    public static class AppDbUpdater {
 | 
					    public static class AppDbUpdater {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Don't forget to update value in Tests/fetch-resources.bat!
 | 
					        // Don't forget to update value in Tests/fetch-resources.bat!
 | 
				
			||||||
        public static readonly int RequiredSchemaVersion = 32;
 | 
					        public static readonly int RequiredSchemaVersion = 33;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private static int VersionOffset = 0;
 | 
					        private static int VersionOffset = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,16 +11,24 @@ namespace Elwig.Models.Entities {
 | 
				
			|||||||
        [Column("type")]
 | 
					        [Column("type")]
 | 
				
			||||||
        public string Type { get; private set; } = null!;
 | 
					        public string Type { get; private set; } = null!;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Column("max_qualid")]
 | 
				
			||||||
 | 
					        public string MaxQualId { get; private set; } = null!;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [ForeignKey("MaxQualId")]
 | 
				
			||||||
 | 
					        public virtual WineQualLevel MaxQualityLevel { get; private set; } = null!;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Column("name")]
 | 
					        [Column("name")]
 | 
				
			||||||
        public string Name { get; private set; } = null!;
 | 
					        public string Name { get; private set; } = null!;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Column("comment")]
 | 
					        [Column("comment")]
 | 
				
			||||||
        public string? Comment { get; private set; }
 | 
					        public string? Comment { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string SortIdFormat => IsQuw ? SortId : $"({SortId})";
 | 
				
			||||||
        public string CommentFormat => (Comment != null) ? $" ({Comment})" : "";
 | 
					        public string CommentFormat => (Comment != null) ? $" ({Comment})" : "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool IsRed => Type == "R";
 | 
					        public bool IsRed => Type == "R";
 | 
				
			||||||
        public bool IsWhite => Type == "W";
 | 
					        public bool IsWhite => Type == "W";
 | 
				
			||||||
 | 
					        public bool IsQuw => MaxQualId == "QUW";
 | 
				
			||||||
        public Brush? Color => IsWhite ? Brushes.DarkGreen : IsRed ? Brushes.DarkRed : null;
 | 
					        public Brush? Color => IsWhite ? Brushes.DarkGreen : IsRed ? Brushes.DarkRed : null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public WineVar() { }
 | 
					        public WineVar() { }
 | 
				
			||||||
@@ -28,6 +36,7 @@ namespace Elwig.Models.Entities {
 | 
				
			|||||||
        public WineVar(string sortId, string name) {
 | 
					        public WineVar(string sortId, string name) {
 | 
				
			||||||
            SortId = sortId;
 | 
					            SortId = sortId;
 | 
				
			||||||
            Name = name;
 | 
					            Name = name;
 | 
				
			||||||
 | 
					            MaxQualId = "QUW";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override string ToString() {
 | 
					        public override string ToString() {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								Elwig/Resources/Sql/32-33.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Elwig/Resources/Sql/32-33.sql
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					-- schema version 32 to 33
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ALTER TABLE wine_variety ADD COLUMN max_qualid TEXT NOT NULL DEFAULT 'QUW';
 | 
				
			||||||
 | 
					UPDATE wine_quality_level SET qualid = 'ALW' WHERE qualid = 'AUL';
 | 
				
			||||||
 | 
					UPDATE wine_variety SET comment = 'Muscato' WHERE sortid = 'MO';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSERT INTO wine_variety (sortid, type, max_qualid, name, comment) VALUES
 | 
				
			||||||
 | 
					('DR', 'W', 'QUW', 'Donauriesling', NULL),
 | 
				
			||||||
 | 
					('DV', 'W', 'QUW', 'Donauveltliner', NULL),
 | 
				
			||||||
 | 
					('BN', 'W', 'RSW', 'Bronner', NULL),
 | 
				
			||||||
 | 
					('CB', 'W', 'RSW', 'Cabernet Blanc', NULL),
 | 
				
			||||||
 | 
					('CJ', 'R', 'RSW', 'Cabernet Jura', NULL),
 | 
				
			||||||
 | 
					('JO', 'W', 'RSW', 'Johanniter', NULL),
 | 
				
			||||||
 | 
					('OR', 'W', 'RSW', 'Orangetraube', NULL),
 | 
				
			||||||
 | 
					('PI', 'R', 'RSW', 'Pinot Nova', NULL),
 | 
				
			||||||
 | 
					('RE', 'R', 'RSW', 'Regent', NULL),
 | 
				
			||||||
 | 
					('SI', 'W', 'RSW', 'Solaris', NULL);
 | 
				
			||||||
@@ -1207,6 +1207,7 @@ namespace Elwig.Windows {
 | 
				
			|||||||
                AttributeInput.SelectedIndex = 0;
 | 
					                AttributeInput.SelectedIndex = 0;
 | 
				
			||||||
                CultivationInput.SelectedIndex = 0;
 | 
					                CultivationInput.SelectedIndex = 0;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            UpdateWineQualityLevels();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void SortIdInput_TextChanged(object sender, TextChangedEventArgs evt) {
 | 
					        private void SortIdInput_TextChanged(object sender, TextChangedEventArgs evt) {
 | 
				
			||||||
@@ -1220,6 +1221,13 @@ namespace Elwig.Windows {
 | 
				
			|||||||
        private void WineVarietyInput_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
 | 
					        private void WineVarietyInput_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
 | 
				
			||||||
            if (WineVarietyInput.SelectedItem is WineVar s)
 | 
					            if (WineVarietyInput.SelectedItem is WineVar s)
 | 
				
			||||||
                ViewModel.SortId = s.SortId;
 | 
					                ViewModel.SortId = s.SortId;
 | 
				
			||||||
 | 
					            UpdateWineQualityLevels();
 | 
				
			||||||
 | 
					            if (!ViewModel.WineVar?.IsQuw ?? false) {
 | 
				
			||||||
 | 
					                App.MainDispatcher.BeginInvoke(() => {
 | 
				
			||||||
 | 
					                    MessageBox.Show("Die eingegebene Sorte darf nicht als Qualitätswein\nübernommen werden!", "Kein Qualitätswein",
 | 
				
			||||||
 | 
					                        MessageBoxButton.OK, MessageBoxImage.Warning);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void UpdateWineQualityLevels() {
 | 
					        private void UpdateWineQualityLevels() {
 | 
				
			||||||
@@ -1227,12 +1235,17 @@ namespace Elwig.Windows {
 | 
				
			|||||||
            if (!GetInputValid(GradationKmwInput)) {
 | 
					            if (!GetInputValid(GradationKmwInput)) {
 | 
				
			||||||
                UnsetDefaultValue(WineQualityLevelInput);
 | 
					                UnsetDefaultValue(WineQualityLevelInput);
 | 
				
			||||||
                ComboBox_SelectionChanged(WineQualityLevelInput, null);
 | 
					                ComboBox_SelectionChanged(WineQualityLevelInput, null);
 | 
				
			||||||
                WineQualityLevelInput.ItemsSource = ctx.WineQualityLevels.Where(q => q.QualId == "WEI").ToList();
 | 
					                WineQualityLevelInput.ItemsSource = ctx.WineQualityLevels.ToList();
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            var kmw = (double)ViewModel.GradationKmw!;
 | 
					            var kmw = (double)ViewModel.GradationKmw!;
 | 
				
			||||||
            WineQualityLevelInput.ItemsSource = ctx.WineQualityLevels.Where(q => q.MinKmw == null || q.MinKmw <= kmw).ToList();
 | 
					            var max = ViewModel.WineVar?.MaxQualId;
 | 
				
			||||||
            var qual = ctx.GetWineQualityLevel(kmw).GetAwaiter().GetResult();
 | 
					            var quw = ViewModel.WineVar?.IsQuw ?? true;
 | 
				
			||||||
 | 
					            WineQualityLevelInput.ItemsSource = ctx.WineQualityLevels
 | 
				
			||||||
 | 
					                .Where(q => q.MinKmw == null || q.MinKmw <= kmw)
 | 
				
			||||||
 | 
					                .Where(q => quw || q.QualId == "WEI" || q.QualId == max)
 | 
				
			||||||
 | 
					                .ToList();
 | 
				
			||||||
 | 
					            var qual = ctx.GetWineQualityLevel(kmw, !quw ? max : null).GetAwaiter().GetResult();
 | 
				
			||||||
            SetDefaultValue(WineQualityLevelInput, qual);
 | 
					            SetDefaultValue(WineQualityLevelInput, qual);
 | 
				
			||||||
            if (WineQualityLevelInput.SelectedItem == null || (WineQualityLevelInput.SelectedItem is WineQualLevel selected && !selected.IsPredicate)) {
 | 
					            if (WineQualityLevelInput.SelectedItem == null || (WineQualityLevelInput.SelectedItem is WineQualLevel selected && !selected.IsPredicate)) {
 | 
				
			||||||
                ControlUtils.SelectItem(WineQualityLevelInput, qual);
 | 
					                ControlUtils.SelectItem(WineQualityLevelInput, qual);
 | 
				
			||||||
@@ -1373,7 +1386,7 @@ namespace Elwig.Windows {
 | 
				
			|||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            using var ctx = new AppDbContext();
 | 
					            using var ctx = new AppDbContext();
 | 
				
			||||||
            var defQual = ctx.GetWineQualityLevel(double.Parse(GradationKmwInput.Text)).GetAwaiter().GetResult();
 | 
					            var defQual = ctx.GetWineQualityLevel(ViewModel.GradationKmw!.Value, !(ViewModel.WineVar?.IsQuw ?? true) ? ViewModel.WineVar?.MaxQualId : null).GetAwaiter().GetResult();
 | 
				
			||||||
            AbgewertetInput.IsChecked = !qual.IsPredicate && defQual != qual;
 | 
					            AbgewertetInput.IsChecked = !qual.IsPredicate && defQual != qual;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1 +1 @@
 | 
				
			|||||||
curl --fail -s -L "https://elwig.at/files/create.sql?v=32" -u "elwig:ganzGeheim123!" -o "Resources\Sql\Create.sql"
 | 
					curl --fail -s -L "https://elwig.at/files/create.sql?v=33" -u "elwig:ganzGeheim123!" -o "Resources\Sql\Create.sql"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user