2 Commits 8b80c2e539 ... acf13025d3

Autor SHA1 Mensagem Data
  Imagara acf13025d3 . 2 anos atrás
  Imagara c2754da258 asd 2 anos atrás

+ 22 - 0
RaspisKusach/Functions.cs

@@ -106,6 +106,28 @@ namespace RaspisKusach
             return true;
         }
 
+        // Проверка содержание только цифр
+        public static bool IsOnlyDigits(string str)
+        {
+            foreach (char c in str.Trim())
+                if (!char.IsDigit(c))
+                    return false;
+            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)
         {

+ 278 - 82
RaspisKusach/Pages/AdministrationPage.xaml

@@ -4,13 +4,19 @@
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
       xmlns:local="clr-namespace:RaspisKusach.Pages"
+      xmlns:math="http://hexinnovation.com/math"
       mc:Ignorable="d"
       d:DesignHeight="367"
       d:DesignWidth="792"
       Title="Администратор">
-
+    
+    <Page.Resources>
+        <math:MathConverter x:Key="math"/>
+    </Page.Resources>
+    
     <Grid Background="White">
         <TabControl>
+            <!--Trains-->
             <TabItem 
                 Height="30" 
                 Width="120">
@@ -26,51 +32,40 @@
                     </Grid.ColumnDefinitions>
                     <!--LEFTBAR-->
                     <Border CornerRadius="15" 
-                Background="{StaticResource ItemColor}"
-                BorderThickness="1.5"
-                BorderBrush="{StaticResource Selection}"
-                Margin="5"
-                Grid.Column="0">
-
-                        <Grid Background="{x:Null}">
-                            <StackPanel>
-                                <Button Content="Поезда"
-                            Margin="0,10,0,10"
-                            Width="120"
-                            Height="30"
-                            Click="TrainsButton_Click">
-                                </Button>
-                                <Button Content="Поиск"
-                            Margin="0,10,0,10"
-                            Width="120"
-                            Height="30"
-                            Click="FindRoutesButton_Click">
-                                </Button>
-                                <Button Content="Поиск"
-                            Margin="0,10,0,10"
-                            Width="120"
-                            Height="30"
-                            Click="FindRoutesButton_Click">
-                                </Button>
-                                <Button Content="Поиск"
-                            Margin="0,10,0,10"
-                            Width="120"
-                            Height="30">
-                                </Button>
-                                <Button Content="Сохранить"
-                            Margin="0,10,0,10"
-                            Width="120"
-                            Height="30"
-                            Click="SaveButton_Click">
-                                </Button>
+                            Background="{StaticResource ItemColor}"
+                            BorderThickness="1.5"
+                            BorderBrush="{StaticResource Selection}"
+                            Margin="5"
+                            Grid.Column="0">
+                        <Grid Name="TrainsLeftBarGrid"
+                            Background="{x:Null}">
+                            <StackPanel Width="{Binding Path=ActualWidth, Mode=OneWay, ElementName=TrainsLeftBarGrid, Converter={StaticResource math}, ConverterParameter=x-15}"
+                                        VerticalAlignment="Center"
+                                        HorizontalAlignment="Center">
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Название"/>
+                                <TextBox Name="TrainsNameBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Категория"/>
+                                <TextBox Name="TrainsCategoryBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Button Click="TrainsAddButton_Click"
+                                        Margin="0,10,0,0"
+                                        Content="Добавить"
+                                        Height="30"/>
                             </StackPanel>
                         </Grid>
                     </Border>
-                    <DataGrid Name="CarriagesDataGrid"
-                              Grid.Column="1"
-                              SelectionChanged="CarriagesDataGrid_SelectionChanged"/>
+                    <DataGrid Name="TrainsDataGrid"
+                              Grid.Column="1"/>
                 </Grid>
             </TabItem>
+            <!--Carriages-->
             <TabItem 
                 Height="30" 
                 Width="120">
@@ -86,50 +81,251 @@
                     </Grid.ColumnDefinitions>
                     <!--LEFTBAR-->
                     <Border CornerRadius="15" 
-                Background="{StaticResource ItemColor}"
-                BorderThickness="1.5"
-                BorderBrush="{StaticResource Selection}"
-                Margin="5"
-                Grid.Column="0">
-
-                        <Grid Background="{x:Null}">
-                            <StackPanel>
-                                <Button Content="Поезда"
-                            Margin="0,10,0,10"
-                            Width="120"
-                            Height="30"
-                            Click="TrainsButton_Click">
-                                </Button>
-                                <Button Content="Поиск"
-                            Margin="0,10,0,10"
-                            Width="120"
-                            Height="30"
-                            Click="FindRoutesButton_Click">
-                                </Button>
-                                <Button Content="Поиск"
-                            Margin="0,10,0,10"
-                            Width="120"
-                            Height="30"
-                            Click="FindRoutesButton_Click">
-                                </Button>
-                                <Button Content="Поиск"
-                            Margin="0,10,0,10"
-                            Width="120"
-                            Height="30">
-                                </Button>
-                                <Button Content="Сохранить"
-                            Margin="0,10,0,10"
-                            Width="120"
-                            Height="30"
-                            Click="SaveButton_Click">
-                                </Button>
+                            Background="{StaticResource ItemColor}"
+                            BorderThickness="1.5"
+                            BorderBrush="{StaticResource Selection}"
+                            Margin="5"
+                            Grid.Column="0">
+                        <Grid Name="CarriagesLeftBarGrid"
+                              Background="{x:Null}">
+                            <StackPanel Width="{Binding Path=ActualWidth, Mode=OneWay, ElementName=CarriagesLeftBarGrid, Converter={StaticResource math}, ConverterParameter=x-15}"
+                                        VerticalAlignment="Center"
+                                        HorizontalAlignment="Center">
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Название или id поезда"/>
+                                <TextBox Name="CarriagesIdTrainBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Количество мест"/>
+                                <TextBox Name="CarriagesPlacesBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Категория"/>
+                                <TextBox Name="CarriagesCategoryBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Button Click="CarriagesAddButton_Click"
+                                        Margin="0,10,0,0"
+                                        Content="Добавить"
+                                        Height="30"/>
                             </StackPanel>
-
                         </Grid>
                     </Border>
-                    <DataGrid Name="TrainsDataGrid"
-                  Grid.Column="1"
-                  SelectionChanged="TrainsDataGrid_SelectionChanged"/>
+                    <DataGrid Name="CarriagesDataGrid"
+                              Grid.Column="1"/>
+                </Grid>
+            </TabItem>
+            <!--Trips-->
+            <TabItem 
+                Height="30" 
+                Width="120">
+                <TabItem.Header>
+                    <Label Content="Поездки"
+                           FontSize="14">
+                    </Label>
+                </TabItem.Header>
+                <Grid>
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="198"/>
+                        <ColumnDefinition/>
+                    </Grid.ColumnDefinitions>
+                    <!--LEFTBAR-->
+                    <Border CornerRadius="15" 
+                            Background="{StaticResource ItemColor}"
+                            BorderThickness="1.5"
+                            BorderBrush="{StaticResource Selection}"
+                            Margin="5"
+                            Grid.Column="0">
+                        <Grid Name="TripsLeftBarGrid"
+                              Background="{x:Null}">
+                            <StackPanel Width="{Binding Path=ActualWidth, Mode=OneWay, ElementName=CarriagesLeftBarGrid, Converter={StaticResource math}, ConverterParameter=x-15}"
+                                        VerticalAlignment="Center"
+                                        HorizontalAlignment="Center">
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Название или id поезда"/>
+                                <TextBox Name="TripsIdTrainBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Название или id маршрута"/>
+                                <TextBox Name="TripsIdRouteBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Дата начала поездки"/>
+                                <DatePicker Name="TripsStartDatePicker"
+                                         Height="30"/>
+                                <Button Click="TripsAddButton_Click"
+                                        Margin="0,10,0,0"
+                                        Content="Добавить"
+                                        Height="30"/>
+                            </StackPanel>
+                        </Grid>
+                    </Border>
+                    <DataGrid Name="TripsDataGrid"
+                              Grid.Column="1"/>
+                </Grid>
+            </TabItem>
+            <!--Routes-->
+            <TabItem 
+                Height="30" 
+                Width="120">
+                <TabItem.Header>
+                    <Label Content="Маршруты"
+                           FontSize="14">
+                    </Label>
+                </TabItem.Header>
+                <Grid>
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="198"/>
+                        <ColumnDefinition/>
+                    </Grid.ColumnDefinitions>
+                    <!--LEFTBAR-->
+                    <Border CornerRadius="15" 
+                            Background="{StaticResource ItemColor}"
+                            BorderThickness="1.5"
+                            BorderBrush="{StaticResource Selection}"
+                            Margin="5"
+                            Grid.Column="0">
+                        <Grid Name="RoutesLeftBarGrid"
+                              Background="{x:Null}">
+                            <StackPanel Width="{Binding Path=ActualWidth, Mode=OneWay, ElementName=RoutesLeftBarGrid, Converter={StaticResource math}, ConverterParameter=x-15}"
+                                        VerticalAlignment="Center"
+                                        HorizontalAlignment="Center">
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Название"/>
+                                <TextBox Name="RoutesNameBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Button Click="RoutesAddButton_Click"
+                                        Margin="0,10,0,0"
+                                        Content="Добавить"
+                                        Height="30"/>
+                            </StackPanel>
+                        </Grid>
+                    </Border>
+                    <DataGrid Name="RoutesDataGrid"
+                              Grid.Column="1"/>
+                </Grid>
+            </TabItem>
+            <!--Stations-->
+            <TabItem 
+                Height="30" 
+                Width="120">
+                <TabItem.Header>
+                    <Label Content="Станции"
+                           FontSize="14">
+                    </Label>
+                </TabItem.Header>
+                <Grid>
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="198"/>
+                        <ColumnDefinition/>
+                    </Grid.ColumnDefinitions>
+                    <!--LEFTBAR-->
+                    <Border CornerRadius="15" 
+                            Background="{StaticResource ItemColor}"
+                            BorderThickness="1.5"
+                            BorderBrush="{StaticResource Selection}"
+                            Margin="5"
+                            Grid.Column="0">
+                        <Grid Name="StationsLeftBarGrid"
+                              Background="{x:Null}">
+                            <StackPanel Width="{Binding Path=ActualWidth, Mode=OneWay, ElementName=StationsLeftBarGrid, Converter={StaticResource math}, ConverterParameter=x-15}"
+                                        VerticalAlignment="Center"
+                                        HorizontalAlignment="Center">
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Название"/>
+                                <TextBox Name="StationsNameBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Расположение"/>
+                                <TextBox Name="StationsLocationBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Button Click="StationsAddButton_Click"
+                                        Margin="0,10,0,0"
+                                        Content="Добавить"
+                                        Height="30"/>
+                            </StackPanel>
+                        </Grid>
+                    </Border>
+                    <DataGrid Name="StationsDataGrid"
+                              Grid.Column="1"/>
+                </Grid>
+            </TabItem>
+            <!--RoutesStations-->
+            <TabItem Height="30" 
+                     Width="120">
+                <TabItem.Header>
+                    <Label Content="СтанцияМаршрут"
+                           FontSize="14"
+                           Margin="-10,0,-10,0">
+                    </Label>
+                </TabItem.Header>
+                <Grid>
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="198"/>
+                        <ColumnDefinition/>
+                    </Grid.ColumnDefinitions>
+                    <!--LEFTBAR-->
+                    <Border CornerRadius="15" 
+                            Background="{StaticResource ItemColor}"
+                            BorderThickness="1.5"
+                            BorderBrush="{StaticResource Selection}"
+                            Margin="5"
+                            Grid.Column="0">
+                        <Grid Name="RoutesStationsLeftBarGrid"
+                              Background="{x:Null}">
+                            <StackPanel Width="{Binding Path=ActualWidth, Mode=OneWay, ElementName=RoutesStationsLeftBarGrid, Converter={StaticResource math}, ConverterParameter=x-15}"
+                                        VerticalAlignment="Center"
+                                        HorizontalAlignment="Center">
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Название или id маршрута"/>
+                                <TextBox Name="RoutesStationsIdRouteBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Название или id станции"/>
+                                <TextBox Name="RoutesStationsIdStationBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Время остановки (час мин)"/>
+                                <TextBox Name="RoutesStationsStopTimeBox"
+                                         Text="{Binding ts1, Mode=TwoWay, StringFormat=\{0:h\\:mm\}}"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Label HorizontalContentAlignment="Left"
+                                       Height="30"
+                                       Content="Время в пути (час мин)"/>
+                                <TextBox Name="RoutesStationsTravelTimeBox"
+                                         TextWrapping="Wrap" 
+                                         Height="30"/>
+                                <Button Click="RoutesStationsAddButton_Click"
+                                        Margin="0,10,0,0"
+                                        Content="Добавить"
+                                        Height="30"/>
+                            </StackPanel>
+                        </Grid>
+                    </Border>
+                    <DataGrid Name="RoutesStationsDataGrid"
+                              Grid.Column="1"/>
                 </Grid>
             </TabItem>
         </TabControl>

+ 181 - 14
RaspisKusach/Pages/AdministrationPage.xaml.cs

@@ -16,38 +16,205 @@ using System.Windows.Shapes;
 
 namespace RaspisKusach.Pages
 {
-    /// <summary>
-    /// Логика взаимодействия для AdministrationPage.xaml
-    /// </summary>
     public partial class AdministrationPage : Page
     {
+        public TimeSpan ts1;
+        public TimeSpan ts2;
+
         public AdministrationPage()
         {
             InitializeComponent();
         }
 
-        private void SaveButton_Click(object sender, RoutedEventArgs e)
+        private void TrainsButton_Click(object sender, RoutedEventArgs e)
         {
-            cnt.db.SaveChanges();
-
+            TrainsDataGrid.ItemsSource = cnt.db.Trains.ToList();
         }
 
-        private void TrainsButton_Click(object sender, RoutedEventArgs e)
+        private void TrainsAddButton_Click(object sender, RoutedEventArgs e)
         {
-            TrainsDataGrid.ItemsSource = cnt.db.Trains.ToList();
+            try
+            {
+                cnt.db.Trains.Add(new Trains()
+                {
+                    IdTrain = cnt.db.Trains.Select(p => p.IdTrain).DefaultIfEmpty(0).Max() + 1,
+                    Name = TrainsNameBox.Text,
+                    Category = TrainsCategoryBox.Text
+                });
+                cnt.db.SaveChanges();
+                cnt.db.SaveChanges();
+
+            }
+            catch (Exception ex)
+            {
+                new ErrorWindow(ex.Message).ShowDialog();
+            }
         }
-        private void FindRoutesButton_Click(object sender, RoutedEventArgs e)
+        private void StationsAddButton_Click(object sender, RoutedEventArgs e)
         {
-            //temp
+            try
+            {
+                cnt.db.Stations.Add(new Stations()
+                {
+                    IdStation = cnt.db.Stations.Select(p => p.IdStation).DefaultIfEmpty(0).Max() + 1,
+                    Name = StationsNameBox.Text,
+                    Location = StationsLocationBox.Text
+                });
+                cnt.db.SaveChanges();
+                cnt.db.SaveChanges();
+
+            }
+            catch (Exception ex)
+            {
+                new ErrorWindow(ex.Message).ShowDialog();
+            }
         }
+        private void TripsAddButton_Click(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                int trainId;
+                if (Functions.IsOnlyDigits(TripsIdTrainBox.Text) && cnt.db.Trains.Select(item => item.IdTrain).Contains(Convert.ToInt32(TripsIdTrainBox.Text)))
+                    trainId = Convert.ToInt32(TripsIdTrainBox.Text);
+                else if (cnt.db.Trains.Select(item => item.Name).Contains(TripsIdTrainBox.Text))
+                    trainId = cnt.db.Trains.Where(item => item.Name == TripsIdTrainBox.Text).Select(item => item.IdTrain).FirstOrDefault();
+                else
+                {
+                    new ErrorWindow("Поезд с таким названием или id не найден").ShowDialog();
+                    return;
+                }
 
-        private void TrainsDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
+                int routeId;
+                if (Functions.IsOnlyDigits(TripsIdRouteBox.Text) && cnt.db.Routes.Select(item => item.IdRoute).Contains(Convert.ToInt32(TripsIdRouteBox.Text)))
+                    routeId = Convert.ToInt32(TripsIdRouteBox.Text);
+                else if (cnt.db.Routes.Select(item => item.Name).Contains(TripsIdRouteBox.Text))
+                    routeId = cnt.db.Routes.Where(item => item.Name == TripsIdRouteBox.Text).Select(item => item.IdRoute).FirstOrDefault();
+                else
+                {
+                    new ErrorWindow("Маршрут с таким названием или id не найден").ShowDialog();
+                    return;
+                }
+                    
+                cnt.db.Trips.Add(new Trips()
+                {
+                    IdTrip = cnt.db.Trips.Select(p => p.IdTrip).DefaultIfEmpty(0).Max() + 1,
+                    IdTrain = trainId,
+                    IdRoute = routeId,
+                    TripStartDate = (DateTime)TripsStartDatePicker.SelectedDate
+                });
+                cnt.db.SaveChanges();
+                cnt.db.SaveChanges();
+
+            }
+            catch (Exception ex)
+            {
+                new ErrorWindow(ex.Message).ShowDialog();
+            }
+        }
+        private void RoutesAddButton_Click(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                cnt.db.Routes.Add(new Routes()
+                {
+                    IdRoute = cnt.db.Routes.Select(p => p.IdRoute).DefaultIfEmpty(0).Max() + 1,
+                    Name = RoutesNameBox.Text
+                });
+                cnt.db.SaveChanges();
+                new ErrorWindow("Успешно").ShowDialog();
+            }
+            catch (Exception ex)
+            {
+                new ErrorWindow(ex.Message).ShowDialog();
+            }
+        }
+        private void RoutesStationsAddButton_Click(object sender, RoutedEventArgs e)
         {
-            
+            try
+            {
+                int routeId;
+                if (Functions.IsOnlyDigits(RoutesStationsIdRouteBox.Text) && cnt.db.Routes.Select(item => item.IdRoute).Contains(Convert.ToInt32(RoutesStationsIdRouteBox.Text)))
+                    routeId = Convert.ToInt32(RoutesStationsIdRouteBox.Text);
+                else if (cnt.db.Routes.Select(item => item.Name).Contains(RoutesStationsIdRouteBox.Text))
+                    routeId = cnt.db.Routes.Where(item => item.Name == RoutesStationsIdRouteBox.Text).Select(item => item.IdRoute).FirstOrDefault();
+                else
+                {
+                    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);
+                else if (cnt.db.Stations.Select(item => item.Name).Contains(RoutesStationsIdStationBox.Text))
+                    stationId = cnt.db.Routes.Where(item => item.Name == RoutesStationsIdStationBox.Text).Select(item => item.IdRoute).FirstOrDefault();
+                else
+                {
+                    new ErrorWindow("Станция с таким названием или id не найдена").ShowDialog();
+                    return;
+                }
+
+                if(Functions.IsHHMMTimeSpanFromString(RoutesStationsStopTimeBox.Text))
+                {
+                    new ErrorWindow("Строка с временем остановки имела неверный формат").ShowDialog();
+                    return;
+                }
+                if(Functions.IsHHMMTimeSpanFromString(RoutesStationsTravelTimeBox.Text))
+                {
+                    new ErrorWindow("Строка с временем пути имела неверный формат").ShowDialog();
+                    return;
+                }
+
+                cnt.db.RoutesStations.Add(new RoutesStations()
+                {
+                    IdRouteStation = cnt.db.RoutesStations.Select(p => p.IdRouteStation).DefaultIfEmpty(0).Max() + 1,
+                    IdRoute = routeId,
+                    IdStation = stationId,
+                    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();
+            }
+            catch (Exception ex)
+            {
+                new ErrorWindow(ex.Message).ShowDialog();
+            }
         }
-        private void CarriagesDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        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();
+            }
         }
     }
 }