Imagara 2 年之前
父节点
当前提交
acf13025d3
共有 3 个文件被更改,包括 62 次插入6 次删除
  1. 13 0
      RaspisKusach/Functions.cs
  2. 2 2
      RaspisKusach/Pages/AdministrationPage.xaml
  3. 47 4
      RaspisKusach/Pages/AdministrationPage.xaml.cs

+ 13 - 0
RaspisKusach/Functions.cs

@@ -115,6 +115,19 @@ namespace RaspisKusach
             return true;
         }
 
+        // Проверка формата ввода TimeSpan из строки
+        public static bool IsHHMMTimeSpanFromString(string str)
+        {
+            for(int i = 0;i<str.Length;i++)
+                if (!char.IsDigit(str[i]) && i != 2)
+                    return false;
+            if(str.Length != 5)
+                return false;
+            if(str[3] != ' ' || str[3] != ':')
+                return false;
+            return true;
+        }
+
         // Проверка электронной почты на правильность ввода
         public static bool IsEmailCorrect(string email)
         {

+ 2 - 2
RaspisKusach/Pages/AdministrationPage.xaml

@@ -306,14 +306,14 @@
                                          Height="30"/>
                                 <Label HorizontalContentAlignment="Left"
                                        Height="30"
-                                       Content="Время остановки"/>
+                                       Content="Время остановки (час мин)"/>
                                 <TextBox Name="RoutesStationsStopTimeBox"
                                          Text="{Binding ts1, Mode=TwoWay, StringFormat=\{0:h\\:mm\}}"
                                          TextWrapping="Wrap" 
                                          Height="30"/>
                                 <Label HorizontalContentAlignment="Left"
                                        Height="30"
-                                       Content="Время в пути до станции"/>
+                                       Content="Время в пути (час мин)"/>
                                 <TextBox Name="RoutesStationsTravelTimeBox"
                                          TextWrapping="Wrap" 
                                          Height="30"/>

+ 47 - 4
RaspisKusach/Pages/AdministrationPage.xaml.cs

@@ -142,7 +142,7 @@ namespace RaspisKusach.Pages
                     new ErrorWindow("Маршрут с таким названием или id не найден").ShowDialog();
                     return;
                 }
-                
+
                 int stationId;
                 if (Functions.IsOnlyDigits(RoutesStationsIdStationBox.Text) && cnt.db.Stations.Select(item => item.IdStation).Contains(Convert.ToInt32(RoutesStationsIdStationBox.Text)))
                     stationId = Convert.ToInt32(RoutesStationsIdStationBox.Text);
@@ -150,7 +150,18 @@ namespace RaspisKusach.Pages
                     stationId = cnt.db.Routes.Where(item => item.Name == RoutesStationsIdStationBox.Text).Select(item => item.IdRoute).FirstOrDefault();
                 else
                 {
-                    new ErrorWindow("Станция с таким названием или id не найден").ShowDialog();
+                    new ErrorWindow("Станция с таким названием или id не найдена").ShowDialog();
+                    return;
+                }
+
+                if(Functions.IsHHMMTimeSpanFromString(RoutesStationsStopTimeBox.Text))
+                {
+                    new ErrorWindow("Строка с временем остановки имела неверный формат").ShowDialog();
+                    return;
+                }
+                if(Functions.IsHHMMTimeSpanFromString(RoutesStationsTravelTimeBox.Text))
+                {
+                    new ErrorWindow("Строка с временем пути имела неверный формат").ShowDialog();
                     return;
                 }
 
@@ -159,8 +170,8 @@ namespace RaspisKusach.Pages
                     IdRouteStation = cnt.db.RoutesStations.Select(p => p.IdRouteStation).DefaultIfEmpty(0).Max() + 1,
                     IdRoute = routeId,
                     IdStation = stationId,
-                    //StopTime = RoutesStationsStopTimeBox.Text,
-                    //TravelTime = RoutesStationsTravelTimeBox.Text
+                    StopTime = new TimeSpan(Convert.ToInt32(RoutesStationsStopTimeBox.Text.Substring(0, 2)), Convert.ToInt32(RoutesStationsStopTimeBox.Text.Substring(3, 2)), 0),
+                    TravelTime = new TimeSpan(Convert.ToInt32(RoutesStationsTravelTimeBox.Text.Substring(0, 2)), Convert.ToInt32(RoutesStationsTravelTimeBox.Text.Substring(3, 2)), 0),
                 });
                 cnt.db.SaveChanges();
             }
@@ -171,7 +182,39 @@ namespace RaspisKusach.Pages
         }
         private void CarriagesAddButton_Click(object sender, RoutedEventArgs e)
         {
+            try
+            {
+                int trainId;
+                if (Functions.IsOnlyDigits(CarriagesIdTrainBox.Text) && cnt.db.Trains.Select(item => item.IdTrain).Contains(Convert.ToInt32(CarriagesIdTrainBox.Text)))
+                    trainId = Convert.ToInt32(CarriagesIdTrainBox.Text);
+                else if (cnt.db.Trains.Select(item => item.Name).Contains(CarriagesIdTrainBox.Text))
+                    trainId = cnt.db.Trains.Where(item => item.Name == CarriagesIdTrainBox.Text).Select(item => item.IdTrain).FirstOrDefault();
+                else
+                {
+                    new ErrorWindow("Поезд с таким названием или id не найден").ShowDialog();
+                    return;
+                }
 
+                if (Functions.IsOnlyDigits(CarriagesPlacesBox.Text))
+                {
+                    new ErrorWindow("Строка с количеством мест имела неверный формат").ShowDialog();
+                    return;
+                }
+                
+                cnt.db.Carriages.Add(new Carriages()
+                {
+                    IdCarriage = cnt.db.Carriages.Select(p => p.IdCarriage).DefaultIfEmpty(0).Max() + 1,
+                    IdTrain = trainId,
+                    Places = Convert.ToInt32(CarriagesPlacesBox.Text),
+                    Category = CarriagesCategoryBox.Text
+                });
+                cnt.db.SaveChanges();
+                new ErrorWindow("Успешно").ShowDialog();
+            }
+            catch (Exception ex)
+            {
+                new ErrorWindow(ex.Message).ShowDialog();
+            }
         }
     }
 }