Quellcode durchsuchen

Реализовано добавление и валидация услуг

Almir Myxametszanov vor 6 Monaten
Ursprung
Commit
360d2f4b8e

+ 1 - 0
src/DontHarmDesktop/DontHarmDesktop.csproj

@@ -92,6 +92,7 @@
     <Compile Include="Pages\Services.xaml.cs">
       <DependentUpon>Services.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Validation.cs" />
     <Compile Include="ViewModels\AuthViewModel.cs" />
     <Compile Include="ViewModels\MainViewModel.cs" />
     <Compile Include="ViewModels\ServiceAddViewModel.cs" />

+ 1 - 1
src/DontHarmDesktop/Pages/ServiceAdd.xaml

@@ -29,6 +29,6 @@
         <TextBox Grid.Row="1" Grid.Column="1" Margin="4" Text="{Binding Price}"/>
         <TextBox Grid.Row="2" Grid.Column="1" Margin="4" Text="{Binding Code}"/>
 
-        <Button Grid.Row="3" Grid.Column="1" Margin="4" Background="{StaticResource SecondaryColor}">Сохранить</Button>
+        <Button Grid.Row="3" Grid.Column="1" Margin="4" Background="{StaticResource SecondaryColor}" Command="{Binding Submit}">Сохранить</Button>
     </Grid>
 </Page>

+ 1 - 0
src/DontHarmDesktop/Pages/ServiceAdd.xaml.cs

@@ -23,6 +23,7 @@ namespace DontHarmDesktop.Pages
         public ServiceAdd()
         {
             InitializeComponent();
+            DataContext = new ViewModels.ServiceAddViewModel();
         }
     }
 }

+ 51 - 0
src/DontHarmDesktop/Validation.cs

@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace DontHarmDesktop
+{
+    /// <summary>
+    /// Класс для валидации входных данных для сущностей
+    /// Функции этого класса возвращают True если данные верны, False если нет
+    /// </summary>
+    public static class Validation
+    {
+        public static bool CheckService(string code, decimal price, string name, List<string>errors)
+        {
+            if (String.IsNullOrEmpty(code))
+            {
+                errors.Add("Код услуги не заполнен");
+            }
+
+            if (String.IsNullOrEmpty(name))
+            {
+                errors.Add("Наименование услуги не заполнено");
+            }
+
+            if (price <= 0)
+            {
+                errors.Add("Цена не может быть меньше или равна нулю");
+            }
+
+            return errors.Count == 0;
+        }
+
+        /// <summary>
+        /// Сообщает об ошибках через MessageBox
+        /// </summary>
+        /// <param name="errors">Список ошибок</param>
+        public static void DisplayErrors(List<string>errors)
+        {
+            StringBuilder errorMessage = new StringBuilder();
+
+            errorMessage.AppendLine("Возникли ошибки при проверке даных");
+            errorMessage.Append(String.Join(";\n", errors));
+            errorMessage.Append(".");
+
+            MessageBox.Show(errorMessage.ToString(), "Ошибки проверки данных", MessageBoxButton.OK, MessageBoxImage.Error);
+        }
+    }
+}

+ 31 - 2
src/DontHarmDesktop/ViewModels/ServiceAddViewModel.cs

@@ -1,9 +1,11 @@
-using Prism.Mvvm;
+using Prism.Commands;
+using Prism.Mvvm;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows;
 
 namespace DontHarmDesktop.ViewModels
 {
@@ -12,10 +14,37 @@ namespace DontHarmDesktop.ViewModels
         public string Name { get; set; }
         public float Price { get; set; }
         public string Code { get; set; }
+        public DelegateCommand Submit { get; set; }
 
         public ServiceAddViewModel()
         {
-            
+            Submit = new DelegateCommand(SubmitExecuted);
+        }
+
+        public void SubmitExecuted()
+        {
+            // Валидация
+            decimal price = (decimal)Price;
+            List<string> errors = new List<string>();
+            bool isValid = Validation.CheckService(Code, price, Name, errors);
+
+            if (!isValid)
+            {
+                Validation.DisplayErrors(errors);
+                return;
+            }
+
+            var service = new Models.services
+            {
+                name = Name,
+                code = Code,
+                price = (decimal)Price
+            };
+            var db = new DontHarmDesktop.Models.Entities();
+            db.services.Add(service);
+            db.SaveChanges();
+
+            (App.Current.MainWindow as MainWindow).MainFrame.Navigate(new Pages.Services());
         }
     }
 }