Răsfoiți Sursa

Редактирование допилено

Вадим Королёв 6 luni în urmă
părinte
comite
14e1968ee5

+ 2 - 1
src/DontHarmDesktop/Dictionaries/Forms.xaml

@@ -10,7 +10,8 @@
     </Style>
 
     <Style x:Key="ButtonPanel" TargetType="StackPanel">
-        <Setter 
+        <Setter Property="Orientation" Value="Horizontal"/>
+        <Setter Property="Margin" Value="0,4"/>
     </Style>
     
 </ResourceDictionary>

+ 25 - 18
src/DontHarmDesktop/Pages/ServiceAdd.xaml

@@ -8,40 +8,47 @@
       d:DesignHeight="450" d:DesignWidth="800"
       Title="ServiceAdd">
 
-    <Grid>
-        <Grid.ColumnDefinitions>
-            <ColumnDefinition Width="0.10*"/>
-            <ColumnDefinition Width="*"/>
-            <ColumnDefinition Width="0.10*"/>
-        </Grid.ColumnDefinitions>
-        
-        <Grid Grid.Column="1">
+    <StackPanel Margin="32,0">
+        <TextBlock Text="Добавление услуги" Style="{StaticResource H2}"/>
+        <Grid Style="{StaticResource FormBody}">
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="Auto"/>
                 <ColumnDefinition Width="*"/>
             </Grid.ColumnDefinitions>
-
             <Grid.RowDefinitions>
                 <RowDefinition Height="32"/>
                 <RowDefinition Height="32"/>
                 <RowDefinition Height="32"/>
-                <RowDefinition Height="32"/>
             </Grid.RowDefinitions>
 
             <TextBlock Text="Наименование" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" />
             <TextBlock Text="Цена" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
             <TextBlock Text="Код" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" />
 
-            <TextBox Grid.Row="0" Grid.Column="1" Margin="4" Text="{Binding Name}" />
-            <TextBox Grid.Row="1" Grid.Column="1" Margin="4" Text="{Binding Price}"/>
-            <TextBox Grid.Row="2" Grid.Column="1" Margin="4" Text="{Binding Code}"/>
+            <TextBox Grid.Row="0" Grid.Column="1" Margin="4,4,0,4" Text="{Binding Name}" />
+            <TextBox Grid.Row="1" Grid.Column="1" Margin="4,4,0,4" Text="{Binding Price}"/>
+            <TextBox Grid.Row="2" Grid.Column="1" Margin="4,4,0,4" Text="{Binding Code}"/>
+        </Grid>
+
+        <Grid Margin="0,8">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="0.79*"/>
+                <ColumnDefinition Width="0.01*"/>
+                <ColumnDefinition Width="0.2*"/>
+            </Grid.ColumnDefinitions>
+            <Grid.RowDefinitions>
+                <RowDefinition Height="28"/>
+            </Grid.RowDefinitions>
 
-            <Button 
-                Grid.Row="3"
-                Grid.Column="1"
-                Margin="4"
+            <Button
+                Grid.Column="0"
                 Style="{StaticResource Suggested}"
                 Command="{Binding Submit}">Сохранить</Button>
+
+            <Button
+                Grid.Column="2"
+                Command="{Binding Cancel}">Отмена</Button>
         </Grid>
-    </Grid>
+
+    </StackPanel>
 </Page>

+ 21 - 10
src/DontHarmDesktop/Pages/ServiceEdit.xaml

@@ -3,7 +3,7 @@
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-      xmlns:local="clr-namespace:DontHarmDesktop.Pages"
+      xmlns:local="clr-namespace:DontHarmDesktop.Pages" xmlns:viewmodels="clr-namespace:DontHarmDesktop.ViewModels" d:DataContext="{d:DesignInstance Type=viewmodels:ServiceAddViewModel}"
       mc:Ignorable="d" 
       d:DesignHeight="450" d:DesignWidth="800"
       Title="ServiceEdit">
@@ -17,28 +17,39 @@
                 <ColumnDefinition Width="Auto"/>
                 <ColumnDefinition Width="*"/>
             </Grid.ColumnDefinitions>
-
             <Grid.RowDefinitions>
                 <RowDefinition Height="32"/>
                 <RowDefinition Height="32"/>
                 <RowDefinition Height="32"/>
-                <RowDefinition Height="32"/>
             </Grid.RowDefinitions>
 
             <TextBlock Text="Наименование" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" />
             <TextBlock Text="Цена" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
             <TextBlock Text="Код" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" />
 
-            <TextBox Grid.Row="0" Grid.Column="1" Margin="4" Text="{Binding Name}" />
-            <TextBox Grid.Row="1" Grid.Column="1" Margin="4" Text="{Binding Price}"/>
-            <TextBox Grid.Row="2" Grid.Column="1" Margin="4" Text="{Binding Code}"/>
+            <TextBox Grid.Row="0" Grid.Column="1" Margin="4,4,0,4" Text="{Binding Name}" />
+            <TextBox Grid.Row="1" Grid.Column="1" Margin="4,4,0,4" Text="{Binding Price}"/>
+            <TextBox Grid.Row="2" Grid.Column="1" Margin="4,4,0,4" Text="{Binding Code}"/>
+        </Grid>
 
-            <Button 
-                Grid.Row="3"
-                Grid.Column="1"
-                Margin="4"
+        <Grid Margin="0,8">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="0.79*"/>
+                <ColumnDefinition Width="0.01*"/>
+                <ColumnDefinition Width="0.2*"/>
+            </Grid.ColumnDefinitions>
+            <Grid.RowDefinitions>
+                <RowDefinition Height="28"/>
+            </Grid.RowDefinitions>
+
+            <Button
+                Grid.Column="0"
                 Style="{StaticResource Suggested}"
                 Command="{Binding Submit}">Сохранить</Button>
+
+            <Button
+                Grid.Column="2"
+                Command="{Binding Cancel}">Отмена</Button>
         </Grid>
     </StackPanel>
 </Page>

+ 8 - 2
src/DontHarmDesktop/Pages/Services.xaml

@@ -16,7 +16,7 @@
                 <RowDefinition Height="*"/>
             </Grid.RowDefinitions>
 
-            <StackPanel Grid.Row="0" Orientation="Horizontal" Margin="0,4" Style="{StaticResource ButtonPanel}">
+            <StackPanel Grid.Row="0" Style="{StaticResource ButtonPanel}">
 
                 <Button 
                     Style="{StaticResource Suggested}"
@@ -29,7 +29,13 @@
                     Command="{Binding AddServiceCmd}">Удалить</Button>
             </StackPanel>
 
-            <DataGrid Grid.Row="1" ItemsSource="{Binding Services}" AutoGenerateColumns="False" IsReadOnly="True">
+            <DataGrid 
+                Grid.Row="1"
+                ItemsSource="{Binding Services}"
+                AutoGenerateColumns="False"
+                IsReadOnly="True"
+                SelectedItem="{Binding SelectedService}">
+                
                 <DataGrid.Columns>
                     <DataGridTextColumn Header="Наименование" Binding="{Binding name}"/>
                     <DataGridTextColumn Header="Цена" Binding="{Binding price}"/>

+ 7 - 0
src/DontHarmDesktop/ViewModels/ServiceAddViewModel.cs

@@ -15,10 +15,12 @@ namespace DontHarmDesktop.ViewModels
         public float Price { get; set; }
         public string Code { get; set; }
         public DelegateCommand Submit { get; set; }
+        public DelegateCommand Cancel { get; set; }
 
         public ServiceAddViewModel()
         {
             Submit = new DelegateCommand(SubmitExecuted);
+            Cancel = new DelegateCommand(CancelExecuted);
         }
 
         public void SubmitExecuted()
@@ -46,5 +48,10 @@ namespace DontHarmDesktop.ViewModels
 
             (App.Current.MainWindow as MainWindow).MainFrame.Navigate(new Pages.Services());
         }
+
+        private void CancelExecuted()
+        {
+            Navigation.toServicesList();
+        }
     }
 }

+ 22 - 9
src/DontHarmDesktop/ViewModels/ServiceEditViewModel.cs

@@ -11,36 +11,49 @@ namespace DontHarmDesktop.ViewModels
     public class ServiceEditViewModel : BindableBase
     {
         public string Name { get; set; }
-        public float Price { get; set; }
+        public decimal Price { get; set; }
         public string Code { get; set; }
+        private int ServiceId { get; set; }
         public DelegateCommand Submit { get; set; }
-        public Models.services Service { get; set; }
+        public DelegateCommand Cancel { get; set; }
 
         public ServiceEditViewModel(Models.services service)
         {
+            Price = service.price;
+            Name = service.name;
+            Code = service.code;
+            ServiceId = service.id;
+
             Submit = new DelegateCommand(SubmitExecuted);
+            Cancel = new DelegateCommand(CancelExecuted);
         }
 
-        public void SubmitExecuted()
+        private void SubmitExecuted()
         {
             // Валидация
-            decimal price = (decimal)Price;
+            decimal price = Price;
             List<string> errors = new List<string>();
             bool isValid = Validation.CheckService(Code, price, Name, errors);
-
             if (!isValid)
             {
                 Validation.DisplayErrors(errors);
                 return;
             }
 
-            Service.price = price;
-            Service.code = Code;
-            Service.name = Name;
-
+            // Обновление объекта
             var db = new DontHarmDesktop.Models.Entities();
+            var foundService = db.services.FirstOrDefault(x => x.id == ServiceId);
+            foundService.price = price;
+            foundService.name = Name;
+            foundService.code = Code;
             db.SaveChanges();
 
+            // Переход к списку всех услуг
+            Navigation.toServicesList();
+        }
+
+        private void CancelExecuted()
+        {
             Navigation.toServicesList();
         }
     }

+ 4 - 0
src/DontHarmDesktop/ViewModels/ServicesViewModel.cs

@@ -24,6 +24,7 @@ namespace DontHarmDesktop.ViewModels
             Services = db.services.Where(s => s.hidden == false).ToList();
 
             AddServiceCmd = new DelegateCommand(AddServiceExecuted);
+            EditServiceCmd = new DelegateCommand(EditServiceExecuted);
         }
 
         /// <summary>
@@ -34,6 +35,9 @@ namespace DontHarmDesktop.ViewModels
             Navigation.toServiceAdd();
         }
 
+        /// <summary>
+        /// Редактирует услугу
+        /// </summary>
         private void EditServiceExecuted()
         {
             Navigation.toServiceEdit(SelectedService);