From 121bf60ad904fb11f0c012a0ed1327993f93f217 Mon Sep 17 00:00:00 2001
From: zw1st <144824777+zw1st@users.noreply.github.com>
Date: Mon, 16 Dec 2024 12:06:36 +0400
Subject: [PATCH 1/2] =?UTF-8?q?=D0=93=D0=9E=D0=9E=D0=9E=D0=9E=D0=9E=D0=9E?=
 =?UTF-8?q?=D0=9E=D0=9E=D0=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ProjectTourismCompany/Entities/Check.cs   |  21 ++
 .../ProjectTourismCompany/Entities/Client.cs  |  28 ++
 .../ProjectTourismCompany/Entities/Company.cs |  24 ++
 .../Entities/CompanyTrip.cs                   |  26 ++
 .../ProjectTourismCompany/Entities/Country.cs |  21 ++
 .../Entities/Enums/CleintStatus.cs            |  16 ++
 .../Entities/Enums/TravelType.cs              |  18 ++
 .../ProjectTourismCompany/Entities/Trip.cs    |  38 +++
 .../ProjectTourismCompany/Form1.Designer.cs   |  39 ---
 .../ProjectTourismCompany/Form1.cs            |  10 -
 .../FormTourismCompany.Designer.cs            | 137 +++++++++
 .../FormTourismCompany.cs                     |  87 ++++++
 .../FormTourismCompany.resx                   | 123 ++++++++
 .../Forms/FormCheck.Designer.cs               | 195 +++++++++++++
 .../ProjectTourismCompany/Forms/FormCheck.cs  |  88 ++++++
 .../{Form1.resx => Forms/FormCheck.resx}      |  50 ++--
 .../Forms/FormChecks.Designer.cs              | 111 ++++++++
 .../ProjectTourismCompany/Forms/FormChecks.cs | 100 +++++++
 .../Forms/FormChecks.resx                     | 120 ++++++++
 .../Forms/FormClient.Designer.cs              | 166 +++++++++++
 .../ProjectTourismCompany/Forms/FormClient.cs |  91 ++++++
 .../Forms/FormClient.resx                     | 120 ++++++++
 .../Forms/FormClients.Designer.cs             | 122 ++++++++
 .../Forms/FormClients.cs                      | 107 +++++++
 .../Forms/FormClients.resx                    | 120 ++++++++
 .../Forms/FormCompanies.Designer.cs           | 126 +++++++++
 .../Forms/FormCompanies.cs                    | 111 ++++++++
 .../Forms/FormCompanies.resx                  | 120 ++++++++
 .../Forms/FormCompany.Designer.cs             | 174 ++++++++++++
 .../Forms/FormCompany.cs                      | 103 +++++++
 .../Forms/FormCompany.resx                    | 126 +++++++++
 .../Forms/FormCountries.Designer.cs           | 126 +++++++++
 .../Forms/FormCountries.cs                    | 116 ++++++++
 .../Forms/FormCountries.resx                  | 120 ++++++++
 .../Forms/FormCountry.Designer.cs             |  98 +++++++
 .../Forms/FormCountry.cs                      |  81 ++++++
 .../Forms/FormCountry.resx                    | 120 ++++++++
 .../Forms/FormTrip.Designer.cs                | 264 ++++++++++++++++++
 .../ProjectTourismCompany/Forms/FormTrip.cs   | 110 ++++++++
 .../ProjectTourismCompany/Forms/FormTrip.resx | 120 ++++++++
 .../Forms/FormTrips.Designer.cs               |  98 +++++++
 .../ProjectTourismCompany/Forms/FormTrips.cs  |  64 +++++
 .../Forms/FormTrips.resx                      | 120 ++++++++
 .../ProjectTourismCompany/Program.cs          |  41 ++-
 .../ProjectTourismCompany.csproj              |  19 ++
 ...TourismCompany.Entities.Country.datasource |  10 +
 .../Properties/Resources.Designer.cs          | 103 +++++++
 .../Properties/Resources.resx                 | 133 +++++++++
 .../Repositories/ICheckRepository.cs          |  18 ++
 .../Repositories/IClientRepository.cs         |  17 ++
 .../Repositories/ICompanyRepository.cs        |  18 ++
 .../Repositories/ICountryRepository.cs        |  17 ++
 .../Repositories/ITripRepository.cs           |  21 ++
 .../Implementations/CheckRepository.cs        |  34 +++
 .../Implementations/ClientRepository.cs       |  36 +++
 .../Implementations/CompanyRepository.cs      |  36 +++
 .../Implementations/CountryRepository.cs      |  36 +++
 .../Implementations/TripRepository.cs         |  26 ++
 .../ProjectTourismCompany/Resources/minus.png | Bin 0 -> 2428 bytes
 .../Resources/pencil.jpg                      | Bin 0 -> 12382 bytes
 .../ProjectTourismCompany/Resources/plus.jpg  | Bin 0 -> 6843 bytes
 .../Resources/Карта мира.jpg         | Bin 0 -> 21842 bytes
 62 files changed, 4652 insertions(+), 88 deletions(-)
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Entities/Check.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Entities/Client.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Entities/Company.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Entities/CompanyTrip.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Entities/Country.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Entities/Enums/CleintStatus.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Entities/Enums/TravelType.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Entities/Trip.cs
 delete mode 100644 ProjectTourismCompany/ProjectTourismCompany/Form1.Designer.cs
 delete mode 100644 ProjectTourismCompany/ProjectTourismCompany/Form1.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.cs
 rename ProjectTourismCompany/ProjectTourismCompany/{Form1.resx => Forms/FormCheck.resx} (93%)
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Properties/DataSources/ProjectTourismCompany.Entities.Country.datasource
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Properties/Resources.Designer.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Properties/Resources.resx
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Repositories/ICheckRepository.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Repositories/IClientRepository.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Repositories/ICompanyRepository.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Repositories/ICountryRepository.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Repositories/ITripRepository.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CheckRepository.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/ClientRepository.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CompanyRepository.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CountryRepository.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/TripRepository.cs
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Resources/minus.png
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Resources/pencil.jpg
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Resources/plus.jpg
 create mode 100644 ProjectTourismCompany/ProjectTourismCompany/Resources/Карта мира.jpg

diff --git a/ProjectTourismCompany/ProjectTourismCompany/Entities/Check.cs b/ProjectTourismCompany/ProjectTourismCompany/Entities/Check.cs
new file mode 100644
index 0000000..942eab8
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Entities/Check.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Entities;
+
+public class Check
+{
+    public int Id { get; private set; }
+    public string Title { get; private set; } = string.Empty;
+    public DateTime PurchaseDate {  get; private set; }
+    public int Price { get; private set; }
+    public int TripId { get; private set; }
+    public int ClientId {  get; private set; }
+    public static Check CreateCheck(int id, string title, DateTime purchaseDate, int price,  int tripId, int clientId)
+    {
+        return new Check() { Id = id, Title = title, PurchaseDate = purchaseDate, Price = price, TripId = tripId, ClientId = clientId };
+    }       
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Entities/Client.cs b/ProjectTourismCompany/ProjectTourismCompany/Entities/Client.cs
new file mode 100644
index 0000000..83a87e6
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Entities/Client.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Entities.Enums;
+
+public class Client
+{
+    public int Id { get; private set; }
+    public string Name { get; private set; } = string.Empty;
+    public DateTime BirthDate { get; private set; }
+    public ClientStatus Status { get; private set; }
+    public string Phone {  get; private set; }= string.Empty;
+    public static Client CreateClient(int id, string name, DateTime birth, ClientStatus status, string phone)
+    {
+        return new Client()
+        {
+            Id = id,
+            Name = name,
+            BirthDate = birth,
+            Status = status,
+            Phone = phone
+        };
+        
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Entities/Company.cs b/ProjectTourismCompany/ProjectTourismCompany/Entities/Company.cs
new file mode 100644
index 0000000..36853b0
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Entities/Company.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Entities;
+
+public class Company
+{
+    public int Id { get; private set; }
+    public string Name { get; private set; } = string.Empty;
+    public int CountryId { get; private set; }
+    public IEnumerable<CompanyTrip> CompanyTrip
+    {
+        get;
+        private set;
+    } = [];
+
+    public static Company CreateCompany(int id, string name, int countryId, IEnumerable<CompanyTrip> companyTrip)
+    {
+        return new Company() { Id = id, Name = name, CountryId = countryId, CompanyTrip = companyTrip };
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Entities/CompanyTrip.cs b/ProjectTourismCompany/ProjectTourismCompany/Entities/CompanyTrip.cs
new file mode 100644
index 0000000..ac8d1dc
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Entities/CompanyTrip.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Entities;
+
+public class CompanyTrip
+{
+    public int Id { get; private set; }
+    public int CompanyId { get; private set; }
+    public int TripId { get; private set; }
+    public int AdditionalPrice { get; private set; }
+    public static CompanyTrip CreateCompanyTrip(int id, int companyId, int tripId, int additionalPrice)
+    {
+        return new CompanyTrip()
+        {
+            Id = id,
+            CompanyId = companyId,
+            TripId = tripId,
+            AdditionalPrice = additionalPrice
+        };
+    }
+
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Entities/Country.cs b/ProjectTourismCompany/ProjectTourismCompany/Entities/Country.cs
new file mode 100644
index 0000000..a15c011
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Entities/Country.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Entities;
+
+public class Country
+{
+    public int Id {  get; private set; }
+    public string CountryName { get; private set; }=string.Empty;
+    public static Country CreateCountry(int id, string countryName)
+    {
+        return new Country
+        {
+            Id = id,
+            CountryName = countryName,
+        };
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Entities/Enums/CleintStatus.cs b/ProjectTourismCompany/ProjectTourismCompany/Entities/Enums/CleintStatus.cs
new file mode 100644
index 0000000..397a129
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Entities/Enums/CleintStatus.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Entities.Enums;
+
+public enum ClientStatus
+{
+    None = 0,
+    Student = 1,
+    Veteran = 3,
+    Invalid = 4,
+    Parent = 5,
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Entities/Enums/TravelType.cs b/ProjectTourismCompany/ProjectTourismCompany/Entities/Enums/TravelType.cs
new file mode 100644
index 0000000..117b222
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Entities/Enums/TravelType.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Entities.Enums;
+
+[Flags]
+public enum TravelType
+{
+    None = 0,
+    Hiking = 1,
+    Bus = 2,
+    Sights = 4,
+    Water = 8,
+    Event = 16
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Entities/Trip.cs b/ProjectTourismCompany/ProjectTourismCompany/Entities/Trip.cs
new file mode 100644
index 0000000..1442654
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Entities/Trip.cs
@@ -0,0 +1,38 @@
+using ProjectTourismCompany.Entities.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Entities;
+
+public class Trip
+{
+    public int Id { get; private set; }
+    public string Title { get; private set; } = string.Empty;
+    public int Price {  get; private set; }
+    public int HumanCapacity {  get; private set; }
+    public DateTime StartDate {  get; private set; }
+    public DateTime EndDate { get; private set;}
+    public string StartCity {  get; private set; }=string.Empty;
+    public string EndCity { get; private set;} =string.Empty;
+    public int CompanyId {  get; private set; }
+    public TravelType TravelType { get; private set; }
+    
+    public static Trip CreateOpeartion(int id, string title, int price, int humanCapacity, DateTime startDate, DateTime endDate, string startCity, string endCity, TravelType travelType)
+    {
+        return new Trip
+        {
+            Title = title,
+            Id = id,
+            Price = price,
+            HumanCapacity = humanCapacity,
+            StartDate = startDate,
+            EndDate = endDate,
+            StartCity = startCity,
+            EndCity = endCity,
+            TravelType = travelType,
+        };
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Form1.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Form1.Designer.cs
deleted file mode 100644
index a6d4b62..0000000
--- a/ProjectTourismCompany/ProjectTourismCompany/Form1.Designer.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-namespace ProjectTourismCompany
-{
-    partial class Form1
-    {
-        /// <summary>
-        ///  Required designer variable.
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary>
-        ///  Clean up any resources being used.
-        /// </summary>
-        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// <summary>
-        ///  Required method for Designer support - do not modify
-        ///  the contents of this method with the code editor.
-        /// </summary>
-        private void InitializeComponent()
-        {
-            this.components = new System.ComponentModel.Container();
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(800, 450);
-            this.Text = "Form1";
-        }
-
-        #endregion
-    }
-}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Form1.cs b/ProjectTourismCompany/ProjectTourismCompany/Form1.cs
deleted file mode 100644
index e354936..0000000
--- a/ProjectTourismCompany/ProjectTourismCompany/Form1.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace ProjectTourismCompany
-{
-    public partial class Form1 : Form
-    {
-        public Form1()
-        {
-            InitializeComponent();
-        }
-    }
-}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.Designer.cs
new file mode 100644
index 0000000..1018606
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.Designer.cs
@@ -0,0 +1,137 @@
+namespace ProjectTourismCompany
+{
+    partial class FormTourismCompany
+    {
+        /// <summary>
+        ///  Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        ///  Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        ///  Required method for Designer support - do not modify
+        ///  the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            menuStrip1 = new MenuStrip();
+            справочникиToolStripMenuItem = new ToolStripMenuItem();
+            ClientsToolStripMenuItem = new ToolStripMenuItem();
+            CompaniesToolStripMenuItem = new ToolStripMenuItem();
+            CountriesToolStripMenuItem = new ToolStripMenuItem();
+            операцииToolStripMenuItem = new ToolStripMenuItem();
+            ChecksToolStripMenuItem = new ToolStripMenuItem();
+            ToursToolStripMenuItem = new ToolStripMenuItem();
+            отчетыToolStripMenuItem = new ToolStripMenuItem();
+            menuStrip1.SuspendLayout();
+            SuspendLayout();
+            // 
+            // menuStrip1
+            // 
+            menuStrip1.ImageScalingSize = new Size(20, 20);
+            menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, отчетыToolStripMenuItem });
+            menuStrip1.Location = new Point(0, 0);
+            menuStrip1.Name = "menuStrip1";
+            menuStrip1.Size = new Size(800, 28);
+            menuStrip1.TabIndex = 0;
+            menuStrip1.Text = "menuStrip1";
+            // 
+            // справочникиToolStripMenuItem
+            // 
+            справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ClientsToolStripMenuItem, CompaniesToolStripMenuItem, CountriesToolStripMenuItem });
+            справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem";
+            справочникиToolStripMenuItem.Size = new Size(117, 24);
+            справочникиToolStripMenuItem.Text = "Справочники";
+            // 
+            // ClientsToolStripMenuItem
+            // 
+            ClientsToolStripMenuItem.Name = "ClientsToolStripMenuItem";
+            ClientsToolStripMenuItem.Size = new Size(165, 26);
+            ClientsToolStripMenuItem.Text = "Клиенты";
+            ClientsToolStripMenuItem.Click += ClientsToolStripMenuItem_Click;
+            // 
+            // CompaniesToolStripMenuItem
+            // 
+            CompaniesToolStripMenuItem.Name = "CompaniesToolStripMenuItem";
+            CompaniesToolStripMenuItem.Size = new Size(165, 26);
+            CompaniesToolStripMenuItem.Text = "Компании";
+            CompaniesToolStripMenuItem.Click += CompaniesToolStripMenuItem_Click;
+            // 
+            // CountriesToolStripMenuItem
+            // 
+            CountriesToolStripMenuItem.Name = "CountriesToolStripMenuItem";
+            CountriesToolStripMenuItem.Size = new Size(165, 26);
+            CountriesToolStripMenuItem.Text = "Страны";
+            CountriesToolStripMenuItem.Click += CountriesToolStripMenuItem_Click;
+            // 
+            // операцииToolStripMenuItem
+            // 
+            операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ChecksToolStripMenuItem, ToursToolStripMenuItem });
+            операцииToolStripMenuItem.Name = "операцииToolStripMenuItem";
+            операцииToolStripMenuItem.Size = new Size(95, 24);
+            операцииToolStripMenuItem.Text = "Операции";
+            // 
+            // ChecksToolStripMenuItem
+            // 
+            ChecksToolStripMenuItem.Name = "ChecksToolStripMenuItem";
+            ChecksToolStripMenuItem.Size = new Size(302, 26);
+            ChecksToolStripMenuItem.Text = "Заключение договоров (чеки)";
+            ChecksToolStripMenuItem.Click += ChecksToolStripMenuItem_Click;
+            // 
+            // ToursToolStripMenuItem
+            // 
+            ToursToolStripMenuItem.Name = "ToursToolStripMenuItem";
+            ToursToolStripMenuItem.Size = new Size(302, 26);
+            ToursToolStripMenuItem.Text = "Проведенные туры";
+            ToursToolStripMenuItem.Click += TripsToolStripMenuItem_Click;
+            // 
+            // отчетыToolStripMenuItem
+            // 
+            отчетыToolStripMenuItem.Name = "отчетыToolStripMenuItem";
+            отчетыToolStripMenuItem.Size = new Size(73, 24);
+            отчетыToolStripMenuItem.Text = "Отчеты";
+            // 
+            // FormTourismCompany
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            BackgroundImage = Properties.Resources.Карта_мира;
+            BackgroundImageLayout = ImageLayout.Stretch;
+            ClientSize = new Size(800, 450);
+            Controls.Add(menuStrip1);
+            MainMenuStrip = menuStrip1;
+            Name = "FormTourismCompany";
+            Text = "Туристическое агенство";
+            menuStrip1.ResumeLayout(false);
+            menuStrip1.PerformLayout();
+            ResumeLayout(false);
+            PerformLayout();
+        }
+
+        #endregion
+
+        private MenuStrip menuStrip1;
+        private ToolStripMenuItem справочникиToolStripMenuItem;
+        private ToolStripMenuItem операцииToolStripMenuItem;
+        private ToolStripMenuItem отчетыToolStripMenuItem;
+        private ToolStripMenuItem ClientsToolStripMenuItem;
+        private ToolStripMenuItem CompaniesToolStripMenuItem;
+        private ToolStripMenuItem CountriesToolStripMenuItem;
+        private ToolStripMenuItem ChecksToolStripMenuItem;
+        private ToolStripMenuItem ToursToolStripMenuItem;
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.cs b/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.cs
new file mode 100644
index 0000000..57e8988
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.cs
@@ -0,0 +1,87 @@
+using ProjectTourismCompany.Forms;
+using System.ComponentModel;
+using Unity;
+
+namespace ProjectTourismCompany;
+
+public partial class FormTourismCompany : Form
+{
+    private readonly IUnityContainer _container;
+    public FormTourismCompany(IUnityContainer container)
+    {
+        InitializeComponent();
+        _container = container ?? throw new ArgumentNullException(nameof(container));
+    }
+
+
+    private void TripsToolStripMenuItem_Click(object sender,
+    EventArgs e)
+    {
+        try
+        {
+            _container.Resolve<FormTrips>().ShowDialog();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "������ ��� ��������",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+
+    private void CompaniesToolStripMenuItem_Click(object sender,
+        EventArgs e)
+    {
+        try
+        {
+            _container.Resolve<FormCompanies>().ShowDialog();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "������ ��� ��������",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void ChecksToolStripMenuItem_Click(object sender,
+        EventArgs e)
+    {
+        try
+        {
+            _container.Resolve<FormChecks>().ShowDialog();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "������ ��� ��������",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void CountriesToolStripMenuItem_Click(object sender,
+        EventArgs e)
+    {
+        try
+        {
+            _container.Resolve<FormCountries>().ShowDialog();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "������ ��� ��������",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void ClientsToolStripMenuItem_Click(object sender,
+        EventArgs e)
+    {
+        try
+        {
+            _container.Resolve<FormClients>().ShowDialog();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "������ ��� ��������",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.resx b/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.resx
new file mode 100644
index 0000000..a0623c8
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.resx
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.Designer.cs
new file mode 100644
index 0000000..345125b
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.Designer.cs
@@ -0,0 +1,195 @@
+namespace ProjectTourismCompany.Forms
+{
+    partial class FormCheck
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            buttonCancel = new Button();
+            buttonSave = new Button();
+            dateTimePickerPurchaseDate = new DateTimePicker();
+            labelStartDate = new Label();
+            label1 = new Label();
+            numericUpDownPrice = new NumericUpDown();
+            label2 = new Label();
+            textBoxTitle = new TextBox();
+            label3 = new Label();
+            label4 = new Label();
+            comboBoxClient = new ComboBox();
+            comboBoxTrip = new ComboBox();
+            ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).BeginInit();
+            SuspendLayout();
+            // 
+            // buttonCancel
+            // 
+            buttonCancel.BackColor = Color.IndianRed;
+            buttonCancel.Location = new Point(221, 260);
+            buttonCancel.Name = "buttonCancel";
+            buttonCancel.Size = new Size(135, 51);
+            buttonCancel.TabIndex = 31;
+            buttonCancel.Text = "Отмена";
+            buttonCancel.UseVisualStyleBackColor = false;
+            buttonCancel.Click += ButtonCancel_Click;
+            // 
+            // buttonSave
+            // 
+            buttonSave.BackColor = Color.LimeGreen;
+            buttonSave.Location = new Point(367, 260);
+            buttonSave.Name = "buttonSave";
+            buttonSave.Size = new Size(135, 51);
+            buttonSave.TabIndex = 30;
+            buttonSave.Text = "Сохранить";
+            buttonSave.UseVisualStyleBackColor = false;
+            buttonSave.Click += buttonSave_Click;
+            // 
+            // dateTimePickerPurchaseDate
+            // 
+            dateTimePickerPurchaseDate.Location = new Point(282, 66);
+            dateTimePickerPurchaseDate.Name = "dateTimePickerPurchaseDate";
+            dateTimePickerPurchaseDate.Size = new Size(220, 27);
+            dateTimePickerPurchaseDate.TabIndex = 25;
+            // 
+            // labelStartDate
+            // 
+            labelStartDate.AutoSize = true;
+            labelStartDate.Location = new Point(45, 71);
+            labelStartDate.Name = "labelStartDate";
+            labelStartDate.Size = new Size(92, 20);
+            labelStartDate.TabIndex = 18;
+            labelStartDate.Text = "Дата сделки";
+            // 
+            // label1
+            // 
+            label1.AutoSize = true;
+            label1.Location = new Point(64, 117);
+            label1.Name = "label1";
+            label1.Size = new Size(45, 20);
+            label1.TabIndex = 34;
+            label1.Text = "Цена";
+            // 
+            // numericUpDownPrice
+            // 
+            numericUpDownPrice.Location = new Point(284, 110);
+            numericUpDownPrice.Maximum = new decimal(new int[] { 1000000, 0, 0, 0 });
+            numericUpDownPrice.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
+            numericUpDownPrice.Name = "numericUpDownPrice";
+            numericUpDownPrice.Size = new Size(217, 27);
+            numericUpDownPrice.TabIndex = 35;
+            numericUpDownPrice.Value = new decimal(new int[] { 1, 0, 0, 0 });
+            // 
+            // label2
+            // 
+            label2.AutoSize = true;
+            label2.Location = new Point(45, 163);
+            label2.Name = "label2";
+            label2.Size = new Size(101, 20);
+            label2.TabIndex = 36;
+            label2.Text = "ФИО клиента";
+            // 
+            // textBoxTitle
+            // 
+            textBoxTitle.Location = new Point(282, 22);
+            textBoxTitle.Name = "textBoxTitle";
+            textBoxTitle.Size = new Size(220, 27);
+            textBoxTitle.TabIndex = 38;
+            // 
+            // label3
+            // 
+            label3.AutoSize = true;
+            label3.Location = new Point(45, 22);
+            label3.Name = "label3";
+            label3.Size = new Size(135, 20);
+            label3.TabIndex = 37;
+            label3.Text = "Название путевки";
+            // 
+            // label4
+            // 
+            label4.AutoSize = true;
+            label4.Location = new Point(45, 208);
+            label4.Name = "label4";
+            label4.Size = new Size(64, 20);
+            label4.TabIndex = 39;
+            label4.Text = "Путевка";
+            // 
+            // comboBoxClient
+            // 
+            comboBoxClient.DropDownStyle = ComboBoxStyle.DropDownList;
+            comboBoxClient.FormattingEnabled = true;
+            comboBoxClient.Location = new Point(282, 163);
+            comboBoxClient.Name = "comboBoxClient";
+            comboBoxClient.Size = new Size(217, 28);
+            comboBoxClient.TabIndex = 41;
+            // 
+            // comboBoxTrip
+            // 
+            comboBoxTrip.DropDownStyle = ComboBoxStyle.DropDownList;
+            comboBoxTrip.FormattingEnabled = true;
+            comboBoxTrip.Location = new Point(282, 208);
+            comboBoxTrip.Name = "comboBoxTrip";
+            comboBoxTrip.Size = new Size(217, 28);
+            comboBoxTrip.TabIndex = 42;
+            // 
+            // FormCheck
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(513, 322);
+            Controls.Add(comboBoxTrip);
+            Controls.Add(comboBoxClient);
+            Controls.Add(label4);
+            Controls.Add(textBoxTitle);
+            Controls.Add(label3);
+            Controls.Add(label2);
+            Controls.Add(numericUpDownPrice);
+            Controls.Add(label1);
+            Controls.Add(buttonCancel);
+            Controls.Add(buttonSave);
+            Controls.Add(dateTimePickerPurchaseDate);
+            Controls.Add(labelStartDate);
+            Name = "FormCheck";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "Чек";
+            ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).EndInit();
+            ResumeLayout(false);
+            PerformLayout();
+        }
+
+        #endregion
+
+        private Button buttonCancel;
+        private Button buttonSave;
+        private DateTimePicker dateTimePickerPurchaseDate;
+        private Label labelStartDate;
+        private Label label1;
+        private NumericUpDown numericUpDownPrice;
+        private Label label2;
+        private TextBox textBoxTitle;
+        private Label label3;
+        private Label label4;
+        private ComboBox comboBoxClient;
+        private ComboBox comboBoxTrip;
+    }
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.cs
new file mode 100644
index 0000000..29ca619
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.cs
@@ -0,0 +1,88 @@
+using Microsoft.VisualBasic.FileIO;
+using ProjectTourismCompany.Entities;
+using ProjectTourismCompany.Repositories;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ProjectTourismCompany.Forms;
+
+public partial class FormCheck : Form
+{
+    private readonly ICheckRepository _checkRepository;
+    private int _checkId;
+    public int Id
+    {
+        set
+        {
+            try
+            {
+                var check = _checkRepository.ReadCheckById(value);
+                if (check == null)
+                {
+                    throw new
+                    InvalidDataException(nameof(check));
+                }
+                textBoxTitle.Text = check.Title;
+                dateTimePickerPurchaseDate.Value = check.PurchaseDate;
+                numericUpDownPrice.Value = check.Price;
+
+                comboBoxClient.SelectedItem = check.ClientId;
+
+                comboBoxTrip.SelectedItem = check.TripId;
+                _checkId = value;
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                return;
+            }
+        }
+    }
+    public FormCheck(ICheckRepository checkRepository, IClientRepository clientRepository)
+    {
+        InitializeComponent();
+        _checkRepository = checkRepository ?? throw new ArgumentNullException(nameof(checkRepository));
+        
+        comboBoxClient.DataSource = clientRepository.ReadClients();
+        comboBoxClient.DisplayMember = "Name";
+        comboBoxClient.ValueMember = "Id";
+
+        comboBoxTrip.DisplayMember = "Title";
+        comboBoxTrip.ValueMember = "Id";
+    }
+    private void buttonSave_Click(object sender, EventArgs e)
+    {
+        try
+        {
+            if (string.IsNullOrWhiteSpace(textBoxTitle.Text) ||
+            comboBoxTrip.SelectedIndex < 0 ||
+            comboBoxClient.SelectedIndex < 0)
+            {
+                throw new Exception("Имеются незаполненные поля");
+            }
+            _checkRepository.CreateCheck(Check.CreateCheck(_checkId, textBoxTitle.Text, dateTimePickerPurchaseDate.Value,
+                (int)numericUpDownPrice.Value, (int)comboBoxTrip.SelectedItem!, 
+                (int)comboBoxClient.SelectedItem!));
+            Close();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при сохранении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void ButtonCancel_Click(object sender, EventArgs e) =>
+    Close();
+
+
+}
+
+
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Form1.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.resx
similarity index 93%
rename from ProjectTourismCompany/ProjectTourismCompany/Form1.resx
rename to ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.resx
index 1af7de1..af32865 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Form1.resx
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCheck.resx
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 <root>
-  <!-- 
+  <!--
     Microsoft ResX Schema 
-    
+
     Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
     associated with the data types.
-    
+
     Example:
-    
+
     ... ado.net/XML headers & schema ...
     <resheader name="resmimetype">text/microsoft-resx</resheader>
     <resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
         <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
         <comment>This is a comment</comment>
     </data>
-                
-    There are any number of "resheader" rows that contain simple 
+
+    There are any number of "resheader" rows that contain simple
     name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
     mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
     extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
     read any of the formats listed below.
-    
+
     mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
+    value   : The object must be serialized with
             : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
             : and then encoded with base64 encoding.
     
     mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
+    value   : The object must be serialized with
             : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
             : and then encoded with base64 encoding.
 
     mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
+    value   : The object must be serialized into a byte array
             : using a System.ComponentModel.TypeConverter
             : and then encoded with base64 encoding.
     -->
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.Designer.cs
new file mode 100644
index 0000000..4979bab
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.Designer.cs
@@ -0,0 +1,111 @@
+namespace ProjectTourismCompany.Forms
+{
+    partial class FormChecks
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            dataGridViewChecks = new DataGridView();
+            panel1 = new Panel();
+            buttonDelCheck = new Button();
+            buttonAddCheck = new Button();
+            ((System.ComponentModel.ISupportInitialize)dataGridViewChecks).BeginInit();
+            panel1.SuspendLayout();
+            SuspendLayout();
+            // 
+            // dataGridViewChecks
+            // 
+            dataGridViewChecks.AllowUserToAddRows = false;
+            dataGridViewChecks.AllowUserToDeleteRows = false;
+            dataGridViewChecks.AllowUserToResizeColumns = false;
+            dataGridViewChecks.AllowUserToResizeRows = false;
+            dataGridViewChecks.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+            dataGridViewChecks.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            dataGridViewChecks.Dock = DockStyle.Fill;
+            dataGridViewChecks.Location = new Point(0, 0);
+            dataGridViewChecks.MultiSelect = false;
+            dataGridViewChecks.Name = "dataGridViewChecks";
+            dataGridViewChecks.ReadOnly = true;
+            dataGridViewChecks.RowHeadersVisible = false;
+            dataGridViewChecks.RowHeadersWidth = 51;
+            dataGridViewChecks.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+            dataGridViewChecks.Size = new Size(800, 450);
+            dataGridViewChecks.TabIndex = 0;
+            // 
+            // panel1
+            // 
+            panel1.Controls.Add(buttonDelCheck);
+            panel1.Controls.Add(buttonAddCheck);
+            panel1.Dock = DockStyle.Right;
+            panel1.Location = new Point(643, 0);
+            panel1.Name = "panel1";
+            panel1.Size = new Size(157, 450);
+            panel1.TabIndex = 1;
+            // 
+            // buttonDelCheck
+            // 
+            buttonDelCheck.BackgroundImage = Properties.Resources.minus;
+            buttonDelCheck.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonDelCheck.Location = new Point(17, 184);
+            buttonDelCheck.Name = "buttonDelCheck";
+            buttonDelCheck.Size = new Size(94, 80);
+            buttonDelCheck.TabIndex = 5;
+            buttonDelCheck.UseVisualStyleBackColor = true;
+            buttonDelCheck.Click += buttonDel_Click;
+            // 
+            // buttonAddCheck
+            // 
+            buttonAddCheck.BackgroundImage = Properties.Resources.plus;
+            buttonAddCheck.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonAddCheck.Location = new Point(17, 12);
+            buttonAddCheck.Name = "buttonAddCheck";
+            buttonAddCheck.Size = new Size(94, 80);
+            buttonAddCheck.TabIndex = 3;
+            buttonAddCheck.UseVisualStyleBackColor = true;
+            buttonAddCheck.Click += ButtonAdd_Click;
+            // 
+            // FormChecks
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(800, 450);
+            Controls.Add(panel1);
+            Controls.Add(dataGridViewChecks);
+            Name = "FormChecks";
+            Text = "Чеки";
+            ((System.ComponentModel.ISupportInitialize)dataGridViewChecks).EndInit();
+            panel1.ResumeLayout(false);
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DataGridView dataGridViewChecks;
+        private Panel panel1;
+        private Button buttonDelCheck;
+        private Button buttonAddCheck;
+    }
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.cs
new file mode 100644
index 0000000..3464838
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.cs
@@ -0,0 +1,100 @@
+using ProjectTourismCompany.Repositories;
+using ProjectTourismCompany.Repositories.Implementations;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Unity;
+
+namespace ProjectTourismCompany.Forms;
+
+public partial class FormChecks : Form
+{
+    private readonly IUnityContainer _container;
+    private readonly ICheckRepository _checkRepository;
+
+    public FormChecks(IUnityContainer container, ICheckRepository checkRepository)
+    {
+        InitializeComponent();
+        _container = container ??
+        throw new ArgumentNullException(nameof(container));
+        _checkRepository = checkRepository ??
+        throw new
+        ArgumentNullException(nameof(checkRepository));
+    }
+
+
+    private void FormChecks_Load(object sender, EventArgs e)
+    {
+        try
+        {
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при загрузке",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+
+    private void ButtonAdd_Click(object sender, EventArgs e)
+    {
+        try
+        {
+            _container.Resolve<FormCheck>().ShowDialog();
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+        MessageBox.Show(ex.Message, "Ошибка при добавлении",
+        MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void buttonDel_Click(object sender, EventArgs e)
+    {
+        if (!TryGetIdentifierFromSelectedRow(out var findId))
+        {
+            return;
+        }
+        if (MessageBox.Show("Удалить запись?", "Удаление",
+        MessageBoxButtons.YesNo) != DialogResult.Yes)
+        {
+            return;
+        }
+        try
+        {
+            _checkRepository.DeleteCheck(findId);
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при удалении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private bool TryGetIdentifierFromSelectedRow(out int id)
+    {
+        id = 0;
+        if (dataGridViewChecks.SelectedRows.Count < 1)
+        {
+            MessageBox.Show("Нет выбранной записи", "Ошибка",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+            return false;
+        }
+        id = Convert.ToInt32(dataGridViewChecks.SelectedRows[0].Cells["Id"].Value);
+        return true;
+    }
+
+
+    private void LoadList() => dataGridViewChecks.DataSource =
+    _checkRepository.ReadChecks();
+}
+
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.Designer.cs
new file mode 100644
index 0000000..d929217
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.Designer.cs
@@ -0,0 +1,166 @@
+namespace ProjectTourismCompany.Forms
+{
+    partial class FormClient
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            textBoxName = new TextBox();
+            textBoxPhoneNumber = new TextBox();
+            label1 = new Label();
+            dateTimePickerBirthDate = new DateTimePicker();
+            label2 = new Label();
+            label3 = new Label();
+            label4 = new Label();
+            buttonSave = new Button();
+            buttonCancel = new Button();
+            comboBoxStatus = new ComboBox();
+            SuspendLayout();
+            // 
+            // textBoxName
+            // 
+            textBoxName.Location = new Point(230, 12);
+            textBoxName.Name = "textBoxName";
+            textBoxName.Size = new Size(198, 27);
+            textBoxName.TabIndex = 0;
+            // 
+            // textBoxPhoneNumber
+            // 
+            textBoxPhoneNumber.Location = new Point(230, 198);
+            textBoxPhoneNumber.Name = "textBoxPhoneNumber";
+            textBoxPhoneNumber.Size = new Size(198, 27);
+            textBoxPhoneNumber.TabIndex = 1;
+            // 
+            // label1
+            // 
+            label1.AutoSize = true;
+            label1.Location = new Point(63, 15);
+            label1.Name = "label1";
+            label1.Size = new Size(42, 20);
+            label1.TabIndex = 2;
+            label1.Text = "ФИО";
+            // 
+            // dateTimePickerBirthDate
+            // 
+            dateTimePickerBirthDate.Location = new Point(230, 45);
+            dateTimePickerBirthDate.Name = "dateTimePickerBirthDate";
+            dateTimePickerBirthDate.Size = new Size(198, 27);
+            dateTimePickerBirthDate.TabIndex = 3;
+            // 
+            // label2
+            // 
+            label2.AutoSize = true;
+            label2.Location = new Point(63, 50);
+            label2.Name = "label2";
+            label2.Size = new Size(116, 20);
+            label2.TabIndex = 4;
+            label2.Text = "Дата рождения";
+            // 
+            // label3
+            // 
+            label3.AutoSize = true;
+            label3.Location = new Point(63, 121);
+            label3.Name = "label3";
+            label3.Size = new Size(52, 20);
+            label3.TabIndex = 5;
+            label3.Text = "Статус";
+            // 
+            // label4
+            // 
+            label4.AutoSize = true;
+            label4.Location = new Point(63, 201);
+            label4.Name = "label4";
+            label4.Size = new Size(69, 20);
+            label4.TabIndex = 6;
+            label4.Text = "Телефон";
+            // 
+            // buttonSave
+            // 
+            buttonSave.BackColor = Color.LimeGreen;
+            buttonSave.Location = new Point(293, 281);
+            buttonSave.Name = "buttonSave";
+            buttonSave.Size = new Size(135, 51);
+            buttonSave.TabIndex = 8;
+            buttonSave.Text = "Сохранить";
+            buttonSave.UseVisualStyleBackColor = false;
+            buttonSave.Click += buttonSave_Click;
+            // 
+            // buttonCancel
+            // 
+            buttonCancel.BackColor = Color.IndianRed;
+            buttonCancel.Location = new Point(147, 281);
+            buttonCancel.Name = "buttonCancel";
+            buttonCancel.Size = new Size(135, 51);
+            buttonCancel.TabIndex = 9;
+            buttonCancel.Text = "Отмена";
+            buttonCancel.UseVisualStyleBackColor = false;
+            buttonCancel.Click += ButtonCancel_Click;
+            // 
+            // comboBoxStatus
+            // 
+            comboBoxStatus.DropDownStyle = ComboBoxStyle.DropDownList;
+            comboBoxStatus.FormattingEnabled = true;
+            comboBoxStatus.Location = new Point(230, 121);
+            comboBoxStatus.Name = "comboBoxStatus";
+            comboBoxStatus.Size = new Size(198, 28);
+            comboBoxStatus.TabIndex = 10;
+            // 
+            // FormClient
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(442, 344);
+            Controls.Add(comboBoxStatus);
+            Controls.Add(buttonCancel);
+            Controls.Add(buttonSave);
+            Controls.Add(label4);
+            Controls.Add(label3);
+            Controls.Add(label2);
+            Controls.Add(dateTimePickerBirthDate);
+            Controls.Add(label1);
+            Controls.Add(textBoxPhoneNumber);
+            Controls.Add(textBoxName);
+            Name = "FormClient";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "Клиент";
+            ResumeLayout(false);
+            PerformLayout();
+        }
+
+        #endregion
+
+        private TextBox textBoxName;
+        private TextBox textBoxPhoneNumber;
+        private Label label1;
+        private DateTimePicker dateTimePickerBirthDate;
+        private Label label2;
+        private Label label3;
+        private Label label4;
+        private Button buttonSave;
+        private Button buttonCancel;
+        private ComboBox comboBoxStatus;
+    }
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.cs
new file mode 100644
index 0000000..a6663d1
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.cs
@@ -0,0 +1,91 @@
+using Microsoft.VisualBasic.FileIO;
+using ProjectTourismCompany.Entities.Enums;
+using ProjectTourismCompany.Repositories;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ProjectTourismCompany.Forms;
+
+public partial class FormClient : Form
+{
+
+    private readonly IClientRepository _clientRepository;
+    private int? _clientId;
+    public int Id
+    {
+        set
+        {
+            try
+            {
+                var client = _clientRepository.ReadClientById(value);
+                if (client == null)
+                {
+                    throw new InvalidDataException(nameof(client));
+                }
+
+                textBoxName.Text = client.Name;
+                textBoxPhoneNumber.Text = client.Phone;
+                comboBoxStatus.SelectedItem = client.Status;
+                dateTimePickerBirthDate.Value = client.BirthDate;
+                _clientId = value;
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                return;
+            }
+        }
+    }
+
+
+    public FormClient(IClientRepository clientRepository)
+    {
+        InitializeComponent();
+        _clientRepository = clientRepository ??
+        throw new
+        ArgumentNullException(nameof(clientRepository));
+        comboBoxStatus.DataSource =
+Enum.GetValues(typeof(ClientStatus));
+    }
+
+    private void buttonSave_Click(object sender, EventArgs e)
+    {
+        try
+        {
+            if (string.IsNullOrWhiteSpace(textBoxName.Text)
+            ||
+            string.IsNullOrWhiteSpace(textBoxPhoneNumber.Text))
+            {
+                throw new Exception("Имеются незаполненные поля");
+            }
+            if (_clientId.HasValue)
+            {
+                _clientRepository.UpdateClient(CreateClient(_clientId.Value));
+            }
+            else
+            {
+                _clientRepository.UpdateClient(CreateClient(0));
+            }
+            Close();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при сохранении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void ButtonCancel_Click(object sender, EventArgs e) => Close();
+
+    private Client CreateClient(int id)
+    {
+        return Client.CreateClient(id, textBoxName.Text, dateTimePickerBirthDate.Value, (ClientStatus)comboBoxStatus.SelectedItem!, textBoxPhoneNumber.Text);
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClient.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.Designer.cs
new file mode 100644
index 0000000..2f4f961
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.Designer.cs
@@ -0,0 +1,122 @@
+namespace ProjectTourismCompany.Forms
+{
+    partial class FormClients
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            panel1 = new Panel();
+            buttonDelClient = new Button();
+            buttonUpdClient = new Button();
+            buttonAddClient = new Button();
+            dataGridViewClient = new DataGridView();
+            panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)dataGridViewClient).BeginInit();
+            SuspendLayout();
+            // 
+            // panel1
+            // 
+            panel1.Controls.Add(buttonDelClient);
+            panel1.Controls.Add(buttonUpdClient);
+            panel1.Controls.Add(buttonAddClient);
+            panel1.Dock = DockStyle.Right;
+            panel1.Location = new Point(669, 0);
+            panel1.Name = "panel1";
+            panel1.Size = new Size(131, 450);
+            panel1.TabIndex = 0;
+            // 
+            // buttonDelClient
+            // 
+            buttonDelClient.BackgroundImage = Properties.Resources.minus;
+            buttonDelClient.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonDelClient.Location = new Point(6, 184);
+            buttonDelClient.Name = "buttonDelClient";
+            buttonDelClient.Size = new Size(94, 80);
+            buttonDelClient.TabIndex = 2;
+            buttonDelClient.UseVisualStyleBackColor = true;
+            buttonDelClient.Click += buttonDel_Click;
+            // 
+            // buttonUpdClient
+            // 
+            buttonUpdClient.BackgroundImage = Properties.Resources.pencil;
+            buttonUpdClient.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonUpdClient.Location = new Point(6, 98);
+            buttonUpdClient.Name = "buttonUpdClient";
+            buttonUpdClient.Size = new Size(94, 80);
+            buttonUpdClient.TabIndex = 1;
+            buttonUpdClient.UseVisualStyleBackColor = true;
+            buttonUpdClient.Click += buttonUpd_Click;
+            // 
+            // buttonAddClient
+            // 
+            buttonAddClient.BackgroundImage = Properties.Resources.plus;
+            buttonAddClient.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonAddClient.Location = new Point(6, 12);
+            buttonAddClient.Name = "buttonAddClient";
+            buttonAddClient.Size = new Size(94, 80);
+            buttonAddClient.TabIndex = 0;
+            buttonAddClient.UseVisualStyleBackColor = true;
+            buttonAddClient.Click += buttonAdd_Click;
+            // 
+            // dataGridViewClient
+            // 
+            dataGridViewClient.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+            dataGridViewClient.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            dataGridViewClient.Dock = DockStyle.Fill;
+            dataGridViewClient.Location = new Point(0, 0);
+            dataGridViewClient.MultiSelect = false;
+            dataGridViewClient.Name = "dataGridViewClient";
+            dataGridViewClient.ReadOnly = true;
+            dataGridViewClient.RowHeadersVisible = false;
+            dataGridViewClient.RowHeadersWidth = 51;
+            dataGridViewClient.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+            dataGridViewClient.Size = new Size(669, 450);
+            dataGridViewClient.TabIndex = 1;
+            // 
+            // FormClients
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(800, 450);
+            Controls.Add(dataGridViewClient);
+            Controls.Add(panel1);
+            Name = "FormClients";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "Клиенты";
+            panel1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)dataGridViewClient).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private Panel panel1;
+        private Button buttonDelClient;
+        private Button buttonUpdClient;
+        private Button buttonAddClient;
+        private DataGridView dataGridViewClient;
+    }
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.cs
new file mode 100644
index 0000000..47c4663
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.cs
@@ -0,0 +1,107 @@
+using ProjectTourismCompany.Repositories;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Unity;
+
+namespace ProjectTourismCompany.Forms;
+
+public partial class FormClients : Form
+{
+    private readonly IUnityContainer _container;
+    private readonly IClientRepository _clientRepository;
+    public FormClients(IUnityContainer container, IClientRepository clientRepository)
+    {
+        InitializeComponent();
+        _container = container ?? throw new ArgumentNullException(nameof(container));
+        _clientRepository = clientRepository ?? throw new ArgumentNullException(nameof(clientRepository));
+    }
+    private void FormClients_Load(object sender, EventArgs e)
+    {
+        try
+        {
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при загрузке",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+    private void buttonAdd_Click(object sender, EventArgs e)
+    {
+        try
+        {
+            _container.Resolve<FormClient>().ShowDialog();
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при добавлении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+    private void buttonUpd_Click(object sender, EventArgs e)
+    {
+        if (!TryGetIdentifierFromSelectedRow(out var findId))
+        {
+            return;
+        }
+        try
+        {
+
+            var form = _container.Resolve<FormClient>();
+            form.Id = findId;
+            form.ShowDialog();
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при изменении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+    private void buttonDel_Click(object sender, EventArgs e)
+    {
+        if (!TryGetIdentifierFromSelectedRow(out var findId))
+        {
+            return;
+        }
+        if (MessageBox.Show("Удалить запись?", "Удаление",
+        MessageBoxButtons.YesNo) != DialogResult.Yes)
+        {
+            return;
+        }
+        try
+        {
+            _clientRepository.DeleteClient(findId);
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при удалении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+    private void LoadList() => dataGridViewClient.DataSource =
+    _clientRepository.ReadClients();
+
+    private bool TryGetIdentifierFromSelectedRow(out int id)
+    {
+        id = 0;
+        if (dataGridViewClient.SelectedRows.Count < 1)
+        {
+            MessageBox.Show("Нет выбранной записи", "Ошибка",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+            return false;
+        }
+        id = Convert.ToInt32(dataGridViewClient.SelectedRows[0].Cells["Id"].Value);
+        return true;
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.Designer.cs
new file mode 100644
index 0000000..903e133
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.Designer.cs
@@ -0,0 +1,126 @@
+namespace ProjectTourismCompany.Forms
+{
+    partial class FormCompanies
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            dataGridViewCompanies = new DataGridView();
+            panel1 = new Panel();
+            buttonDelCompany = new Button();
+            buttonUpdCompany = new Button();
+            buttonAddCompany = new Button();
+            ((System.ComponentModel.ISupportInitialize)dataGridViewCompanies).BeginInit();
+            panel1.SuspendLayout();
+            SuspendLayout();
+            // 
+            // dataGridViewCompanies
+            // 
+            dataGridViewCompanies.AllowUserToAddRows = false;
+            dataGridViewCompanies.AllowUserToDeleteRows = false;
+            dataGridViewCompanies.AllowUserToResizeColumns = false;
+            dataGridViewCompanies.AllowUserToResizeRows = false;
+            dataGridViewCompanies.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+            dataGridViewCompanies.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            dataGridViewCompanies.Dock = DockStyle.Fill;
+            dataGridViewCompanies.Location = new Point(0, 0);
+            dataGridViewCompanies.MultiSelect = false;
+            dataGridViewCompanies.Name = "dataGridViewCompanies";
+            dataGridViewCompanies.ReadOnly = true;
+            dataGridViewCompanies.RowHeadersVisible = false;
+            dataGridViewCompanies.RowHeadersWidth = 51;
+            dataGridViewCompanies.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+            dataGridViewCompanies.Size = new Size(800, 450);
+            dataGridViewCompanies.TabIndex = 0;
+            // 
+            // panel1
+            // 
+            panel1.Controls.Add(buttonDelCompany);
+            panel1.Controls.Add(buttonUpdCompany);
+            panel1.Controls.Add(buttonAddCompany);
+            panel1.Dock = DockStyle.Right;
+            panel1.Location = new Point(665, 0);
+            panel1.Name = "panel1";
+            panel1.Size = new Size(135, 450);
+            panel1.TabIndex = 1;
+            // 
+            // buttonDelCompany
+            // 
+            buttonDelCompany.BackgroundImage = Properties.Resources.minus;
+            buttonDelCompany.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonDelCompany.Location = new Point(29, 183);
+            buttonDelCompany.Name = "buttonDelCompany";
+            buttonDelCompany.Size = new Size(94, 80);
+            buttonDelCompany.TabIndex = 5;
+            buttonDelCompany.UseVisualStyleBackColor = true;
+            buttonDelCompany.Click += buttonDel_Click;
+            // 
+            // buttonUpdCompany
+            // 
+            buttonUpdCompany.BackgroundImage = Properties.Resources.pencil;
+            buttonUpdCompany.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonUpdCompany.Location = new Point(29, 97);
+            buttonUpdCompany.Name = "buttonUpdCompany";
+            buttonUpdCompany.Size = new Size(94, 80);
+            buttonUpdCompany.TabIndex = 4;
+            buttonUpdCompany.UseVisualStyleBackColor = true;
+            buttonUpdCompany.Click += buttonUpd_Click;
+            // 
+            // buttonAddCompany
+            // 
+            buttonAddCompany.BackgroundImage = Properties.Resources.plus;
+            buttonAddCompany.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonAddCompany.Location = new Point(29, 11);
+            buttonAddCompany.Name = "buttonAddCompany";
+            buttonAddCompany.Size = new Size(94, 80);
+            buttonAddCompany.TabIndex = 3;
+            buttonAddCompany.UseVisualStyleBackColor = true;
+            buttonAddCompany.Click += buttonAdd_Click;
+            // 
+            // FormCompanies
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(800, 450);
+            Controls.Add(panel1);
+            Controls.Add(dataGridViewCompanies);
+            Name = "FormCompanies";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "Компании";
+            ((System.ComponentModel.ISupportInitialize)dataGridViewCompanies).EndInit();
+            panel1.ResumeLayout(false);
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DataGridView dataGridViewCompanies;
+        private Panel panel1;
+        private Button buttonDelCompany;
+        private Button buttonUpdCompany;
+        private Button buttonAddCompany;
+    }
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.cs
new file mode 100644
index 0000000..2e75024
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.cs
@@ -0,0 +1,111 @@
+using ProjectTourismCompany.Repositories;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Unity;
+
+namespace ProjectTourismCompany.Forms;
+
+public partial class FormCompanies : Form
+{
+    private readonly IUnityContainer _container;
+    private readonly ICompanyRepository _companyRepository;
+
+
+    public FormCompanies(IUnityContainer container, ICompanyRepository
+    companyRepository)
+    {
+        InitializeComponent();
+        _container = container ?? throw new ArgumentNullException(nameof(container));
+        _companyRepository = companyRepository ?? throw new ArgumentNullException(nameof(companyRepository));
+    }
+
+    private void FormCompanies_Load(object sender, EventArgs e)
+    {
+        try
+        {
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при загрузке",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void buttonAdd_Click(object sender, EventArgs e)
+    {
+        try
+        {
+            _container.Resolve<FormCompany>().ShowDialog();
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при добавлении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+    private void buttonUpd_Click(object sender, EventArgs e)
+    {
+        if (!TryGetIdentifierFromSelectedRow(out var findId))
+        {
+            return;
+        }
+        try
+        {
+            var form = _container.Resolve<FormCompany>();
+            form.Id = findId;
+            form.ShowDialog();
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при изменении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+    private void buttonDel_Click(object sender, EventArgs e)
+    {
+        if (!TryGetIdentifierFromSelectedRow(out var findId))
+        {
+            return;
+        }
+        if (MessageBox.Show("Удалить запись?", "Удаление",
+        MessageBoxButtons.YesNo) != DialogResult.Yes)
+        {
+            return;
+        }
+        try
+        {
+            _companyRepository.DeleteCompany(findId);
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при удалении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+    private void LoadList() => dataGridViewCompanies.DataSource =
+    _companyRepository.ReadCompanies();
+
+    private bool TryGetIdentifierFromSelectedRow(out int id)
+    {
+        id = 0;
+        if (dataGridViewCompanies.SelectedRows.Count < 1)
+        {
+            MessageBox.Show("Нет выбранной записи", "Ошибка",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+            return false;
+        }
+        id = Convert.ToInt32(dataGridViewCompanies.SelectedRows[0].Cells["Id"].Value);
+        return true;
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.Designer.cs
new file mode 100644
index 0000000..a44dd5a
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.Designer.cs
@@ -0,0 +1,174 @@
+namespace ProjectTourismCompany.Forms
+{
+    partial class FormCompany
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            label1 = new Label();
+            textBoxName = new TextBox();
+            buttonCancel = new Button();
+            buttonSave = new Button();
+            groupBox1 = new GroupBox();
+            dataGridView1 = new DataGridView();
+            ColumnTitle = new DataGridViewComboBoxColumn();
+            ColumnAdditionalPrice = new DataGridViewButtonColumn();
+            comboBoxCountry = new ComboBox();
+            label2 = new Label();
+            groupBox1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
+            SuspendLayout();
+            // 
+            // label1
+            // 
+            label1.AutoSize = true;
+            label1.Location = new Point(12, 9);
+            label1.Name = "label1";
+            label1.Size = new Size(77, 20);
+            label1.TabIndex = 0;
+            label1.Text = "Название";
+            // 
+            // textBoxName
+            // 
+            textBoxName.Location = new Point(107, 6);
+            textBoxName.Name = "textBoxName";
+            textBoxName.Size = new Size(150, 27);
+            textBoxName.TabIndex = 3;
+            // 
+            // buttonCancel
+            // 
+            buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+            buttonCancel.BackColor = Color.IndianRed;
+            buttonCancel.Location = new Point(305, 318);
+            buttonCancel.Name = "buttonCancel";
+            buttonCancel.Size = new Size(135, 51);
+            buttonCancel.TabIndex = 17;
+            buttonCancel.Text = "Отмена";
+            buttonCancel.UseVisualStyleBackColor = false;
+            buttonCancel.Click += ButtonCancel_Click;
+            // 
+            // buttonSave
+            // 
+            buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+            buttonSave.BackColor = Color.LimeGreen;
+            buttonSave.Location = new Point(446, 318);
+            buttonSave.Name = "buttonSave";
+            buttonSave.Size = new Size(135, 51);
+            buttonSave.TabIndex = 16;
+            buttonSave.Text = "Сохранить";
+            buttonSave.UseVisualStyleBackColor = false;
+            buttonSave.Click += ButtonSave_Click;
+            // 
+            // groupBox1
+            // 
+            groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+            groupBox1.Controls.Add(dataGridView1);
+            groupBox1.Location = new Point(283, 6);
+            groupBox1.Name = "groupBox1";
+            groupBox1.Size = new Size(298, 306);
+            groupBox1.TabIndex = 19;
+            groupBox1.TabStop = false;
+            groupBox1.Text = "groupBox1";
+            // 
+            // dataGridView1
+            // 
+            dataGridView1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+            dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            dataGridView1.Columns.AddRange(new DataGridViewColumn[] { ColumnTitle, ColumnAdditionalPrice });
+            dataGridView1.Location = new Point(3, 23);
+            dataGridView1.MultiSelect = false;
+            dataGridView1.Name = "dataGridView1";
+            dataGridView1.RowHeadersVisible = false;
+            dataGridView1.RowHeadersWidth = 51;
+            dataGridView1.Size = new Size(292, 280);
+            dataGridView1.TabIndex = 0;
+            // 
+            // ColumnTitle
+            // 
+            ColumnTitle.HeaderText = "Название путевки";
+            ColumnTitle.MinimumWidth = 6;
+            ColumnTitle.Name = "ColumnTitle";
+            // 
+            // ColumnAdditionalPrice
+            // 
+            ColumnAdditionalPrice.HeaderText = "Надбавка фирмы";
+            ColumnAdditionalPrice.MinimumWidth = 6;
+            ColumnAdditionalPrice.Name = "ColumnAdditionalPrice";
+            ColumnAdditionalPrice.Resizable = DataGridViewTriState.True;
+            // 
+            // comboBoxCountry
+            // 
+            comboBoxCountry.FormattingEnabled = true;
+            comboBoxCountry.Location = new Point(107, 67);
+            comboBoxCountry.Name = "comboBoxCountry";
+            comboBoxCountry.Size = new Size(150, 28);
+            comboBoxCountry.TabIndex = 20;
+            // 
+            // label2
+            // 
+            label2.AutoSize = true;
+            label2.Location = new Point(12, 67);
+            label2.Name = "label2";
+            label2.Size = new Size(58, 20);
+            label2.TabIndex = 21;
+            label2.Text = "Страна";
+            // 
+            // FormCompany
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(593, 381);
+            Controls.Add(label2);
+            Controls.Add(comboBoxCountry);
+            Controls.Add(groupBox1);
+            Controls.Add(buttonCancel);
+            Controls.Add(buttonSave);
+            Controls.Add(textBoxName);
+            Controls.Add(label1);
+            Name = "FormCompany";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "Компания";
+            groupBox1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
+            ResumeLayout(false);
+            PerformLayout();
+        }
+
+        #endregion
+
+        private Label label1;
+        private TextBox textBoxName;
+        private Button buttonCancel;
+        private Button buttonSave;
+        private GroupBox groupBox1;
+        private DataGridView dataGridView1;
+        private DataGridViewComboBoxColumn ColumnTitle;
+        private DataGridViewButtonColumn ColumnAdditionalPrice;
+        private ComboBox comboBoxCountry;
+        private Label label2;
+    }
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.cs
new file mode 100644
index 0000000..d756f51
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.cs
@@ -0,0 +1,103 @@
+using Microsoft.VisualBasic.FileIO;
+using ProjectTourismCompany.Entities;
+using ProjectTourismCompany.Entities.Enums;
+using ProjectTourismCompany.Repositories;
+using ProjectTourismCompany.Repositories.Implementations;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ProjectTourismCompany.Forms;
+
+public partial class FormCompany : Form
+{
+    private readonly ICompanyRepository _companyRepository;
+    private int? _companyId;
+    public int Id
+    {
+        set
+        {
+            try
+            {
+                var client = _companyRepository.ReadCompanyById(value);
+                if (client == null)
+                {
+                    throw new InvalidDataException(nameof(client));
+                }
+
+                textBoxName.Text = client.Name;
+                comboBoxCountry.SelectedItem = client.CountryId;
+                _companyId = value;
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                return;
+            }
+        }
+    }
+
+
+
+
+    public FormCompany(
+    ICompanyRepository companyRepository,
+    ITripRepository tripRepository,
+    ICountryRepository countryRepository)
+    {
+        InitializeComponent();
+        _companyRepository = companyRepository ??
+        throw new ArgumentNullException(nameof(companyRepository));
+        comboBoxCountry.DataSource = countryRepository.ReadCountries();
+        comboBoxCountry.DisplayMember = "Name";
+        comboBoxCountry.ValueMember = "Id";
+        
+        ColumnTitle.DataSource = tripRepository.ReadTrips();
+        ColumnTitle.DisplayMember = "Title";
+        ColumnTitle.ValueMember = "Id";
+    }
+
+
+    private void ButtonSave_Click(object sender, EventArgs e)
+    {
+        try
+        {
+            if (dataGridView1.RowCount < 1 ||
+            comboBoxCountry.SelectedIndex < 0)
+            {
+            throw new Exception("Имеются незаполненные поля");
+            }
+            _companyRepository.CreateCompany(Company.CreateCompany(0, textBoxName.Text, (int)comboBoxCountry.SelectedItem!, CreateListCompanyTripFromDataGrid()));
+            Close();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при сохранении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+    private void ButtonCancel_Click(object sender, EventArgs e) =>
+    Close();
+    private List<CompanyTrip> CreateListCompanyTripFromDataGrid()
+    {
+        var list = new List<CompanyTrip>();
+        foreach (DataGridViewRow row in dataGridView1.Rows)
+        {
+            if (row.Cells["ColumnAdditionalPrice"].Value == null ||
+            row.Cells["ColumnTitle"].Value == null)
+            {
+                continue;
+            }
+            list.Add(CompanyTrip.CreateCompanyTrip(0, 0,
+            Convert.ToInt32(row.Cells["ColumnTitle"].Value),
+            Convert.ToInt32(row.Cells["ColumnAdditionalPrice"].Value)));
+        }
+        return list;
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.resx
new file mode 100644
index 0000000..25abefb
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.resx
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="ColumnTitle.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="ColumnAdditionalPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.Designer.cs
new file mode 100644
index 0000000..8d9df93
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.Designer.cs
@@ -0,0 +1,126 @@
+namespace ProjectTourismCompany.Forms
+{
+    partial class FormCountries
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            dataGridView1 = new DataGridView();
+            panel1 = new Panel();
+            buttonDelCountry = new Button();
+            buttonUpdCountry = new Button();
+            buttonAddCountry = new Button();
+            ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
+            panel1.SuspendLayout();
+            SuspendLayout();
+            // 
+            // dataGridView1
+            // 
+            dataGridView1.AllowUserToAddRows = false;
+            dataGridView1.AllowUserToDeleteRows = false;
+            dataGridView1.AllowUserToResizeColumns = false;
+            dataGridView1.AllowUserToResizeRows = false;
+            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+            dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            dataGridView1.ColumnHeadersVisible = false;
+            dataGridView1.Dock = DockStyle.Fill;
+            dataGridView1.Location = new Point(0, 0);
+            dataGridView1.MultiSelect = false;
+            dataGridView1.Name = "dataGridView1";
+            dataGridView1.ReadOnly = true;
+            dataGridView1.RowHeadersWidth = 51;
+            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+            dataGridView1.Size = new Size(800, 450);
+            dataGridView1.TabIndex = 0;
+            // 
+            // panel1
+            // 
+            panel1.Controls.Add(buttonDelCountry);
+            panel1.Controls.Add(buttonUpdCountry);
+            panel1.Controls.Add(buttonAddCountry);
+            panel1.Dock = DockStyle.Right;
+            panel1.Location = new Point(642, 0);
+            panel1.Name = "panel1";
+            panel1.Size = new Size(158, 450);
+            panel1.TabIndex = 1;
+            // 
+            // buttonDelCountry
+            // 
+            buttonDelCountry.BackgroundImage = Properties.Resources.minus;
+            buttonDelCountry.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonDelCountry.Location = new Point(38, 198);
+            buttonDelCountry.Name = "buttonDelCountry";
+            buttonDelCountry.Size = new Size(94, 80);
+            buttonDelCountry.TabIndex = 7;
+            buttonDelCountry.UseVisualStyleBackColor = true;
+            buttonDelCountry.Click += buttonDel_Click;
+            // 
+            // buttonUpdCountry
+            // 
+            buttonUpdCountry.BackgroundImage = Properties.Resources.pencil;
+            buttonUpdCountry.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonUpdCountry.Location = new Point(38, 112);
+            buttonUpdCountry.Name = "buttonUpdCountry";
+            buttonUpdCountry.Size = new Size(94, 80);
+            buttonUpdCountry.TabIndex = 6;
+            buttonUpdCountry.UseVisualStyleBackColor = true;
+            buttonUpdCountry.Click += buttonUpd_Click;
+            // 
+            // buttonAddCountry
+            // 
+            buttonAddCountry.BackgroundImage = Properties.Resources.plus;
+            buttonAddCountry.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonAddCountry.Location = new Point(38, 26);
+            buttonAddCountry.Name = "buttonAddCountry";
+            buttonAddCountry.Size = new Size(94, 80);
+            buttonAddCountry.TabIndex = 4;
+            buttonAddCountry.UseVisualStyleBackColor = true;
+            buttonAddCountry.Click += buttonAdd_Click;
+            // 
+            // FormCountries
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(800, 450);
+            Controls.Add(panel1);
+            Controls.Add(dataGridView1);
+            Name = "FormCountries";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "Страны";
+            ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
+            panel1.ResumeLayout(false);
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DataGridView dataGridView1;
+        private Panel panel1;
+        private Button buttonAddCountry;
+        private Button buttonDelCountry;
+        private Button buttonUpdCountry;
+    }
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.cs
new file mode 100644
index 0000000..3e6380d
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.cs
@@ -0,0 +1,116 @@
+using ProjectTourismCompany.Repositories;
+using ProjectTourismCompany.Repositories.Implementations;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Unity;
+
+namespace ProjectTourismCompany.Forms;
+
+public partial class FormCountries : Form
+{
+    private readonly IUnityContainer _container;
+    private readonly ICountryRepository _countryRepository;
+
+
+    public FormCountries(IUnityContainer container, ICountryRepository countryRepository)
+    {
+        InitializeComponent();
+        _container = container ?? throw new ArgumentNullException(nameof(container));
+        _countryRepository = countryRepository ?? throw new ArgumentNullException(nameof(countryRepository));
+    }
+
+    private void FormCompanies_Load(object sender, EventArgs e)
+    {
+        try
+        {
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при загрузке",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void buttonAdd_Click(object sender, EventArgs e)
+    {
+        try
+        {
+            _container.Resolve<FormCountry>().ShowDialog();
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при добавлении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void buttonUpd_Click(object sender, EventArgs e)
+    {
+        if (!TryGetIdentifierFromSelectedRow(out var findId))
+        {
+            return;
+        }
+        try
+        {
+
+            var form = _container.Resolve<FormCountry>();
+            form.Id = findId;
+            form.ShowDialog();
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при изменении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void buttonDel_Click(object sender, EventArgs e)
+    {
+        if (!TryGetIdentifierFromSelectedRow(out var findId))
+        {
+            return;
+        }
+        if (MessageBox.Show("Удалить запись?", "Удаление",
+        MessageBoxButtons.YesNo) != DialogResult.Yes)
+        {
+            return;
+        }
+        try
+        {
+            _countryRepository.DeleteCountry(findId);
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при удалении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void LoadList() => dataGridView1.DataSource =
+   _countryRepository.ReadCountries();
+
+    private bool TryGetIdentifierFromSelectedRow(out int id)
+    {
+        id = 0;
+        if (dataGridView1.SelectedRows.Count < 1)
+        {
+            MessageBox.Show("Нет выбранной записи", "Ошибка",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+            return false;
+        }
+        id = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["Id"].Value);
+        return true;
+    }
+
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.Designer.cs
new file mode 100644
index 0000000..fc82c19
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.Designer.cs
@@ -0,0 +1,98 @@
+namespace ProjectTourismCompany.Forms
+{
+    partial class FormCountry
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            buttonCancel = new Button();
+            buttonSave = new Button();
+            textBoxName = new TextBox();
+            label1 = new Label();
+            SuspendLayout();
+            // 
+            // buttonCancel
+            // 
+            buttonCancel.BackColor = Color.IndianRed;
+            buttonCancel.Location = new Point(33, 76);
+            buttonCancel.Name = "buttonCancel";
+            buttonCancel.Size = new Size(135, 51);
+            buttonCancel.TabIndex = 17;
+            buttonCancel.Text = "Отмена";
+            buttonCancel.UseVisualStyleBackColor = false;
+            buttonCancel.Click += buttonCancel_Click;
+            // 
+            // buttonSave
+            // 
+            buttonSave.BackColor = Color.LimeGreen;
+            buttonSave.Location = new Point(174, 76);
+            buttonSave.Name = "buttonSave";
+            buttonSave.Size = new Size(135, 51);
+            buttonSave.TabIndex = 16;
+            buttonSave.Text = "Сохранить";
+            buttonSave.UseVisualStyleBackColor = false;
+            buttonSave.Click += buttonSave_Click;
+            // 
+            // textBoxName
+            // 
+            textBoxName.Location = new Point(107, 6);
+            textBoxName.Name = "textBoxName";
+            textBoxName.Size = new Size(150, 27);
+            textBoxName.TabIndex = 21;
+            // 
+            // label1
+            // 
+            label1.AutoSize = true;
+            label1.Location = new Point(12, 9);
+            label1.Name = "label1";
+            label1.Size = new Size(77, 20);
+            label1.TabIndex = 18;
+            label1.Text = "Название";
+            // 
+            // FormCountry
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(321, 139);
+            Controls.Add(textBoxName);
+            Controls.Add(label1);
+            Controls.Add(buttonCancel);
+            Controls.Add(buttonSave);
+            Name = "FormCountry";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "Страна";
+            ResumeLayout(false);
+            PerformLayout();
+        }
+
+        #endregion
+
+        private Button buttonCancel;
+        private Button buttonSave;
+        private TextBox textBoxName;
+        private Label label1;
+    }
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.cs
new file mode 100644
index 0000000..33731b3
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.cs
@@ -0,0 +1,81 @@
+using ProjectTourismCompany.Entities;
+using ProjectTourismCompany.Repositories;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ProjectTourismCompany.Forms;
+
+public partial class FormCountry : Form
+{
+
+    private readonly ICountryRepository _countryRepository;
+    private int? _countryId;
+    public int Id
+    {
+        set
+        {
+            try
+            {
+                var country = _countryRepository.ReadCountryById(value);
+                if (country == null)
+                {
+                    throw new InvalidDataException(nameof(country));
+                }
+
+                textBoxName.Text = country.CountryName;
+                _countryId = value;
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                return;
+            }
+        }
+    }
+
+
+    public FormCountry(ICountryRepository countryRepository)
+    {
+        InitializeComponent();
+        _countryRepository = countryRepository ?? throw new ArgumentNullException(nameof(countryRepository));
+    }
+
+    private void buttonSave_Click(object sender, EventArgs e)
+    {
+        try
+        {
+            if (string.IsNullOrWhiteSpace(textBoxName.Text))
+            {
+                throw new Exception("Имеются незаполненные поля");
+            }
+            if (_countryId.HasValue)
+            {
+                _countryRepository.UpdateCountry(CreateCountry(_countryId.Value));
+            }
+            else
+            {
+                _countryRepository.UpdateCountry(CreateCountry(0));
+            }
+            Close();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при сохранении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+    private void buttonCancel_Click(object sender, EventArgs e) => Close();
+
+    private Country CreateCountry(int id)
+    {
+        return Country.CreateCountry(id, textBoxName.Text);
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountry.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.Designer.cs
new file mode 100644
index 0000000..d2e3da6
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.Designer.cs
@@ -0,0 +1,264 @@
+namespace ProjectTourismCompany.Forms
+{
+    partial class FormTrip
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            labelPrice = new Label();
+            labelHumanCapacity = new Label();
+            labelStartDate = new Label();
+            labelEndDate = new Label();
+            labelStartCity = new Label();
+            labelEndCity = new Label();
+            labelTravelType = new Label();
+            numericUpDownPrice = new NumericUpDown();
+            numericUpDownHumanCapacity = new NumericUpDown();
+            dateTimePickerStartDate = new DateTimePicker();
+            dateTimePickerEndDate = new DateTimePicker();
+            textBoxStartCity = new TextBox();
+            textBoxEndCity = new TextBox();
+            checkedListBoxTravelType = new CheckedListBox();
+            buttonCancel = new Button();
+            buttonSave = new Button();
+            label1 = new Label();
+            textBoxTitle = new TextBox();
+            ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)numericUpDownHumanCapacity).BeginInit();
+            SuspendLayout();
+            // 
+            // labelPrice
+            // 
+            labelPrice.AutoSize = true;
+            labelPrice.Location = new Point(36, 71);
+            labelPrice.Name = "labelPrice";
+            labelPrice.Size = new Size(45, 20);
+            labelPrice.TabIndex = 0;
+            labelPrice.Text = "Цена";
+            // 
+            // labelHumanCapacity
+            // 
+            labelHumanCapacity.AutoSize = true;
+            labelHumanCapacity.Location = new Point(36, 116);
+            labelHumanCapacity.Name = "labelHumanCapacity";
+            labelHumanCapacity.Size = new Size(142, 20);
+            labelHumanCapacity.TabIndex = 1;
+            labelHumanCapacity.Text = "Человек максимум";
+            // 
+            // labelStartDate
+            // 
+            labelStartDate.AutoSize = true;
+            labelStartDate.Location = new Point(36, 172);
+            labelStartDate.Name = "labelStartDate";
+            labelStartDate.Size = new Size(94, 20);
+            labelStartDate.TabIndex = 2;
+            labelStartDate.Text = "Дата начала";
+            // 
+            // labelEndDate
+            // 
+            labelEndDate.AutoSize = true;
+            labelEndDate.Location = new Point(36, 227);
+            labelEndDate.Name = "labelEndDate";
+            labelEndDate.Size = new Size(87, 20);
+            labelEndDate.TabIndex = 3;
+            labelEndDate.Text = "Дата конца";
+            // 
+            // labelStartCity
+            // 
+            labelStartCity.AutoSize = true;
+            labelStartCity.Location = new Point(36, 285);
+            labelStartCity.Name = "labelStartCity";
+            labelStartCity.Size = new Size(129, 20);
+            labelStartCity.TabIndex = 4;
+            labelStartCity.Text = "Стартовый город";
+            // 
+            // labelEndCity
+            // 
+            labelEndCity.AutoSize = true;
+            labelEndCity.Location = new Point(36, 339);
+            labelEndCity.Name = "labelEndCity";
+            labelEndCity.Size = new Size(126, 20);
+            labelEndCity.TabIndex = 5;
+            labelEndCity.Text = "Конечный город";
+            // 
+            // labelTravelType
+            // 
+            labelTravelType.AutoSize = true;
+            labelTravelType.Location = new Point(35, 427);
+            labelTravelType.Name = "labelTravelType";
+            labelTravelType.Size = new Size(127, 20);
+            labelTravelType.TabIndex = 6;
+            labelTravelType.Text = "Тип путешествия";
+            // 
+            // numericUpDownPrice
+            // 
+            numericUpDownPrice.Location = new Point(273, 69);
+            numericUpDownPrice.Maximum = new decimal(new int[] { 1000000, 0, 0, 0 });
+            numericUpDownPrice.Minimum = new decimal(new int[] { 10000, 0, 0, 0 });
+            numericUpDownPrice.Name = "numericUpDownPrice";
+            numericUpDownPrice.Size = new Size(220, 27);
+            numericUpDownPrice.TabIndex = 7;
+            numericUpDownPrice.Value = new decimal(new int[] { 10000, 0, 0, 0 });
+            // 
+            // numericUpDownHumanCapacity
+            // 
+            numericUpDownHumanCapacity.Location = new Point(273, 114);
+            numericUpDownHumanCapacity.Minimum = new decimal(new int[] { 5, 0, 0, 0 });
+            numericUpDownHumanCapacity.Name = "numericUpDownHumanCapacity";
+            numericUpDownHumanCapacity.Size = new Size(220, 27);
+            numericUpDownHumanCapacity.TabIndex = 8;
+            numericUpDownHumanCapacity.Value = new decimal(new int[] { 5, 0, 0, 0 });
+            // 
+            // dateTimePickerStartDate
+            // 
+            dateTimePickerStartDate.Location = new Point(273, 167);
+            dateTimePickerStartDate.Name = "dateTimePickerStartDate";
+            dateTimePickerStartDate.Size = new Size(220, 27);
+            dateTimePickerStartDate.TabIndex = 9;
+            // 
+            // dateTimePickerEndDate
+            // 
+            dateTimePickerEndDate.Location = new Point(273, 222);
+            dateTimePickerEndDate.Name = "dateTimePickerEndDate";
+            dateTimePickerEndDate.Size = new Size(220, 27);
+            dateTimePickerEndDate.TabIndex = 10;
+            // 
+            // textBoxStartCity
+            // 
+            textBoxStartCity.Location = new Point(273, 285);
+            textBoxStartCity.Name = "textBoxStartCity";
+            textBoxStartCity.Size = new Size(220, 27);
+            textBoxStartCity.TabIndex = 11;
+            // 
+            // textBoxEndCity
+            // 
+            textBoxEndCity.Location = new Point(273, 339);
+            textBoxEndCity.Name = "textBoxEndCity";
+            textBoxEndCity.Size = new Size(220, 27);
+            textBoxEndCity.TabIndex = 12;
+            // 
+            // checkedListBoxTravelType
+            // 
+            checkedListBoxTravelType.FormattingEnabled = true;
+            checkedListBoxTravelType.Location = new Point(273, 383);
+            checkedListBoxTravelType.Name = "checkedListBoxTravelType";
+            checkedListBoxTravelType.Size = new Size(220, 114);
+            checkedListBoxTravelType.TabIndex = 13;
+            // 
+            // buttonCancel
+            // 
+            buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
+            buttonCancel.BackColor = Color.IndianRed;
+            buttonCancel.Location = new Point(214, 512);
+            buttonCancel.Name = "buttonCancel";
+            buttonCancel.Size = new Size(135, 51);
+            buttonCancel.TabIndex = 15;
+            buttonCancel.Text = "Отмена";
+            buttonCancel.UseVisualStyleBackColor = false;
+            buttonCancel.Click += ButtonCancel_Click;
+            // 
+            // buttonSave
+            // 
+            buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+            buttonSave.BackColor = Color.LimeGreen;
+            buttonSave.Location = new Point(361, 512);
+            buttonSave.Name = "buttonSave";
+            buttonSave.Size = new Size(135, 51);
+            buttonSave.TabIndex = 14;
+            buttonSave.Text = "Сохранить";
+            buttonSave.UseVisualStyleBackColor = false;
+            buttonSave.Click += ButtonSave_Click;
+            // 
+            // label1
+            // 
+            label1.AutoSize = true;
+            label1.Location = new Point(36, 12);
+            label1.Name = "label1";
+            label1.Size = new Size(111, 20);
+            label1.TabIndex = 16;
+            label1.Text = "Название тура";
+            // 
+            // textBoxTitle
+            // 
+            textBoxTitle.Location = new Point(273, 12);
+            textBoxTitle.Name = "textBoxTitle";
+            textBoxTitle.Size = new Size(220, 27);
+            textBoxTitle.TabIndex = 17;
+            // 
+            // FormTrip
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(508, 573);
+            Controls.Add(textBoxTitle);
+            Controls.Add(label1);
+            Controls.Add(buttonCancel);
+            Controls.Add(buttonSave);
+            Controls.Add(checkedListBoxTravelType);
+            Controls.Add(textBoxEndCity);
+            Controls.Add(textBoxStartCity);
+            Controls.Add(dateTimePickerEndDate);
+            Controls.Add(dateTimePickerStartDate);
+            Controls.Add(numericUpDownHumanCapacity);
+            Controls.Add(numericUpDownPrice);
+            Controls.Add(labelTravelType);
+            Controls.Add(labelEndCity);
+            Controls.Add(labelStartCity);
+            Controls.Add(labelEndDate);
+            Controls.Add(labelStartDate);
+            Controls.Add(labelHumanCapacity);
+            Controls.Add(labelPrice);
+            Name = "FormTrip";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "Туры";
+            ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).EndInit();
+            ((System.ComponentModel.ISupportInitialize)numericUpDownHumanCapacity).EndInit();
+            ResumeLayout(false);
+            PerformLayout();
+        }
+
+        #endregion
+
+        private Label labelPrice;
+        private Label labelHumanCapacity;
+        private Label labelStartDate;
+        private Label labelEndDate;
+        private Label labelStartCity;
+        private Label labelEndCity;
+        private Label labelTravelType;
+        private NumericUpDown numericUpDownPrice;
+        private NumericUpDown numericUpDownHumanCapacity;
+        private DateTimePicker dateTimePickerStartDate;
+        private DateTimePicker dateTimePickerEndDate;
+        private TextBox textBoxStartCity;
+        private TextBox textBoxEndCity;
+        private CheckedListBox checkedListBoxTravelType;
+        private Button buttonCancel;
+        private Button buttonSave;
+        private Label label1;
+        private TextBox textBoxTitle;
+    }
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.cs
new file mode 100644
index 0000000..0735bfe
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.cs
@@ -0,0 +1,110 @@
+using Microsoft.VisualBasic.FileIO;
+using ProjectTourismCompany.Entities;
+using ProjectTourismCompany.Entities.Enums;
+using ProjectTourismCompany.Repositories;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ProjectTourismCompany.Forms;
+
+public partial class FormTrip : Form
+{
+    private readonly ITripRepository _tripRepository;
+    private int? _tripId;
+    public int Id
+    {
+        set
+        {
+            try
+            {
+                var trip = _tripRepository.ReadTripById(value);
+                if (trip == null)
+                {
+                    throw new
+                    InvalidDataException(nameof(trip));
+                }
+                textBoxStartCity.Text = trip.StartCity;
+                textBoxEndCity.Text = trip.EndCity;
+                numericUpDownHumanCapacity.Value = trip.HumanCapacity;
+                numericUpDownPrice.Value = trip.Price;
+                dateTimePickerEndDate.Value = trip.EndDate;
+                dateTimePickerStartDate.Value = trip.StartDate;
+                _tripId = value;
+
+                foreach (TravelType elem in
+Enum.GetValues(typeof(TravelType)))
+                {
+                    if ((elem & trip.TravelType) != 0)
+                    {
+                        checkedListBoxTravelType.SetItemChecked(checkedListBoxTravelType.Items.IndexOf(
+                        elem), true);
+                    }
+                }
+
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                return;
+            }
+        }
+    }
+    public FormTrip(ITripRepository tripRepository)
+    {
+        InitializeComponent();
+        _tripRepository = tripRepository ?? throw new ArgumentNullException(nameof(tripRepository));
+        foreach (var elem in Enum.GetValues(typeof(TravelType)))
+        {
+            checkedListBoxTravelType.Items.Add(elem);
+        }
+
+    }
+    private void ButtonSave_Click(object sender, EventArgs e)
+    {
+        try
+        {
+            if (string.IsNullOrWhiteSpace(textBoxStartCity.Text) ||
+            string.IsNullOrWhiteSpace(textBoxEndCity.Text))
+            {
+                throw new Exception("Имеются незаполненные поля");
+            }
+
+            if (_tripId.HasValue)
+            {
+                _tripRepository.CreateTrip(CreateTrip(_tripId.Value));
+            }
+            else
+            {
+                _tripRepository.CreateTrip(CreateTrip(0));
+            }
+
+            Close();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при сохранении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+    private void ButtonCancel_Click(object sender, EventArgs e) =>
+    Close();
+
+    private Trip CreateTrip(int id)
+    {
+        TravelType tr = TravelType.None;
+        foreach (var elem in checkedListBoxTravelType.CheckedItems)
+        {
+            tr |= (TravelType)elem;
+        }
+        return Trip.CreateOpeartion(0, textBoxTitle.Text, (int)numericUpDownPrice.Value,
+                (int)numericUpDownHumanCapacity.Value, dateTimePickerStartDate.Value, dateTimePickerEndDate.Value,
+                textBoxStartCity.Text, textBoxEndCity.Text, tr);
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.Designer.cs
new file mode 100644
index 0000000..f62873e
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.Designer.cs
@@ -0,0 +1,98 @@
+namespace ProjectTourismCompany.Forms
+{
+    partial class FormTrips
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            dataGridView1 = new DataGridView();
+            panel1 = new Panel();
+            buttonAddTrip = new Button();
+            ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
+            panel1.SuspendLayout();
+            SuspendLayout();
+            // 
+            // dataGridView1
+            // 
+            dataGridView1.AllowUserToAddRows = false;
+            dataGridView1.AllowUserToDeleteRows = false;
+            dataGridView1.AllowUserToResizeColumns = false;
+            dataGridView1.AllowUserToResizeRows = false;
+            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+            dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            dataGridView1.ColumnHeadersVisible = false;
+            dataGridView1.Dock = DockStyle.Fill;
+            dataGridView1.Location = new Point(0, 0);
+            dataGridView1.MultiSelect = false;
+            dataGridView1.Name = "dataGridView1";
+            dataGridView1.ReadOnly = true;
+            dataGridView1.RowHeadersWidth = 51;
+            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+            dataGridView1.Size = new Size(800, 450);
+            dataGridView1.TabIndex = 0;
+            // 
+            // panel1
+            // 
+            panel1.Controls.Add(buttonAddTrip);
+            panel1.Dock = DockStyle.Right;
+            panel1.Location = new Point(645, 0);
+            panel1.Name = "panel1";
+            panel1.Size = new Size(155, 450);
+            panel1.TabIndex = 1;
+            // 
+            // buttonAddTrip
+            // 
+            buttonAddTrip.BackgroundImage = Properties.Resources.plus;
+            buttonAddTrip.BackgroundImageLayout = ImageLayout.Stretch;
+            buttonAddTrip.Location = new Point(34, 31);
+            buttonAddTrip.Name = "buttonAddTrip";
+            buttonAddTrip.Size = new Size(94, 80);
+            buttonAddTrip.TabIndex = 5;
+            buttonAddTrip.UseVisualStyleBackColor = true;
+            buttonAddTrip.Click += ButtonAdd_Click;
+            // 
+            // FormTrips
+            // 
+            AutoScaleDimensions = new SizeF(8F, 20F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(800, 450);
+            Controls.Add(panel1);
+            Controls.Add(dataGridView1);
+            Name = "FormTrips";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "Туры";
+            ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
+            panel1.ResumeLayout(false);
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DataGridView dataGridView1;
+        private Panel panel1;
+        private Button buttonAddTrip;
+    }
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.cs
new file mode 100644
index 0000000..178adaa
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.cs
@@ -0,0 +1,64 @@
+using ProjectTourismCompany.Repositories;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Unity;
+
+namespace ProjectTourismCompany.Forms;
+
+public partial class FormTrips : Form
+{
+    private readonly IUnityContainer _container;
+    private readonly ITripRepository _tripRepository;
+
+    public FormTrips(IUnityContainer container, ITripRepository tripRepository)
+    {
+        InitializeComponent();
+        _container = container ??
+        throw new ArgumentNullException(nameof(container));
+        _tripRepository = tripRepository ??
+        throw new
+        ArgumentNullException(nameof(tripRepository));
+    }
+
+
+    private void FormChecks_Load(object sender, EventArgs e)
+    {
+        try
+        {
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при загрузке",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+
+    private void ButtonAdd_Click(object sender, EventArgs e)
+    {
+        try
+        {
+            _container.Resolve<FormTrip>().ShowDialog();
+            LoadList();
+        }
+        catch (Exception ex)
+        {
+            MessageBox.Show(ex.Message, "Ошибка при добавлении",
+            MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+    }
+
+
+
+    private void LoadList() => dataGridView1.DataSource =
+    _tripRepository.ReadTrips();
+}
+
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Program.cs b/ProjectTourismCompany/ProjectTourismCompany/Program.cs
index 332a19c..aeeef48 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Program.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Program.cs
@@ -1,17 +1,30 @@
-namespace ProjectTourismCompany
+using Unity.Lifetime;
+using Unity;
+using ProjectTourismCompany.Repositories;
+using ProjectTourismCompany.Repositories.Implementations;
+using ProjectTourismCompany;
+
+internal static class Program
 {
-    internal static class Program
+    /// <summary>
+    /// The main entry point for the application.
+    /// </summary>
+    [STAThread]
+    static void Main()
     {
-        /// <summary>
-        ///  The main entry point for the application.
-        /// </summary>
-        [STAThread]
-        static void Main()
-        {
-            // To customize application configuration such as set high DPI settings or default font,
-            // see https://aka.ms/applicationconfiguration.
-            ApplicationConfiguration.Initialize();
-            Application.Run(new Form1());
-        }
+
+        ApplicationConfiguration.Initialize();
+        Application.Run(CreateContainer().Resolve<FormTourismCompany>());
     }
-}
\ No newline at end of file
+    private static IUnityContainer CreateContainer()
+    {
+        var container = new UnityContainer();
+        container.RegisterType<ICheckRepository, CheckRepository>(new TransientLifetimeManager());
+        container.RegisterType<IClientRepository, ClientRepository>(new TransientLifetimeManager());
+        container.RegisterType<ICompanyRepository, CompanyRepository>(new TransientLifetimeManager());
+        container.RegisterType<ICountryRepository, CountryRepository>(new TransientLifetimeManager());
+        container.RegisterType<ITripRepository, TripRepository>(new TransientLifetimeManager());
+
+        return container;
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/ProjectTourismCompany.csproj b/ProjectTourismCompany/ProjectTourismCompany/ProjectTourismCompany.csproj
index 663fdb8..accbdf0 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/ProjectTourismCompany.csproj
+++ b/ProjectTourismCompany/ProjectTourismCompany/ProjectTourismCompany.csproj
@@ -8,4 +8,23 @@
     <ImplicitUsings>enable</ImplicitUsings>
   </PropertyGroup>
 
+  <ItemGroup>
+    <PackageReference Include="Unity" Version="5.11.10" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Compile Update="Properties\Resources.Designer.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <EmbeddedResource Update="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+
 </Project>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Properties/DataSources/ProjectTourismCompany.Entities.Country.datasource b/ProjectTourismCompany/ProjectTourismCompany/Properties/DataSources/ProjectTourismCompany.Entities.Country.datasource
new file mode 100644
index 0000000..b1aa628
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Properties/DataSources/ProjectTourismCompany.Entities.Country.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="Country" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+  <TypeInfo>ProjectTourismCompany.Entities.Country, ProjectTourismCompany, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Properties/Resources.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..5c40735
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Properties/Resources.Designer.cs
@@ -0,0 +1,103 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProjectTourismCompany.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
+    /// </summary>
+    // Этот класс создан автоматически классом StronglyTypedResourceBuilder
+    // с помощью такого средства, как ResGen или Visual Studio.
+    // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
+    // с параметром /str или перестройте свой проект VS.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProjectTourismCompany.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Перезаписывает свойство CurrentUICulture текущего потока для всех
+        ///   обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Поиск локализованного ресурса типа System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap minus {
+            get {
+                object obj = ResourceManager.GetObject("minus", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Поиск локализованного ресурса типа System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap pencil {
+            get {
+                object obj = ResourceManager.GetObject("pencil", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Поиск локализованного ресурса типа System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap plus {
+            get {
+                object obj = ResourceManager.GetObject("plus", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Поиск локализованного ресурса типа System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap Карта_мира {
+            get {
+                object obj = ResourceManager.GetObject("Карта мира", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Properties/Resources.resx b/ProjectTourismCompany/ProjectTourismCompany/Properties/Resources.resx
new file mode 100644
index 0000000..9c7b01f
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Properties/Resources.resx
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\pencil.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\plus.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Карта мира" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Карта мира.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="minus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\minus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/ICheckRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/ICheckRepository.cs
new file mode 100644
index 0000000..957364f
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/ICheckRepository.cs
@@ -0,0 +1,18 @@
+using ProjectTourismCompany.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Repositories;
+
+public interface ICheckRepository
+{
+    IEnumerable<Check> ReadChecks(DateTime? dateFrom =
+null, DateTime? dateTo = null,
+int? tripId = null, int? clientId = null);
+    Check ReadCheckById(int id);
+    void CreateCheck(Check check);
+    void DeleteCheck(int id);
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/IClientRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/IClientRepository.cs
new file mode 100644
index 0000000..ce2b68c
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/IClientRepository.cs
@@ -0,0 +1,17 @@
+using ProjectTourismCompany.Entities.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Repositories;
+
+public interface IClientRepository
+{
+    IEnumerable<Client> ReadClients();
+    Client ReadClientById(int id);
+    void CreateClient(Client client);
+    void UpdateClient(Client client);
+    void DeleteClient(int id);
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/ICompanyRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/ICompanyRepository.cs
new file mode 100644
index 0000000..a6b1bef
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/ICompanyRepository.cs
@@ -0,0 +1,18 @@
+using ProjectTourismCompany.Entities;
+using ProjectTourismCompany.Entities.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Repositories;
+
+public interface ICompanyRepository
+{
+    IEnumerable<Company> ReadCompanies();
+    Company ReadCompanyById(int id);
+    void CreateCompany(Company company);
+    void UpdateCompany(Company company);
+    void DeleteCompany(int id);
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/ICountryRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/ICountryRepository.cs
new file mode 100644
index 0000000..c269d32
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/ICountryRepository.cs
@@ -0,0 +1,17 @@
+using ProjectTourismCompany.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Repositories;
+
+public interface ICountryRepository
+{
+    IEnumerable<Country> ReadCountries();
+    Country ReadCountryById(int id);
+    void CreateCountry(Country country);
+    void UpdateCountry(Country country);
+    void DeleteCountry(int id);
+}
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/ITripRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/ITripRepository.cs
new file mode 100644
index 0000000..74a1e73
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/ITripRepository.cs
@@ -0,0 +1,21 @@
+using ProjectTourismCompany.Entities;
+using ProjectTourismCompany.Entities.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Repositories;
+
+public interface ITripRepository
+{
+    IEnumerable<Trip> ReadTrips(DateTime? dateForm = null,
+DateTime? dateTo = null, int? tripId = null,
+int? companyId = null, int? countryId = null);
+
+    Trip ReadTripById(int id);
+
+    void CreateTrip(Trip trip);
+}
+
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CheckRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CheckRepository.cs
new file mode 100644
index 0000000..4d1dd34
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CheckRepository.cs
@@ -0,0 +1,34 @@
+using Microsoft.VisualBasic.FileIO;
+using ProjectTourismCompany.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Repositories.Implementations;
+
+internal class CheckRepository : ICheckRepository
+{
+
+
+    public void CreateCheck(Check check)
+    {
+       
+    }
+
+    public void DeleteCheck(int id)
+    {
+        
+    }
+
+    public IEnumerable<Check> ReadChecks(DateTime? dateFrom = null, DateTime? dateTo = null, int? tripId = null, int? clientId = null)
+    {
+        return [];
+    }
+
+    public Check ReadCheckById(int id)
+    {
+        return Check.CreateCheck(0, "title", DateTime.Now, 500, 1, 2);
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/ClientRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/ClientRepository.cs
new file mode 100644
index 0000000..086a418
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/ClientRepository.cs
@@ -0,0 +1,36 @@
+using ProjectTourismCompany.Entities.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Repositories.Implementations;
+
+internal class ClientRepository : IClientRepository
+{
+    public void CreateClient(Client client)
+    {
+        
+    }
+
+    public void DeleteClient(int id)
+    {
+        
+    }
+
+    public Client ReadClientById(int id)
+    {
+        return Client.CreateClient(0, string.Empty, DateTime.Now, ClientStatus.None, "1") ;
+    }
+
+    public IEnumerable<Client> ReadClients()
+    {
+        return [];
+    }
+
+    public void UpdateClient(Client client)
+    {
+        
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CompanyRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CompanyRepository.cs
new file mode 100644
index 0000000..1c7f6c2
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CompanyRepository.cs
@@ -0,0 +1,36 @@
+using ProjectTourismCompany.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Repositories.Implementations;
+
+internal class CompanyRepository : ICompanyRepository
+{
+    public void CreateCompany(Company company)
+    {
+        
+    }
+
+    public void DeleteCompany(int id)
+    {
+        
+    }
+
+    public IEnumerable<Company> ReadCompanies()
+    {
+        return [];
+    }
+
+    public Company ReadCompanyById(int id)
+    {
+        return Company.CreateCompany(1, "randomName", 73, []);
+    }
+
+    public void UpdateCompany(Company company)
+    {
+       
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CountryRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CountryRepository.cs
new file mode 100644
index 0000000..bfc7d47
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CountryRepository.cs
@@ -0,0 +1,36 @@
+using ProjectTourismCompany.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Repositories.Implementations;
+
+internal class CountryRepository : ICountryRepository
+{
+    public void CreateCountry(Country country)
+    {
+        
+    }
+
+    public void DeleteCountry(int id)
+    {
+        
+    }
+
+    public IEnumerable<Country> ReadCountries()
+    {
+        return [];
+    }
+
+    public Country ReadCountryById(int id)
+    {
+        return Country.CreateCountry(73, "Russia");
+    }
+
+    public void UpdateCountry(Country country)
+    {
+       
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/TripRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/TripRepository.cs
new file mode 100644
index 0000000..6ec44e3
--- /dev/null
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/TripRepository.cs
@@ -0,0 +1,26 @@
+using ProjectTourismCompany.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ProjectTourismCompany.Repositories.Implementations;
+
+internal class TripRepository : ITripRepository
+{
+    public void CreateTrip(Trip trip)
+    {
+        
+    }
+
+    public Trip ReadTripById(int id)
+    {
+        return Trip.CreateOpeartion(0, "a", 0, 0, DateTime.Now, DateTime.Now, "Moscow", "Piter", Entities.Enums.TravelType.None);
+    }
+
+    public IEnumerable<Trip> ReadTrips(DateTime? dateForm = null, DateTime? dateTo = null, int? tripId = null, int? companyId = null, int? countryId = null)
+    {
+        return [];
+    }
+}
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Resources/minus.png b/ProjectTourismCompany/ProjectTourismCompany/Resources/minus.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d2738c3eab3dd6cac7643af1cd2545e31147247
GIT binary patch
literal 2428
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

literal 0
HcmV?d00001

diff --git a/ProjectTourismCompany/ProjectTourismCompany/Resources/pencil.jpg b/ProjectTourismCompany/ProjectTourismCompany/Resources/pencil.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..72caf93d9b134f63169c1dd83c53ce07e20ef9da
GIT binary patch
literal 12382
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

literal 0
HcmV?d00001

diff --git a/ProjectTourismCompany/ProjectTourismCompany/Resources/plus.jpg b/ProjectTourismCompany/ProjectTourismCompany/Resources/plus.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a8c3671221e2d213fa86328b64150e21d35540b3
GIT binary patch
literal 6843
zcmd5g3p|ti`|oC0$hD$e+J+>TA%xgm$K*1Xq>E~{H<sOO!zdw~QaT}|JBifk#t}*h
zxpX;otW*Ee<&<(H5#<u4_Io$mPIWr{e&_!`pY!{Fx4qxz`F@}K^L(H8eJ8vpd;+NZ
z5{Lu<1`TtVIRFT|fC4W*Z5;p*i3<QE0044;Dhv)Rfgl^`HwPvUz@Rx9`sqsGOb8YY
zcRHC8gJRR;xF{|yifM@=vA8rIEgnR16B&^#I*P_+(aAiJiefQQ3DGnjh>C<bqByKL
zCe;!Z22yw|4$6xZVr^v(=@6-r&cZJFbJ08=+X;(haxKYJRwQUiVKK0LG8=1cX@v!x
z@q9KU3*@09!6+Kj1v6NG34@|hT`<e+{H^@i9$+-hCy4`wBn5<0l42;1R16-c<ji;C
zGuRA}M@I1(bSBq{?}8BvcY<KiG8ThVn&!-*u5$|ZBuHo=%mpJcCLtlgGGU=5ixY*l
zc64;aTG?Q2Y%CxO3vMElN9J2FxrQPUQ!+e3E`>v5^JtL&BAMh!Rvga-gOLbkN3(b=
zZZwN66aSg7vTd=)QYIpsN3n&R@L+L386TvBA~uT4qhdd$5VMM1#bQt>iC%Az$4ewK
z$Wb8In@9+iNr9wVMv3-l;yrP|qiE}RpXsMkWc2Jf4qdF3O2LA3kO4AzT!_{hQZ*G_
zQEAAiA>ZP-plC_VL#M98LJB3aB@7}zy!cRvB;o$5Ul0M-#>&dU!pg?N#!;pW5*AF0
zispT$@sE|m5z|0ivhX^2a6l>zQYwxMYAP@o)E7~5a^rGA9?{bUWAET#XJ_ST=OA)Z
zqSI*^7#YHYYF!kBDf78d?TX5U#^tdnF=B1vh|<9*G962&Q9vdav>-=uKrs_Oj>lNT
zfDDOaxIpDaX3{A0$PD&k(K446$Dx2OQ7l#z9h9w7plvdA?p#Dsf>Hsw1O?a0lguOg
z)0i}7lq`&234J_^LXO0G`V%ck!GS(RcVeiQr-fIzhZiX{#LF$%!^bPYn;76l4Dj>{
zCkA+9P|)F_Qk*CpkPIDKocM@@fU#2morVh|GlM}8q&s6pg$^xD0b&yDr;HFx{ry->
z@w?G^QbD3ZaH5k%#`7(x;5u>~orl5wjh*HT1I4OE27YRklCwCHe&QT`#ar=VW|KKw
zFf@@3x|jrmQyDVBea^Tv*bgVF<UcC~aZ$)hA&McZEQ|kpH8^8G^Fd_F7p_m`<})gB
z=Mrb|lh!5bh~hP<B|=qzmGw{vk#%8^3ANq?QI8c40NY5?&W2iOX$3gA6a5hg@hyX?
z2PXkYX|d?R`M{FDF}HefCZO`^DHc8eJOCv{MWmvF5)z42R#H+{)lpZSK3!FR<}3{z
z!@0&rn7J7AJhMgEd8W3eXpEJcwXNe~91dq}=}Gi(_F3eDTP$n_l#y^MoC<?!0KyhP
zSA6#r-9g1Ji7xVr3J5tkOn4taidSL%jk3Le7D%K{emI-rDpfkpzVLWxEFnUQ1LHjl
zT?gN>CAeH>cVn_$O1K17e1@I?;xBHMposnom>@b;f@xMgksm-w5O~-s;NlSp0{C7}
z)vivJVAGbf;bS=x1ZHLltiC0sGX@)#@4HGc#EClC1|R8G!EOLclOlhwD#d4)hXKUo
zIE-=*P<(r*57Hv{taW%UN~8{clpzYn#)YQEA{0ot2$=*s#B~*8_!S4#0YJ@?I4MSf
zzWPQ0P)%{1!a{CCnB#>JF$NpF17SwcgOq3}?<E0%;&YSNsbVzYkt?M1&`szHjitW`
z0SHpGZr<1^!r^V(UqF+Z$wKT9pq9;6EUy6Y4L{tyR4m&4e;!=`_*Np{bjW|u6MF&q
ze?2$V>EKkfpcofk2Lywul09@!u{rHhhm^9g3y)srGa}tZybAXI`9a5s5Ga;V{MRNJ
z)Bw!X0hk;D4nx4?<fjZl0CMs$_)I&iwIofg8Lk@YC~GvvHm6w95Mc6fA;4G7yR7u0
zcwo6ei<5T#*ov?Nv+wRB|2QuqG3@Ngl%VSyW6}!fr?$N;tm-WPm2#<Jo_BXh$xZD(
zZd&~-TGN^m!x7z6WrgQ|i%9qmHaO60qn+gXG`)T(#ckK!Soi)Um4o%$v?(3b(TAjZ
zgLIQqPc!e0%yvnbVcA}M^<`a2yo*9$M5}UTuT9dc`4Kz+Lna*I<;kkuKGW7;&8Q-q
z7cH5m`E|hX=b0UKhYv7zaoo&vmKbSXMO6I>Fy~C6{*dZoioLdD^40cL@eSsQ7=oLx
z&6-DvFLk1SS!MlLe{%jYY|1OYJ%jjei}N+BrrDaWsan#|c;|Fa13`Xpi4a(~e$X!^
zZ%4fVJr<SH^u|>Pgf#qAx~V@UZwu>T&U?EuGxzq2mI)o}i#5306?oIrXoHz;c!nwC
z5|c15!|cJu`pM{^Q@g`-=<6C@KCSXU?HUw;jF>g!PNp5%KRhJt>%ig}Ar`S#i!<uK
zNhK1X#m3%IQ(b5_{zmh!1p6;%C`Oc4#6A}Rzj)>3u8t$#<84EiclKv?l))z`LO@TW
zB((OOQU0=qQ#Caa@7;Iut{0Ij_x2vy+{8<gf4Njp9^No5&i``J(>c@2?^u*o3xU+1
zq4Kte${P-wrXUYjkee!RI8^T%Xe%4rwXvK$O>0*-Qm_`rFo=wZL@jhr%PsMcRk{LR
zROtpMg62N*^9)ydq%|HwSa-vw;9ywYpeCBW-9*QrXv1)v*@e^N#u?1VdWB6Bn3TZS
z)#wYG&1gNdj^l0{AeN2la^J2Zydx)m$7##VHgMO!f~oC`$>@H+r_4*^?XK%yn#ym6
z?V7WN07LKK)3-|YE3BJd&7fCP(jU(6jBZz~3#t-)uf{F~OZ5!82-gV?F3md%v)LOm
zbuDzB{0HRt;QXvT4WUASH1}Gy(w~2}!E{y~C|_^ykXdEp+}E+-8y~Z)I?9T@s<G2D
zmeW5hq}Or>gIgAvOl;coTUND8nNw$qQNZ2jZ5MoYqN?)Cp)fqcg{?+JjXL5JW<OD$
zKo3rAI^2Ratm(FPd}YqB$lb8qck*3sQ*zs_+8F~6{T>A<f4CLvf8hLny@6IQ7VTXT
zo;n%2^PHf0)5<e_fjYG<kG5z(l}k$dFghFGcISZAk3KiroWr#|dmdeFY;D=MYvjdx
zk5~Sxx;{7Bi8FNa&rpa%zKks&?gZUF{(V_!+=9|$OZ9y#`j&bJA9pJFV$n;zwZ?nn
z$R<6fYkxxVC0pWCpvx(LUn{o0qV2C|=ieu@W?5a3+{4w`KUXtn?|hNiww?CU^I+FC
ze35QLXuei$x!ozVwlv!S#={!ok@#*Qu#IJoqwdwS&)xehDIL#c1vlB-k0l-m9Qo~i
zz=_wk$C}a?o~&qnimx?BRcAjQ(uK~5x#)}_5b_8)=~EyK7}5w@OGaC{y|#8GrIp0y
zR(7G91hSI>!=r@&TOnR+d#6FVVJI?In>A{XHXAm9D$Z(5_sE)6d{__==IN!Ch0j1l
z@V8evDHu=Mn(Mk7m2wVVNlCHtu~tA}hL-IpeebSyb9phfRR`lcur~KLX%!{ca$a%O
z)+MoOsUIsas{1$mmUo@xce=23!L))m_sZOC8dlDzn78bDWC7yZ1U<NT&l-zup;~6Y
zRr+oQH`bW`JJJZ>UZ3Ku%avKyrdfWzks+Ez`7PzfGNb_5)}+U2?uTy|IGSD!@a2T$
z?a%K%YWzE*x+}*T)m|KX95#PXb?<J*%ywI5QM9N0=8SipPZIAbtN3m!?cG@$h{!QQ
zK5?I)txoCvIQ-qy(u%xLOCwt|fy!>%hG_=pF?zYinn}677jlxh-YShB&+qYw>At)d
zxpxh$kD{QHSel`e?NZqXZeEM{h~FqEI*e4W)0<`5+vjPpWou8@xEahm7onp8cS;RK
zM1HKE;pz%I>JX`1{bBcPb-ANz&2fIQBYWR$Av`~L)*((`U{pYvi=H)fH_~Ej4d&kV
zKTMf<$VL-$pS3wATJn{%T2^Y%z5X~QYF|$F+?k$sTCoa10IB+Je@8+jxoa;xVC?3B
zGgPDh=rNT3@X&FUA*6OS=X+FR<-6!Xw<kAif6_o?AvId4(_h!+_oqTnYCs8stlB>2
znc1}!<=t%pgSG0!?;Sow==p9SFcsNEKv!tqP`8o$)iB(sF$<nqs#c|~l>xY_jZc@o
z+Cb04|D7RwRS-Qpiw7(%RRSR;Gc^6tKGf8!r|1txl$2if>gFnCh0DaM!==(vrNW@p
zN!I?i!tl_|b*>O-gv98GMXiOdsUip_zKS53UJ>%mAvId+uGG#cVM0I%0Fbg&u?*xt
z?knV&)S%x3_Z5Gnc>w?`DLo)dDO|Sn70!QVDMkFO4})I!6%dND_kHM30JOE+TJlg(
zT8Y5Ql>{~VCREoaeO_G%)M*+W_E>U%__Ys;e<pbWN_$qC!lhA+lYo~sTg&rGPk==W
zU%|2<%`KfgID(_yN0cwU^HDxf^R&&0qx<`HX~)h9UgmnoSiZAsKC}y66Ki0m{T|Wn
zlWph<URhe&?j8KAqh@cJGT(QD%KP(tGo!pG1#)EcqIizR6(2to8@?j)`60jY5C>%M
z7;gDA_?BV(Mu(Y|0i=&qi}LJ!W4{pm-_uIxeW(`f+H^nq>LrFP^>NK!8`cB=*^36g
zPLMQsm3Vr-V|8Bm<E)cgK>A`ca_36bYxm;AE?3p)7o6$;a`E&aO3B~ZE_rkKtkyeq
z{U_T&=3=wh&XwO^dl(<~tg2SO;ETmz68HAx;cdH(hxUxX*HzWIoaL1)N>C=5IhKu;
zS=43Tz12EfCwjrhnIUQR`}0nF>ZA{BSo7SsU$DK=;Rg^$v8vHq?HqXYqM|R_z?Pg`
zW5tUbE&_V(Bb`r8jB3p&EKwk2vI(m4llvwnN;pOjvduTP;+|_H)i#uI+5+B(yzVL5
znm2YRL}zQ-2F1~y{FwYngYvgkDXA03h}s9V-9{I4Y#Weq2GL7V+jA@D?*dQmSU)~$
zdNXGaZO4s6={GJM>BU}59^d~HO)D3fv$MiFIJNN!|I&bpp+10AbC`+ypUS!y9i!#$
zxxm5w2hm*tirT(r>)x&knK|5n%`i2%S6$Lr>qWn{8^LcMGjO>Z5hwZj{R&UBPQa_|
z>{W4H67%elbUlK70{sI?an1*X;)?1Q@;5p<hi$2isYtoo_TSFsH<FE<9ucUrpvWv|
z+Z@lcp>anDx|2pY3xT&+&XxFU+jXP6uU>CHvs!aS1b$YxT}~(O@rmWf0*Ryy!^@2U
zuHl>Hei$X(Q-=XmpQb(MZaX9&>+vkn)A(3;ruBxyzG%4WB;@TC!NM$kev4plbCeM1
sn46d5UWw{k|4_ALf?&+&ag1MteY`gRQEczn;l(7j0}N_okA<E80>=>I9RL6T

literal 0
HcmV?d00001

diff --git a/ProjectTourismCompany/ProjectTourismCompany/Resources/Карта мира.jpg b/ProjectTourismCompany/ProjectTourismCompany/Resources/Карта мира.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9986cea6bc492c3471ea11881aa097d7ead30312
GIT binary patch
literal 21842
zcmeFYWmH|w)-JekcXxMp+qk>C1b6o!L4&(PaCg@L!QI_Sun-^wmjFrbChs}tySMK*
zZg>CgF4icjraWb{_Lx;`u0QL4z5wV7GV(G21Ox;i2mS;8Yypx0EHn%(3^Xh(3@jWR
zEIcAQA|e6;A~q@-GCCeMK0Y2cE-oPn4H+R36)`R@IWsvGEgb_R0|6NeI}1HK4Lt+>
zD+mM}92_D%A{HVd7Cj*@A^rdB^k)#jfQNL4bcceV1RyaWpfDi*3<E>}1ON#I?(Kgi
z7+6RsXt-A<_WwfvEAeL&K!yUVphKYp0K}cxf2sZdrT>RB;N~Pq+<2Jo6PCMEB14n2
zCH8|=u*jZfRdVLzoQ%6yFaW?dHKO=4(PXPN=ZOK3qEuZ2yZ?o4K`dW#2mtm|kPUQ1
zgZd)w=alT}IK~1Bgk^0*#Oo1y5rGSXOTt>+WMX#jnGt^lODSGs7`qD)KqN?zip)h5
zFiGtRGpKYX7Dy||IAonnBI%oXd=uJq=VelZD`p@mtI}@!+ZrUM1Q3~kvgU_=$D`5j
zbuh55S!`2NQS6~BI7Q-<Xe#fK!%Dm(TOjkK>{$yyEWYXHb^&S!{9t^OQxCoa_yn#i
zPGkDf*NNsOC?BQbBg!g2u35kwREK3R^b?qq^lXmKm`;&II{g8Dh`l!GFww8YUvVY|
z1U{14n86HIZS{oR67~$BaY5KKe9Xd&P89t_M0rG^zz%p{8zJljgLR@Z8wgZ~6_dB@
zb7s`D1KD430OUCLVIxO%_u$uxeaV{|EAdP>((EV>0MkGK3IzM>g({$yd0?&m9ee2$
z46JY0z^wM<CxAwUX*n<)fI#*h(q<Rt^T}4m6L!m$%0zL9DoFTp!oJiE-p>F4MI|tP
zAqn~_i_~@dTE{=-8$MptcIqCA?0owUORbQIn({`3gUqk#mQ#>)Z`NH$W5oGv$Q1iS
zn{DOYwaF|Ky_<}}sv=$xogQSQu%gI$YN9~J+4BT^@GBeuK$`3kh&UX7pMTp>`1aR!
z&MS>fBp84&DStvMC;(umIs4CURoTA_lYPjPmraYtV?xV%vU^b3GinM3P$e5ObHuLi
zQqbFV>bwqQNee<AzPv)fxu65M^-p~IC-4)Tbu3%iS+7)ZS~z}}DM<;y`u`MfIpH9h
zy2O+U_ydr=bqRO^0K}P;Pp;dbUB{EJb^AsPUtSg97A}dr06<XSP?7u4=514h=_?hS
z2wxU2qyPXx9=<P<H-A?0Fgz`p;!VpfajzHva7@KD=={LG!E+uI=$3Qp#WvQBc{{h=
zg5B3AI4foo9QX+SLFp6!xK%$cVVg94@fQ)CNvj2l&Z4>kP#66z5>E^f^I#gp*WFY(
z@*l}uqqD~D(8dOT0DKA0X&se1qukIlg)FL{hX;Svn<th7iK`7wALH|qGc<kw1qp$}
zba|tU3lFuI9eS{+?*GHJ^bcVA$`nCVy2IY6#r5mIon_=3n)mDJqZ~8Xs>B>td>8yG
zfJf-n(=0n~ZuwgIo8T)IBN@Ify7e9xebPqK3R0z@XeQ&-0`uUz6!c-Dzy%eV8-ti~
zUnCoBIC+Z&hw1B))hu&Io(A@j0O*Ie5cVJXr~kov%^^q(KPC#l*;9!YG+sYmiL>J?
z5U~*h02szIO{P}?Wr^r4JN-f2orlIJ7|1^WqDF(~A3%zbZ(n_{m$p^%^ULm|f|%+x
znO}`JSnodxk}Dx7ywLuUBp__w67*5(mR0}&e%`9>3oG#7{D^(9JBr<*UIu``pZ0V@
zVgOUhuV56{amu5GvBsS_<vi}`dsFNGfPwod*7tLxA0T^&gc3FvS!wgN!(9pd%OzrQ
ziZhrG(RiMqfR*vO9ia$WZn9!yws_zEs@J3n)zsM+YN3am>YJ*S?)(16Z2srpP4pL7
zN->dHS&|F@2;S7JiGiD#S%TCEh7Ba%$p7#_*yLcp2^ND$gpNuam6N^OLsmIB=F?0p
zNeTFxgc`U3MI8JW1)QO!69rJn0&p8Q&2w|F_QG_JtjcN=3}<{==R@wmxdZc$?JucB
z2>K3e4GTH8?o?E8yTDN_{KI$!qM$uHVuzyiJ0_xjt->JE-pCLfc+&F0_WTZhrFeMm
zzxBB22Y{w+1|P9k%0CGm>rSH<C1d?L`tQ&nss;7j@BU#y=`4H|ewdyFuUG$#iHrEn
z&GF|9OlKp2`^Uev0h}pf4(Y7OkE#9tA^lU(VZIth$&4@s%q6Fm9mn+k&4woa8a92t
z65GZ2Z_2;^!-<M5^uWUMh!8d1RQ?w)D!M(+{lBXJDp@2Ay)M`P$C4=6%V9wWAR!^3
zpdlfkAt9k&CjjgaLBjwTnCMvK?AT%ylpNe@I8@?=)SQxF_Xi&A6hXXhyk;uqI4DkQ
zv1cbY$t@UFO2gY!jFfS5Wfen<T^Xuhsmygs{$`Al?@!0|xvQ(jpycC}oCI@vTSt{{
zb*=SQ74@;&Yu2foTZ&F^uYb9!Pu1JfN)r&MJ*>eTPT8TbE@mmTXB6BzvI1L)zN_l#
z2I+A;&XgmbL<|vn9W8%=$`h^J83WlNskAw{?C53egru8zQpIp>pFoiy0i%44?&W25
zVQccD_1nh!MTYPss?i{aRsuSi!Zns+x^vZig11OHtD(b>*<y&B$g3*&SSD-sIdyJh
z^^fTZmmhbgnBM1aS1(w!SwCwzH?GNM@HY7NIhXgN=#7ghGmV(_A|TPakw`fm{rt?(
zF-=FnM&g$DqooER652pn&RX5Atd#(@J#BKG85SEbXn%Y&-BdL3iMzIRdU-s%`*Tve
zcKJ%X-nZ0r-n{uH5^HlRDv#bmDy=T2W-`?F`6To-68!O2>nX}u8sDF(D@zPb$J&9_
zzuZr#R&4nLStr;=ZEWjoneQk=h%)7;v$Io43CkK=UScxZEK?-5oPHeCDUNhtR(6iG
zZ4xBsQBGmNT6(~$2~*N~ruQ-vYzNjgmN~EpFF#taDy6L}sZPtxkU9uT>PvIc=xhOY
ztd?Y!wZfTsY|Yw}XoOuk6XA5S#<Btmu?8;=)dsdHX?OI8+>Dqky7jHT*<xsJYqh#!
z<UFEzmivf(FSilcY?as{0;LDH^$LihE*8i-92^{Ojz2kVI?_}Y<6@zk+5P~Ma)>;M
z$vGL=JcI#^>Y*EEV~+aQHA{3vi&teoTZyjjtmy20y@qv{oDlOz`(es%L`!L?_@8&?
z97iu#S#yvWHA!7*1SyhpK-}6`h{mEx$n<07pPz|uA5ImfG`OG?7IfL^IaYOZ*DmpQ
z-Q@O3d#3*Y2M4H#<t;G1?X6{QLh>p{7Z@q5>5P!N-_2siXpQRq7<<%fP$F@=RB^bM
zHBDy{?6@;sT69tCrpVc6v+gEO&!|49@UK5r1>8xXGXB(SY?ZQ-ROC1H%;zdw(#Se<
zs;QB|^D?wph?9C=<s4N3EuTq}G4{e<{FtIuprxfdNLj^RU#Cwl(0b>kQz@vHBxY=X
zYEP-))_#bjZ%7NX!cDqf7mqWSAu&KL7gZs)WVAYgZ@-cq)4`0$!<)y^bKB7Iwqo1m
zBc+0ato?4&u_&vki^mUmr4>uU$SC_6Q(ydXJnjAof%F4Sq4C*~>Tebkp176LTu`kI
z$#|zTf!dBmE2k`Uwf#;u+VkFs?VQkUc8l*bl+~*<C?{VyoijEtQfMoeIG*3raCj5j
zKV@wWnZ?wmJ49W#yW<pF)5iL*{PJMufSXk4;>CPlF-G^&2N88<tZ__ZUiK}G3)hL;
zY1!3C;hWf;(&B?jQ`<Abi52^u3`_1AIa8$JgPCMCV)6&p%x<;C_rH_`AJ@KJ{-}(Q
zYBKuGR&Nm`BOmzfilocFhQ<X7D_)NhI&A`%y`OnxU1$ft$y9}xa;|udEpf34>FP@P
zTCGU&=XX(!PvWMX<Mbbo&KyXHG@q<YkTjnk;U_W`<`}=%xv75e9#LP=Y%%vqRF1gU
zR#?`DN|3;Yp}jmO<%h5z=Ohvphx+(Z!)oM7wyW}iI0Fh0Ri1ZmM?3DPix$WoD<}1C
za`tIi^j_s$jtyjO=S5AP5fYplEor>}10;)~Eu{P+)t;2TTN$FbyQULm8i!TNf^JS6
z)6%ps^E4Q*PiMTi_{Q?MT*T-Ay}oL|qnVvu5HPyi<Ll933D;vaEE`m91t2qUT}x*q
z)W))OO;Q&q$WYnzv@14664p&JJ<;;TwmULOb7~$TF_0Eu>@*<6ml#ezrNIu4=+L0*
zSZgL|K0I}4Y!>7ZpnFN0e)0}0*o}v9{{xJMw<#EuEbC~{q}nHxO3fzg*RN<HmDSLY
zW?+tTX5na-duUH`r&B_-WJKJzuBGC9*NDzzpQ12nCVEj&xmbJZVn5bgNi2Z{Ae-(D
zHXYB1G}LR3x0F8$56S1nBaSC%dFF3_P{2uXwLh9@CLC$ZGd@e_+tL}aS~d@zVfLR;
zSykB<+YgGoQ+gY=XvZeaer!!;d%smUGU+yb=yR5ko!r2&&8J)29B*8z)by^lOB8W*
zx_+dgjH$(hZJmhuew7?9ZUA{Ptjm3%Eow|YCk>ITF6E7TQDw+GZ6=)5`e3o=hMkMy
zY$eaKKm~;?7B~}ytZ127ySUbvp%b$W>N?gQn1&{f9@iiC7IyQ<*>w0Ah+|bwR@|gb
zWM#k4?lamR>ms@w5NemxW;=5e6%aIUR|sQwB2>|zeRK>D&zzPBiGO%zN4=+cLmq_j
zz0cyH+}b*je^hEFErp<n0h4G#@GQ+B@rtT9&IabGX2oLmE#ugB3(;D^@Vq1Kv|UGz
zj<UqKpkj8tP8Z6dyx$FnDBTJc2QRJ<gI9f(N3d^1t;OD4)~078ElGf1FsGNl)e?ag
zS*>4^<ARdxZi~9=l3P4Mi}832GxVq4BmS>^QEC#S)v#t3bH4)xBHWwKM)kgT(-#@u
z>BN#%w+(iBjn}l<nK27$!#18A%<$T#U{r(mfFwors!dS5q4U@-M;H<Q5&Hg+!^b8&
zx%tDj%Es(q`;F5n9afXco;O7~I7eu)NSBjTA7eOrKeb07_E`K}-ZyHRqS0RZVo2Pr
z@;l@XqFk<#!2zM-(=VoV!Nb@XTdCo(;yX!2K}0>blc-(0ipE6T<(QRI0?s}eG@d0F
z%Wm=A1tnxku`!Ar_=>rMAaSSuw8zCJdQX+BV~!pa#>+Q2MBkdeQQ7vl%n>P=_Ufv+
z@n&D|7d<e2fU)q~12q90Z;VPZZwaWVIu6J_x?4lmRGLO3_{9b$&>{`4nZxOw8d0rr
zd}?O+{_%ZVmNnk*9lm(RHYq*o&JVbC?cHQf^63Ij&ueA{RP&L9sPP3UeJUnB3QvE4
zn^kV9dViB5_tnH;@MhM_ymH{uS=h~q%DJM~I;m7=T@{Mi_s-#)q$%Ied-hA5+nk{4
zeKXHN!_D;K`Q(@=_?tLLS;yPazns$aWKEd0u|}gqCV_;|NG@FNM?Wr<TlKMh6ya%V
z`@-<4D963KcA4_cP;lxmeecPIy}lE*iN<nRPCnE39-Mvtn+T8-tm-TR%#L_tQ@r9;
zwq5TqgvQnjrmYx552g^wDps;oxgT}J^{o7Aq^w0_r31H2?i;mmnK^D2dow7VJ~;{@
z`<Dz-xwK{erVE$3&b2^R>s08KMwf6Ke%gorq|@U6z&^PyyvoTUKuKAElg+$1VE;s%
z)p2h12Z-K_z|VYkmrvLKMn$bainIXa_qli_4hrM@U~~QW8Wg{5E?2qscyfOfidbIE
zm+Pc59f+AADcYBhZ|xYkJ>g_nD21^!cK_jrsU*O0H>N0&e!FRehpx;~WG?SJB9omc
zj-(;B+qtZO@!;VmtQ~8aCbRI18d>&z%>0h(zE^a^Og`}_!Mz96Bu}Cq_aC69Dell=
zB(3?Q8RBJ+M1{E2uiOt(7_}N^cE9Uyta!fZ35jrV5Pm}TIvpoGdnO3{&DuDbg?74K
z<i6ab=4An6z65%oPK_sOHL$H2s<Z7OlpfR|uut}*+lm1?ajQkzIcJ51X5rK4H6<5F
zcG261*IPb}|M~Xs)&DL0>*j)Q1w|p`$o>x!kpGbo0Q=AokWjGD(6C@P`qhbsfW!cx
zFey0Du_)Qa)yX-<%%G_x+_=;<LXwNHo6Oxq3kRqrum9yw!-|6a=?Tme6Dk*VDaJkF
zQ+aZ4oG2ml3vssNi*_W$A-W5k>utV5{3xu7uj0hHvYWAaFcu10$-ROj#;s%UZeP!F
z1knA$+MIVlbcL&FjEr^8Yp8Zq7t&jrjqEX~5M=LkNZTS$&%d<)g4JsOK|QL;U2P<f
z336h~$>N@@%Q;Iol}WvSNovI+fgxG^^5#djbC>zSW7T8iE@_^51eU9+%deH%#A!Pw
zJ=bqM<*C^xjp#jebx^jDeqFT_Levf|jAqFeD+y`1>!UKI^S%jUS{XFO9kqK-A>j*M
z{#Tv_F3=d<hCCuGW=`^Pr7L}r4m}pnR~8+}Ds9Y5p7D&Psx_$+CN{UnN|^2!`x)#^
zM~yCR=rQYtoGV@&#IjR*byZ(N@{nwsD<q|jbCwJR+$`<-kayr%yVQrum`I6i>Ue7G
z(OI=%Mw38Rxvpry=p<cNQMZx9^1P(W1CiSpZVHpQzHe_;Ol$t9<x2UG3q|L>;R-fX
ztjx~31&8nkzdadl_C~G?wTl8Xy`=Htu`-q|awI8-%|4tO5Z!&HCw7%9yv5QyxiqZ*
z8m{8Hqb>>ZGAU7B52k0`PT$ZUz$;qb0RM(CW+24oA`eGB`NVL9XpEM7Tmx2>?!#^f
z>gsb;nS-u&-5E#I&>pqbxb*!cQ*|noAbpl$=Q81#6^_jt>^z1>RkXme59CZo8Cp1W
znraq!P34_7AvP3Z<___@l$}RtPIfWI0bJ>3LHuX3Sk{~gttN|mdEN?HLh$Y8_IfF{
zm9(fOb|Gbkoh%)Jf@&OO?|i0R(d?T~jxOsmf5j7YW;^6@pz+&fcE&g)oT@HSF;vki
zOO5N>i{kmVU|+|mC8(>Yi#rlPQDo+%zoQN~s7H+TY58tTe$trPUYfIOi0=_~C6O$0
z`~GF2AUJHb-h3W8p7-MPGQ$GU0pv878Y{)0&%<2lJ~spx3h;gcCQV~TuVT{>m7YDC
z1VS{pDumjB4*Nm<LeHxiR?w<%6(Z%f%!MRM4_y6Q$Br<C)i>HCRVJHPBxt+Y74dPZ
z&*j6Ww?!;5s9X6=Z$~{jWLTS~0?HkTt;dW*SkZBLDul&y{M%=_&(6Oc$-`~Fule-u
z*Uv`J2D2la!C<TLaV)h#6yEEr4ob@Sk=}UEbG`34B;+|l-PU?%ix~%5qqIUAbsbC3
z<#7iZ^q8F7&@autm7Ljdri!MyvZBa3H!&*e)9U%Hh4x(}$?F>1SfP-_w^U~2Qn$Ad
zTJl0VS}sC2ZUP~y^+ri!SbU!;G`qDfNW9HXxb*6>xa&OkhxBrfr5HZc%hR>-Z0p-$
zvy_;B%;TlE5cW1O<b>0pPlU3D)t6sQGFltEK|42*6c3NS=s*ZN*E=5<^@BW({N6vp
z(C)fTrs!2-6=xwp=4YFm5IN6?A|KNdo=V3ls6En=m0LYCgl~x{@MWumPRBl!eBM9o
z4dX)va~WA-4Ed?Rd;F0RfmLjD`t)|b27PN=gSU*H_v<VaL(2sKg(>M>%*m*~=hbDr
z?1$a5XdxQ>Fm?YppEHTOQ22+!(~_6SH~Ue$#M61zM*XmMpS$t{AZY6@w41pwnkFlm
z#iMWWSx}C42h-~*y4-FO3VK=ThhfLf3M8dfO4tC@by+{iMO>;==QeI+)%NjrM$IcK
zT5bYo))#^yVS2;iDT1srN9lnJh1=P#6!-g$*v^fJ9oU}r-iT>&Bprp(CJ4C7%k(Er
z3NiW=dsb$WsORta9|>I|l<MMI&Q6Gk_izRrp>~_ZMt18tv&gl=VABRLG6E)OVc1Rb
z9FDi?Hr#Qp=h2Y%=~T#2t$C|aTQRta2>BK5bqxY{Mgc3FkB?Dozt50z?KnSeX&gJY
z%ioCjD_A{HDTJOy_L`|eC|WxQRnPWK1k_bLNN+uEglRvVoG9K|w54_y*HsoJPTk&c
z9b%Ha)0-QnQ;wRn5KJ>2+OlXyFr`nes_HbAHtcYG=@ofa=uEQHr}E^1OZ9-u;r+2R
z6N!SeliNN2CWb(E(X(7UC-uYw8is&{f)ERC%lW71j~X|Tl$Sriy>F3>zZ=^RCd66R
z6<1tjKl;rG3t<OVb>AfVTeHeyp;fkMx3EGIySn5o!NvDCocpv*EZh2{WRh<aLV_L+
zcET{3L<JAM*#UxYwv69|shp=p6$Hd{$6SzO+A`B!&jsa4>`%ZR&{k5B-2|gM>2|}_
zg1qh&4iR6gQ-*;#3f^OEVe(R`x|SxCsuZ>*$b0gP$9G!A)Gu~wek=|Ky1;&LAH}L&
zip|m3A-IUlPkSWCdidcmYqg_;7?%Ww1M}xEf%*37t((tf@|=ON0p0I5R%#-?{@{FG
z;3>G;TFekcv=&S~Q1sTe_CuaAja77$J*`D0KiBClti}BtRXd{~LM2BmDU+MU6A84_
zQMNH#K2E{xk$7LQyFO~oc5@w>wNoz%4<Oq)K`?)9GO<8P(meU_nN^05BV6uzl}RzW
z<~YOR4}e?ST6Z*P`VB_@MI?rirINUZ#Z9~zCpqqxCn<*?Pr<=)oi&h4+DLr8S}?0_
zJ_L%&u<qeb&l$dS7r}t2Yv4|1%2o_Q$ionRUVi<DjB@!H(^rB-dtJf1+ZhtBqYE~u
z?@WjQ9PbYj4#&~s=!m>Z;+G+XU44F5&Gp9`4cV2=Mu?Hkx)#pawth(eHDdn4GRT3v
zxDGBThH{ycSu0M2iAcX8Qy3Cz-Ny&y=#cZK?`S-1+fU{dlIfCF#2*|m=>$V&nH#lo
zg9}|G$kznpH1Bb8THY<Q27n-gjEORXaN5ec9LIv}jbM#~K3a4OsQKu@Ib(LF8X#9o
z!5>o@V-|-H67nhD!NTx#Bg>F2RdK5h%aH|~p)^4)^||Fy6)>F~kXyo*7r|Z3^@n15
zU8w1eeYTa+!PpEdO4cK^IhWcPD6kJ(ty^y=NB%{`z!j;S=u5`Fv^-E#fC8hCt26Ki
z(1tTruWHCqB(op+N|Mvk4!6bF>ym%Mc_`&uh9ATFl$V{V_hs**ZDCq;N$rgI{^Psa
z$l4CST_+d*3&Yzi5vS<${OxJYT?qs;16e*cfyHRS>koTB-m>c8{%VIMjQIl`BCBpP
z9k-u9$w)9=DFs$LVV-Yg0MMv+m#Zw}9R$x$TfqqYp0#&n)=QEtKBl$i!FE1j*g8x>
zEYEdjpMo3CYH13e6HHUntfrEaYxwZ^phSZp3(v&;9mnE=y|88aD{10cudJR{??90i
zPPJ=XP-VuH8}9|oH&~$7tSS1`>LKxiuwmxd<QAK@=XG$Bc5lV&c1cl3qj57IYt{2}
z8%s`zr&;IY#VXQoHgby}D2sSb{U3>1tmzp~9eRhV)=vdvMh%p{!cNOS$LJcPj>L1=
z$U&KhG&DqD(*GF6JyF}N+`vN(tTe}<d#u{6xG_RTqyKEQ*1&Dh^QiUKUR>kz441)4
z#yf&HoHjb2ej|mn#>i^oQCjqxg$Y+Ooz*(>mLp(qrAN+}I^_2yMQV1tt=Mhv(tf)h
zn2ha8ZP$FP8pghZUXJ_8+#k^L%PGBmIIv4!qr&79)11BA?LBtfK~#M0N4XeLl)%o&
z%x#@}{(W9dPn@218$1L57<7h7vDwtOUlYgW-*x#$1i-0J%vN|a`pCaHGK<gcW{W2w
zyTfb^3Za_(9^$2_ekk*rJU!H@>uAIL&WWX#!g7D17nzlN50g80$R@}tISN&14~PH8
zx*ij4E6u`yqU~(2o%v@;)a(rSwadKsR~x-FF~{G_l}bi`0M8EDw5Sayu1t`+-b@GX
zlUqi?X2!`ka<!ixj(3$F4fa2siPm`Ut=;ogn5?5I;X!q$2^0;%4|&mvKLkdItqi9|
zHN~;{m(VQ4({<UFbP|kM=+2co%jhCEJClfy1tC(jJ+Yk)ERwEslG9ClSp*4r7w3K*
z9?4Z;Jk<88hm3Y5$U$kU1&nb`cJ_{i=PxH>5kFE&+t|L_(4F*oV^@hsP@$O=gXFkR
zr|X=KY`Ll~{YFxwA(%A%T1+uau9j~R{!H-um$luB6+G>qHcy8fR6GRkgH@rsm_m!y
zr^<@>INgmlU1fB7xA?h7N}6-?gm4(iWw1WXhFvunOEF>Pkwa9=$A(*PZJ>RBh@Ma3
z!7c3dxApV)X*=9$puH6dZpnh|oHd5sh03%a!$^ZrDkudXbw3Y58D#PcSE+jvH={;m
z`;$RO4-tIt*kq{B??Mfl`eKklU4U*S5QCaSQo_*g{!FI({HQk?mOFOhI699l&t0?b
zxUcr^E>rOM7btJF+T+>p2z*NG$F{c@Dak&@T2cBQQfJY1EV@=q{_QPwJaE_V<5Y-+
zrMD9%lRU>bDBeK*YsQtFG(LwGHhqvL(H<!EpC8qa7c&ys&l6P*i=EzhI+H!w8lA)~
ze5aTM)h{-Mm$mG;+mY`1{3xM{fpwa?sWQ#x*zppwbUo2Jk1)SvVJlwI3vCP%Mf3WI
z$wVbmS|rdoWew6ye0pj8__HcI4d5gtp4QmRCZQ@beWRH~c-&M!+a-JSo=j5DDT)+X
zWu6J93O6HKeb`H+D(Mb;f{@VUEcvBBE9*op=w+EQ<P7QUo6dSjY%gIZ;UKn{@u0m6
z@F9>19sJ${3K9ki`rqLq5EuXjhqyXAIlGyg82DJ%G;pc5uy^&(=@Bd}O7RC+B)`6w
zMjPw5W}K&|ZlhqZ)-Tdy2`hNVF=B4!Sy5Fyo~*$#Nj6q!S-G$B=1?aA34)PgO{y3v
zkA(CNza))1(XWk5bziMc3nHaXLxf<@`~m7Yomw8|sLciA6MtnXD~AF618uYrCm{c|
z-0x&jf(R?eAPLe(mONy#q1WNd1_L%nq-OqPEfke90u5$WPK3GaW!BGf0s|sfbHxh#
zRhw1i%tFHm%b}0A5oYF`BG`29rY0Qr1;L74g$d}e-+yu3RjK81=yWfaN*jSJCR%a6
zUVp!Yu4JXnrDZ1BFNU{8x#-m=hY5aQd^xuDL$aVis}qlcB=8E2l-IBVMGX>hZ)0SS
zK>0Yi`aCU8mqo3_5YQzlz|t9P7`WEoVsTg{V)G-|lh(lp6By7xVW=%Wjd2c<>V&Ds
zO|~KLQEjyu;K`R?$)vy<=^ChJP?V`q!P|S6u?Sqa$al)Dd*I-^^95)SM9KT^R@hLJ
zi)<g-_W8F0!C^5)M$F0vOlrA2@D2)D`({!}axqBy*=bX~5W%ocQ+)QG%IO*5`jwOo
z4BqJ%nn>okiFD>^*|<L`Qv|pb<@3HeDWV|+D@(!k*fxFEXspI<jYD88Bw&OV-qps^
zXO6?#t@Vn=zeN-4bu9~l*#APVXxD3i=21W#mjtU*#$;`fuKkHNYIb}?1~1z^&Q_hN
z00(B>>b)Jd)mxt`mvtP20H`0E#mi<?z5yPgg_!p>vhdUwc!!$IDl4H7DZ{-cZs7}C
zS=r>qwYnKm`_mHX#i-<Tthe#nG{z3bwU(HSrpYv%EV2H}aRl&P8nL5i3>sye=F2|<
zef4VwdlDM3`(?^|pItG72f3>!r(_*%s26c+YsAXxZQ_^NGq@QLJcr9uC6YOkSM#oq
ze$!(pWVP+;l_;qOVFPq#_F12|uOzljJ{IYG30g13gSDIPm$r6tsa4~WPUVpNp_moK
z!>)z1s|-sXiy5zf)@UGp?ES*2CCw#XP97mpc#S}l6N~^$92N{;iuC2AMWH{1R{w|)
zNO$mKCh}pN-Ky<@Emr9GH20-6Tt9(>-eOV!7ppdH^a~cWXW@~MhHLJaHoPj6R2nK~
z9xMEN6zo}EMQ8O0rCj_`8QUBd>YYzpzBL(V#S)q3o-_dm!S|3DpAAe0mT3}Vck`kT
z-w#`tdOj2e*@?7)W@->hbE(-X$biUG4_N3-QU^Hn@2X12MsTr9G@kda&V=qRTx|*_
z69S_Qv~SZmr#wXB_(^dvG%cM@hxeJN#Ao0$&P@=~J}yqNzP;OCuj=0PP%&3)vQ!AR
zT$lcBAQ#GMaS^jiMOd7dol$I;GK_wJVylGVmr@wbEi~c?V92g(&>@HyMnt~T6M(*u
z7QvcID2EF;j|oJEUHgIot>piEhE^V39L5OcTS;jCoH!>8;GmpUsDs?P*yNQmr@alw
zVi^^zlJTt+va?Z?hoD5L9*^_Wm|u3T*3U0ZaGUjB@Iu%r$#4hCacrMu!(0cs%C`)I
zEe#?(2KQ?=epWGHYix&LU#lTFJruhk;B7k1F@5}E{8$A&_O@>XAE1R6CDy22@bUL8
z6|UFUeg7bv>X$fAi)In?X&<*-R2iGXp6F9ZKLo;sy2OT;i1~&Z0y)Z1J<BEJrPc{-
zw4XBse#4P{9P$V8-+ku@u1UG2%2(5@y|+}{LvGNPh0jIqKdWGk3w{*RC?n>@qhh6C
zK(Ucyj~b~jz*0Opz;qSOBVbZr+I#L^z(o(!ue5mU1$j}@o8<&A&}73fx9*hz+Mvt!
z)YSd%fxA(oEacWk(!%`JJsL8UjVcLquY~Sl(>XLhb)(V#>q@00YL0_Y)0c%J-u*5<
zeD<tLge*)n%IsyuCTw_si^Z;|(+0a*%F0#83?~)!N|)T@f-z76-5}ZDpj<+Ustp=*
z(o@hiEDY`)nphKKJAD%6laX*s56NbHa&)WqM_B4H*23`aGo@rT7!nUmWpYgUHoU!2
z-ru&wll`h*HVa=67GlgLOr-jFHV^fE3*{{h@>m8daE*38S00Kfw0aN_;P#>-Z~X!6
z5qgf+j?=!4Q}uRfmS2G!S%kU?=c~vJLkP~-Cd>2+>kZo!3HZm7^?Wh$cFsqEHMVys
zOd&*W7DoG0)w>_`A8RTiPLJLq#uzMXYb)&JtfBcYX*fFaQ@9l)cRQWfpq-F4U>NEZ
zn`2_O9$RoMLjcP8A(1w5pXKsx^5}f0H8VK$*dgy%yI){H$Z5gcCzA@xBvdfN%l&LB
zKd6_amDt5K+P|F|HW8F%81;~vU`9tU3Zg1U&Y+23fNDIFQqNAz&<ii_ifPe1gnTC)
zaLKGg<>mQqGsYbizZ-;8^)VnM!eMpHC~>nuTg!e;6{g~D?=cS^oKl>JEcMfzEqcCE
zLLFb)Eek}@7)w)1*GYbpTn2^6f)`!uN>Ul-r)~A61sDFbqb?)JQ+6wFI+f0oMM6){
zSFjo!h(L)5wFrTYC$y}{DU<UnUmG;ah(eLP`v<r{-=Ns24P->^`q|0cS-xl*uixMg
zS08Jy8#i{Rb|~!;$ZrMzKKo}!42`p1ll$6AG1ZG9)Gy5fNq*a%PbP13LTXxrX))&3
zmXQ}Mw@km@7<%bwmD!ZYYb2kK5ISLtz^KHrH&adTh90p%H5LJxq~R$NxH%-`Sa35q
zl{Ml1I^Bt())n$R`nT|fRMH<jlLja=+c1qBpIiN{YwbrP43a+BeD~8Og*2GlH1Pn$
zf8xdqAVjO$D<XVhk4{Nx>*~EN;xrVGnIzPadsztKAjv})OCDcVu^d&<2%qdYcFD=%
zk10do>`1_H-c~^`HeGx{hg2JrA0+P7r0Ia8(80;}jViHhEto5(6dZUypEqC#oWbGA
z`3*L?G$FZ;UTL{#z0IhdhC8k5O&Qs4_2&DNI+SK*S?FSz86o6uY(dZE^;(@R+zakx
zsCNXRjF{a0XEI;SIVm?amg{%}H27!m7QCuzCJ<EnoB_-_q)&cb++3`v=p~^BP5q8M
zpcXYqj_cbgVY0+xhDZ>q4BwK<-Bx^_PJ}cWPe!J)!?VAdxU3=Jg0#f1j8KUk49>A%
zRm?WnoXU!25{nx_y*$@a>QSt;CQzsi&i5tzIJZl+Fq<P=oN85K{UbuNxIds{=`-a@
zIUq3o%m>nSE%v;=9mZR<w*u(+f&&43<heTKRT7!qBx7f4SBjzL@gMtt*9bv(K-+51
z4QJbY{6O(>>37)UZuwnd?u(nZl<R~pET!KpgvNV%cTDb^T8)<lNn$?RPYmTzv=uqg
z*~d$pQX9`&ko_B5d3#*(OrlS<z1G8Ral>UfEXua^%-buT%P%>}S6`VKLVXzV;$+N2
zrH6k#-1^jHsGt(EGI8{6Er&uUD469;U-(f%(#l3isxiDA_cOFzib>#<WS-mGd~UJ%
zb;e7tXA~*_IcqD`I!S)U86_qab9wTuWW{k@2t&Z~oXFGTS;cK~|HH$bJgq`oyaUn{
zYHR~M)BD>i%cPwetRh$icD>w49WMjX-MluXnnh?jIP1)UjAK}DOa%^{UmwS4V*R0l
zaU-Wo=<KD;P8=ken<NMj?uutP<Cn1^k>jnnzAIBuTke+3e^2E>R(wb2Tb^>#YEsVK
zEV~(3?%S_yQ;w6oxm7N&)|pPgAbI-iF6er?UdW&()g$B%b*@Pp=c<+Uo;o@uUH(d?
zRMFLHjDB0X%(3g+c|Qk~cZ9sKZH>@jL&mPwE^D*8`iMlo@;A^DFoO||N!TJg{=6K_
zdR;gMza!{d6>9K{d`t7_6jRLLivy}PfBrUp>JQnN_ZrQ|Nvl4e?7KV$G;u`_Rgf?<
z5lXC^`}qySc$FPsmBtWE&2?5Qp~Wc<)@r#9?Y!5jmlX=9e7;m>r$8F0<;$?4&?ZGe
z8oH_D=|`Qgg5y0^s+QgRaPTD!mmB3NxRtQ-rG7sWF3VYnFi-d`zpWZnS+b&_`L6HB
zVD4fOmT`T7Q|8Wvns~`dfrV@L-f>;*{6_QIPA$VUEPQPyJ%;suIflB>OAvvYhuu3_
zBtiJB^P?P)Zd!B$^EsV1Euwi<BJ0Wx<U+(KlPd2kw5{I5$;;2+irJciGo^HuAe*}q
ziLzGkMO|hbRyX_J!(R)COCSv<r}nf{w_51B(&3YJ!W~h$K0;!Yl_9y9H4ZK7=lZq#
z!J}BbRY;8}1WnUDZq$%qI=iI5a~GsR`^$3GfoYWCLaxvn?TZpEHSsuP3ZXhIilRX|
ztQSOy<<9bLD@#V+H(`nO>yVS~kF}e{-B(Y2YVWhGOVpkD95j&}qtmRjG`y5;X~MWk
z^lA5$ZPk!zrZqK8RBoa3#_s8Hb_opqkk%vq0N72M1b5;7M=Ytf-?liG7jD!U;3E~O
z;=fjqBicRjlNw_ZRTvm48Y|FStza&QWV&2dq25-bl_7g1s3zanz5P;HiP%>EvvNTn
zVKbIl)@Fu!FpdVxBUq}91j3QpCuSF=ZY)QPC~`%K_79-;E!sVa<iz^uyJuQl)g<+!
z*z;;9^4qE&hgDDN1t$C;Cq^}dk^XzzVtLMdYOMlWw0WudDBdO<4go&%c$#S?%@}m7
zp2uQTH+>O1-uH2xaA@Wl0|y4K#)0Rj_3PHkT1W|RqvgJz%(8zT`|ch$U-Vc=DJIPT
zSQ+Z*>jmN1uG0G4A|3=P6O21OX#LzomW`R9wT#Km{{888WcGm`6Mj!vjvP{uo0+oz
zU}BC?=2FnE3)B0p6LxD&k@T&uzTLW^RYzGE_<~OyVt||RQ8(JZWok&XQ~+74Gu3jH
zR4>V5#il)9i(K235pj3lAcIc(B*z^+o!JUi3Nu7e1yZY{ZnuQyH=TZ))V873L;aJT
zP4*T-nIP8i<?q;sZuQuwattp}rQM!)p8@$!>cvPiBT)H{8TX4ArcwAjBs7T)Bkmcg
zAcMtO@SC-gapy_Erw}gn#c$dWKCqJ<vKEF}yM{;@-BgO3f=CzzspjG=Oq2cqe=vHp
z=ys9kb3+WL!m4VoisJLg??7U~i=vGDn28Xj<t}*`v@X1mDtG^a9jTw6Ot!`K5R7!9
zTH|{?ySy+yN9YyiQ%{NEBascZ&kBSkg+iVWvmBpDD95>eri6Vdi$I6{T|H+;(oIZc
zGGvAdj$*;)y(`&|DPO}2D&w{1@j7CsJAJP_f>NM~K?fC<qQ@MBAG1!an&X4}wfnb#
zg?TDod9acv$+!3&?Ug%r`C{lyRK)kVeQXD`4sDW%e(pRNr}I*sDm$lhYCL3GzNK1+
zVSsvgl(|q41wtt<fjw*Xhwt>YrqQvV0?o|LzN`9m;XAY0Hzu7X9t_|TBEnz&0TP4$
z{rLy*`id95Wsdu14pclx+&s%{2E$$iPmKwn17YaoaM%(Epqm-|Yc%eIInd1<GFTXZ
zL@thkCI|R2(crI8K}$2BreQGa^^ri~w}{1-Oh6A)28T_<1IVC*SmYbkzg$(2#~e45
zII+hZ|Nb=jKq$33B<N-q)cjZRAN89#=9?MrmN8-~7<4FTP>CwD`v9orRe<<aU<`}^
z0&|;3up6g9Hwnbok$;i@gE00g{0gWFx=93GCH~cV<r0IduLyI<>{HBFVBOa;sO4|r
zathQuMf}?I5b`T!=Czf71YYwo(9#@piwd#FzqS6dm~Y~^zew?i%+aS#GZ(24Ux8<7
z_El>@m3dzlG$0MaoFjHc12x8hN<yhyWcd%2U%8rd{O)t?p)i2DD(D&lS#ub^1&R4e
zmY8FT*>w*2U=;dhjQmmx7@PxLk1=0QKw~BT(-U@&c+gEh`#~Z;M?d#|BtPU3y?Q@3
zmFg?^3-oKAj6~it$LtD8Tr!6&sY*Zpmj$M`L=c1X5H$9yIS_gRv&AUrW&*VMm)oMs
z%r*0>3z-O7oCA48b5lu!u29K6=D<YumO0SXUol8D&^5RaPu~Qd#yIXJX!e#dumE?{
zUv3B#2#kC^2U?m2-9%w)C^P?6C-*>mMFvoiZxZ-Z(3m*~z%$95Is%?dFr6RF0zVY0
z+&7BcL!s2*71;w*W|=uvKtt2?e`P>oDAYGI*pNu<RLY<dFn0=DbBg)^hW?*<4vpnr
zn&Q4x1-+UjBKzy|O(8eUAcy@$CP&0y`fJjcua?OSUc}cHhw&T3_`%@lgRj<p1Mct;
zm`;B)#{RcOW=$nxi#br3!mG;FAn4}Ry6A5vs9%L=`EO>q4^%;raM)mTN{t0wj=W+@
zs51ZMg3Dk!2m-7NHW=`Wp1&=&{O!!m6!i__tFXqa32_ghGE1VqR{!%{4}kU(L6A_$
zU}ViH<{QQTV*Qoj_m~554x@v0U&r!4DgLJ%jDYO{5AFcG2Y68bn*gLZv=|Jr`WVRl
zb-e%Ahf)kWWsn$5U;5uzU?L<E^!3>5(Ei&8eE`~ZlzRa@Sk?bV06^k*9iqM-19AQ{
z|Nkop1i){B0v^$SqX;H?jJ<a0bv4I9*J%He@%Wc8@P7zpc@1_!|Gy1(`A6dKO(-PH
zYqU7{JHOZ9nb(_8baL=rDEKB6d=V<vG_Y{Fr*>uf?{INZ^l#?{0dz<!m-en})Cc8+
zdv(e<^(_1<%FS~U9x7N7x29$S$eVY(-_Df@lq^Kng-I?qOYo=gWt?hOC2R1VBJKz}
zPMsFwxCc%~-)Nta>6@3(ZWN4cmek-&<Fu1DpQx|6`;93H2c0MjqdXaU@>EsMl@lEZ
z@XhXhLRGH%HmWx;7Qj1edh7koklE(0z`53}R|X?o%Q7xGp$&gT1|!ZafKC1VRh-X|
zl1toC936h;)ET!8L*>B48MkgN??B}!`(0w~^Io~2*%?XWU08M<aeiY$O=^IVc?n++
zGG#G1bxhtWeNF!aYdbQ?kx;etnRN$YrcWY>VAS3(*Xr{n&kIXqeqT?WLkj!W<!;w%
zZnr1zko{+r<`Fy1u<+%tep@y<K?0R0E)hR@s|J7aO$pGUd5J#ydmeCWdC^u}Srp-q
za;O_>X<5Zl)!y<=T!6iynAM*pg=@8x;4jRs!Yy#{W$eb@g)blU{a&`(DiJnrjNuw_
zS=cJVcgYY%<Vc8(GXq2XH2ed6krBE*=FQ&JC|#`h0|2Lf72L;Lm)Mn`1^tbWwv72J
zzh8XfDfcm#7`NF}UBPM!_9*;KucnVz7u1HwP>#7tZB|2!BQp2Q8H7E^F4y^X*^7!A
zZ$s*e;B`cWR$MZ=RimZ|Y69h*g-Tpb67)e|KGrt5<lqqDX2#%{A6{rt>|7`$wnqob
zJXa`q46--2Zhn0ljh0Io??U=)SMv>XsV11)!+!%EjfXjzO70KPy@ZbPRJp1D2Ovb(
z5ZnB1oks4!hhk!#8Qi34fX{NyO<tAk?E1s!gpN9|Q%T9LVTFhmc}9v1mFSDQ6co}R
z)qYCe2R9@mFI5_3Z4NBkRPe3d6pz0c9{u^|jT|`=HDOu9Y5ZgrGl~~#+AU?BW{O*G
zy}XIlH*__ogFIN^!;O7M-0UBKoNvKJz1O^lCHE793H~+$H4%pkw`(A*48-=%W6j%8
zF3*BcJA@49@$_d35!_NpjR`@Qm)5sP+>|{VeLITXA=vjQr9DKtbSNux`KALgmErWg
zC9qghw(`WRX;HPbRA`U3(}31x1ggo1^ql=y7OJke<^4iM^P;;UEl$bCylOEsW~UIm
z41GGOV%*rcY5Bz82i(otSyFip7N~_i#p<I{m8F!O+yO8MK1czfW>M=o7@x4*=|}MK
z#q52`CLm*6D4hZg=R+2y+p_|&B=A`wJowL7<07NW&`E7aSythEt3ZVtSjuzHA2c01
zQ5w`4FqBE{)ia1`yPe2#!qp*^>r%L%st7H0IoR5ZwpLdVIo*I9t%YF#nnEXYM<OcN
zcHXQ6`Alvm){@c1SJ9Qj`D~;LapN#d&d&WPN59e@>ZE*QIHfJpF@bM2E{Yk#0_9Ai
zM)G^<M0O|+r2pA&LbY}blt;HCp=V;P#&-OVm1Hq?dJNWkHr*2?Xoa2UNoowLceeSQ
z5}IB;@jcQ~%;<7Tk^S6WewHXoy%TM6PKtrcZ~V{doI=DU#%JRF-{gdkM`I)v_6#Va
zgpRn>)r}xVoJx6La7%pAgYAGb+%0}I3^g&g*s)`h`n8yjCclah8k)62;2Ci-t@Yd3
z%(4LacQu3B`{+lyD`gwo3)piw?+>dqVJw_ZVd0*%gjn807`;ZbBV{{zt{4My-+K&m
zAlDXK1q=@{Z7YLO9gO9SKC;=Z$J)tL7$IQ<1$j0p5b%)QN82JmH|<)-<nPO3;cfZf
z^s)zGAzGMY80sUwL8qZWS0g6#szt0uxaK&q%O|RDa$^v&2rop3=Zy(M&&c9qIb0Ir
zRRmTY3<>vR?{nWLxn{E-w1NXB2E=(yykbQ?i7T2iJ%&!pE66ty6Go&EflMg&e6xla
zJw#!8F4J;%Dl;T%wDYRf#xmujd|TSda6473y3WcNH#^!)Jf|`!%6c7Im-5ClwNSa{
zAsI<OkZUaTxVWI5W)?vsN$cnR;#KJ5ftPAe^l_8jna!C^Lnzm;^@raqudt&L80%Zq
z0$`y@<#W38sr$UJsUgQreseIMP%5D--YD5h>TI3}COTQC-%zX5&dG2N0GQj44Kf6?
zCln2_miSVs{(@?=Mbc5YMwfQFGKr;y!-W)9;I9=H7Q>_TFpUbu2jN-Qj&Luq3pI6a
zZgd06Cd2|dG#sUjy;ky8i_g9d+~LO?Zl<Pjq_KRDlq-}6oCyO@{2Em~hlQi;S_qg}
zKh&eMSGK*cU&Ia;I)1l6Q2I8bh7H<z1d{wftn^`AQc=AwhdnDoDscm^6esDv;MY6b
z@yV!g7|!@3xewQsWNCb{pP>LuWZDB7Au$eH*^of<2I#2d7W|oRfUSuQ`mi7ur{c)~
zYCh%~KJ%coF9Y7#xNcf2c^^S&|LcQ+SuedJOur&Fn~FN6#<waCHnhMXE%9#@s)__^
z7_9Io#2QmVD@)-vDGy~ZfQDkkAmw{{^IOw+Oro}T8E|hUE>d+jmo%5AhJG(Dv4R89
zBwH*R>(B}r?26NVSM4$IhB||P)RokN9oy);OZ|$yI46CeMBEmx<87C?Z7|iTy`YHL
zQQj2dGx15CXHQ^DTY7)7Iel*{ovB3D)lW2DyiWm}v1<3-bHX6mouvb>q?CGlI~pJn
zMbqQ2-mpxtx2LDFBgwx~k9d^9P&cp?t|5f3=|j(G!2DTU63$>@?^`OR-TfH^J56V^
z-{ILbvONPm;K5v#$3j&G=kWX4do9ZT`u#c`tCS!PMIq)yRGu|YXd#NTqN~$1y=qE<
z>b|WE>Jne^NJ3*tS{Z)QPV{3Af3UrBJofHNi~R7HU^7iKoQ&a7!*J%kiy76xU?~oY
z(-Qb^oA9|218ZMb0&ljfsGnSckmIzz!9rE!04J=v#n~!F?<n?<BNrG_7=r{KFICBc
z(}2}fdqhgi1*s4<K%mfbq2F(4OOkejivDu~eP6XNbo?go4V%pTd}ggv)ddW^TY*_d
z(AF0OHJEj*pA}P<N!cJSg|EsK^70GbGp+Tg<YGh+3Iyf$Nk1W%-7y~ut<E(9GGNdt
zD$I`+wYU(_{Nx9vK*q`x8RNJHekOKnu!7Vn8wj>pAsQ3$ilUyQy)Z0ui<Bi4!GpOY
z;164k0x2OReY&r3FdnI>FQVTOuxqqEY8~y-I`I1zO<CK{mLen2mO`B$CZodan-}uR
z>8(>!siV!%HL?&6ZbfQdToTVmgs6AqMC2Mc$ppF4*wO+sTLZ+LI*&vWaV-yZI0VQR
zj0h+v)&w}Fz|G}}@|`~X+nhAxOYDiXTDUvuVXUnC2#avvVl20uXh+`BMZ5JNH_c>B
zS{MI?A@b2;4RqPeeMa25gZPB;xg5+z1=bVBvQ4!K><HbFn7%6Z$&veg!hpSm8>b3<
zJ_dGq>O=zas@Vje&|jyN6vR-ww&2fW<7U^@_@V6$&U2EW_&(_SJm~bqJ7@x_dQYW~
zs8BB;joza`$T4av1!(j?0Gi8Y!f;lI9()RUdq#;h4V=^;z%7_f!N}P5D?=LQ@<)YU
zZ){Tm*{JePtkB8c7y`c1=+XAZNGHlx-$ZkNuZy03vu$F{wkF$+XCwsmN=Syie%`AP
zqY%@Cy;UI%Oy<!8+}xOfTal(aamX4u6R95MR<M<KnUY2os=Y5k8p5c*9sZIM;xKo*
zf~5X|CElQSJ_98$R!ij9P5dI;+XFw|c*<^}MnQw$3hvasLrpgBzKbCj=twQUdoc!a
z#v|=x%u0_fQ)K&1>sd<Rs@8@SHpO%+m>O09+;Vy8lm*uE5oFx-LV6CitN_hOWql_6
zK@Zt_1j8=F?BJ=gYA$&6iSnghb^<=b7wrM5q(Ld>gBWam@;obt*@ae(%5-z2-}oms
zJ~6|hD2T2S5a%pG_pult<MMgzR22I^fXk4-)69u-r5zXK=#uDX*#pQN*OXuZTTUsd
z8BEDOKk_`ofs5*&Md6-!#$~KB#cAsw<j`(J3G|&-Tj$O`pETfexQ8NyYG10~(Y1Yi
zaE%lTL6O~{Vz+f}FOg74W7;bv3X_lSPGH27hgO4tiK?pkl;ynkZkkwtC2ALHDL`)V
z4F?LF!gt6wS6`FkCiLf3Bwl<3cw2~;TD4-n@7{=g?Uc|sg!_maI*=!fcJZ}5N|uR%
z_GPX>t9r5_^AdE3@W9j`_{B~YSc|k-QlhaYq$zI2xwk*z61jHDVV4X3rb48%L74-T
ztyz*A%5z~9po<_>(qk$iRph|3$`j77=;Ag3zU8T>xnEW@y5n|SUgpCgT(RxX$(Lr~
zCFVEj%#jgU&JjgsZ=1h>Umu4$YZ<aWPJsikV0ka(qM8{mKzo8pKgN(Y6uFVtg1dKY
zeiX7ErKPOS4g16xNy+rkgd8T{tonM@n`TX&X5n#gM$t)ccyHPb2ggw|?o+Sr_zq(0
z2Y1Z>f;uhwZupUL+`C{njkdqA8J0KYj*kkyJ)>Q#XC3ZMj#M<JiwAtNBIBIzfxVfD
z%~n1R+=<p4tk2GQ%sG8A=Lff5NHO^M{A3D*rp_TUX5Q6c$S=q^=I5Ta7HX%t$vWhv
z)P>Z)5h{thuz25Lc+A*uMpSjcG}zN%i(8gMcjRqpa_cHy;C_aLHhs^x((?zHt=4Mp
z-DKcL@Idd&9QDr&wGDfz)Z4mR3i9O$zd`j^+o1md13nw&dJTG*aF!<h$gYt7iINHW
zc2$#R^<mYetZ$d1s@a|tA$5;GZaj)U&ztt%&_$w94$D<`7Y`n)NgXCQ^P=!~z%sil
z(bS8l8qR#BFKjf4wM@A8*LKSh_F~N;_J{uLpP?cDBMA@o@G$aQg*k>1GXV%dd%VyU
zM^6L)0L4K_K<&ri>6IHjxneZiUpe$RKyN5V+e0;97k1;Yw^QCRiGh(rodiw6_mtF&
zC2A^HQ~uIr$!_n7{{U-Ie8unHp#V+PYi+rl7F~}NU3O(RHVJ+ylaY8Pzyso$FWZL?
zOiZ%0<d6|GXwE=lrX(Gy6ImFVH*DvMfu0PPY?5G`TD2O6HFf8)=JQCdp_G1VI`TjP
zgpF^%Hl~6F?oPJf&q_HfZ$j_fQzif=s3K{jS31xo4>8YRJJV#!D2@pv*7MSgTq7~^
zU7e!z{ZFu^&fRc#*^c)5Qs_ZU3KBz6KI+6E*^wQ@!I&fnj*&@n8Qmwd{?RTzVFtss
z$t^=Ws55EyTD~ZfY$N#Smoq>lP8vw0sz|oudC;q~K3RO`+i;{Ije7~UuQ<q57zi&g
z-%i*l3L=tY5F=vZqW)p}a4;hQbl%g_PV;v`4d=o1R3L{>H~W880Wekt2UgPUr4uIe
zNbsL1Ynyzr(|3`Md7JbDHIr~a`?U}t6eQZkSM6$sLC)5xAvbhsHkwGxKD6*rtsqP+
zF)iFw0LB_6yQto|R!F<$ZuHYg$kNmbSV3;nOAOO^+G1wjDo{l?#M=APX_Om;n0I@n
zCTV89&p1qcLJ5ht)##)chalg5QuJSSsL||RJ-Sh`^CZySZ%h~%=&&y0)dmv_&`8mN
z+Q@K81j=~r&sNT$zykMPYrI;3v%?l8KBl*#m=;#(5+_6^8eMoI;jRx!#K(G^Pr*gb
z=A-YT0wJM|@J}TqU7GoAMuM3R43W@u(xIVkAJTyU6>Vy@SO;Q@J?%uODew1RvlpS<
z09jmnGrTmQQXnLhgmI#XtSPL?Hou0G$PfWUi20f;JznMYOV_|9@<-{bJz#7SFC5^w
z7>flpcpYgJu>#DiqB%Oy(~UtvlW6#<RJpum4}W*3^(;(-Xge{40_hlKx_OG0pb_1f
zzoh8B7|B1jBZP`mIan4Z;&fz))TECza8Y;|1%N7QaGr_@4wWG^ii*`S%xcjcKxD{X
zEu|_CQ2j#J=9N4NFqaZqx=kZ)5=GWz?^0|S0S$y7_N=04kRsk%gF_P=V)FAh;-f(d
z64U-0O)f;qSlzzOF;0V0hCsCVrM2B9?=$z-f{Q|Q(np6{B}NNGXyO<Fhz)#=sJeLW
z2Fpc@4e4{yLaJU}w5iky2J64q;F+RD2lqavj;4cLp&zWXfHx5|-KCA#V@eu97T0-N
z)|`ez2BwgR0jkoa>k{EH;Q6G@(y%e-9>>M4y5CP1tISw27c7l6dI8NX@BaV>uH%Mq
zUnMNWrd&r@rKL$7H4S;0ei*s}I8^PdPd=$6xizDBXHwFh@Xa+iI5~`CBvBwTCgm#I
zU<SvXOSGDu0SK1g0jx@%SU;NEp#}c{XSx{)@+xWCqE!M2{{S7Powi_3^nccKI+179
zOOOeyYYifEFFu{8$-l!y9pZ>-Yex`Jqa=yNKuLs(M-xaW14iyKCVNnUH=A!3^+~U+
zBHJgIS7^2Zlsc1b*XQ+yl@vDtr*FYAFxwz`iwn4b^AjFwH<s^+bk_I^lvSR`++fh8
zx~K=uItFd(-M2AA5QN+V0R+buvFo7aASly`hkr_BZbItcetJo8j5|AdkD`>=YqL5D
z9L5O<W;rkXQ26O8a+M-%S}3tKk&x_db82n_;RX4ck@2#84n5KVM3Eh%o|6F@@JIU8
z`n1LD9ev;5LUG?KiBZssi?w+W+MgmIAw119Q8RF|eQMCMAs}r|&4=D7OFK;f14$1i
z$BH2DR-m~!?P`njBof5JhVyPJ?n2BOA#^A}BPAJQEK?2b<bGb7oiPYV;wfTO+}RHE
zqOYPuh-PKkV3lp+h)~K(!565l$p!Si+k7;{5o@-KU*iV0Fgx$R7n%wv{RAIWY9u0<
zH8zW5pyVkf*73FZt90|Emj!M|-4tj;1B5NLXaNLoCsfB=V<D0%DCKP!_U59Dn>HRt
z`)g1~L|uu|^iaoUB}yUNLX&Nz_d9rK@+=dm)NB^=Tg~p?fgfH7ZE4fgR>JHQ91R~-
zq@V`tc{o0C-#hw0C{OA-jtUW%EPHM>2xW^xO#4}&lz~@@a%2hhCM!mj1N>`*R8(Tg
z2Rfg*qFex$F4P4g0MPvyc2>-k-h{pYSafCY*w+d40MHJ%{wR5igHh2Rco1C#wn#s9
z5^CwJ4x`gCj2v`l%aNpD`VRi%H69vu&Xhb0h3p`7H2(li6qpdyI;<}6O(<o(A<8wO
zTu~*&PsEgYoJ@Dd#{z8|Pjjl9(i*}nOxr`L^+EJtWuDO?LQ%4sfXoh;?L-0?UCADX
zQbx_6LrnC8AmU%+5U+rhIrB$^r+Xly=?1RYTilnygr`934(}B18bea-{{XkZU!;JL
z68``(uX<rdE|CEs!6N?vIYJEXUGUqi;f)9>=74vm5-TRsmus~@4}u&WjjHgq2FAAe
z!QkL(D}5>_Is!}FO<e*)Nb~`KM^UNPE!>sl8b&Mt1)eR$Q)@CsuhBt+0lM1M1Y{la
z)}tT<Ng54kJg7oF-mLm$Lc){o2i^^dyHde73J8*j0RvXFhKVX*FS)1A2Fb=~2J|u{
z0;?8_=^Ry;vBHp&MYlcB2BZmG4H@o6Xz4vE&wQ}eK-kQX5Sqtya#02xhUU0!m@=9W
zkt*-Wl^+R$n+?-|J(^Ge2n~v!RzU*pNByqT%n*sr5CvNSyzxq&=UhMH-rVsyB(&@!
zXVX)9vn2xho!hrHic+j!u}j%ctU{d)=xA+(!`%<n>HDB0?pO~H`=kS8cc5k_P0)#t
zlk%f0T-DW~bOO?OyO@yPOGo4HPbE3U0cL3f#c%-iZM*SG%k2bxVHsx$uHal;CX}O%
zK$A0;&?sbz0x!Zdr2>E|!D5Q`Zhbtz<a8$>;1C4zGBkslvE8yxCQmd5lV~Ozi(hXP
z053vNCH+KG07`?*(UYP*rGxAZD)~fE5V+z8e-vm!;=ot+CY#a=YfUL`HF=>lK!HBw
zZBn<QTPK}G5Egi_w1`MJo{pb{*K5EAZ$^Kw7zWsBao~TuQ%mmYG?D%0j3T0egdw<X
ze-_Ak08QOpzL5FAl0X2kq@NJJgCtaCjDrJ0H8xKa0e)4Lh*N73t4KOTK^|706aix0
zg7@7ObdVa|gmV;Y1(YrwMxiJIe8jpY3VX>RAdv(!{wcKgp#|U^9hxb2NQC&O1JDNW
z^FHW2#1I4j0Kln39M$0j+-WzxDL@2G&aCv~13b`0)A~O}dFUZC3A(rQPQf7P9U$@2
zVZd_ua!hG$s`6hTKdN!iK|6sM`C^h5+$dqTGnR5|aEU|dqd_xq{ZwHLmp$ADwvnm>
zd80R-Dr8b(f<}RJ{{XEX-C@7#^ng{l674@#8%BXj8Hp%7q$ncrmTwO=3Y~4R+8@1W
z3C1E1Qg6*PD#A0|gzA*X7Ii321SSH#jq}AdAA+APmqgTfz5b~P3f;GB=M3{Zx?*~2
z5pf(#{H{@s78A2C?WdApJfG%|?o2TD)ab}<b&y`KM5>I7*iYa>`mh&H0=c3yx&@wS
zpyn2~u84`fF`C~5aDOx+z^*q$3M7dE2xMV0C=%GBhSG@>wp-yf>!UR^=2$|6Bz)1n
z7$^%q4K8P6<kslKtbCbgGHZ9;!7r#XpGXtj7w>k94X_#huLS_<T~8PFX0HTKn7`3S
zT4*4wmDj~IIYD5a#|ASgkg|SBhrK$Ei-ZY#YOP)e5biJTYH*r#hKBwf3Dd?iQ;^BN
zP3vxi)NdzEHrFdtKnYdxMxPs6-S28vLW5D8uiZ~b4m{1q)ZkG_?FxSx0{BxnSf4Q9
z7f6d>8~sIEsV8`A9^>PuIB!S_uoSq6w!bp|DH>+&KRJkV5m7y@&h-!d#6!7$F%l63
zvvF~|w~9(33|~Cv+oh#VX--lRpLs#Eol7)*q~om^#czaUdb#A%bsm=xOn|Ph6hH==
zfkTg+7`Fg$ebJBwfGr(pOr*MrDgJsQST^@iUH5E;NX5j@wrIjBi~<5)G71P}-9h}&
z6|NR<-P=6pRrCw2wtf9kO^pB&v&2%9TXNsa{{S$IXR0DfJPn#=_%3m7fE-I+=!o+R
zUh+mUkj8VyX{o1u{vb8B2nfVUy3=^mdz8#clmNh-H|b3e;mUR2`k=4LBl@PAyC2-W
z8Cr^P-z;Qyi6ZD;)TpI&*85X&T?luHr4iQ$(qHbo*q1-GA`?qQHIKO?$YM>%fNIUD
z_;h{ZAMMvHXV$0iW>S;4aet520RYvCPbkYX9jKIp0N~p!VEzPUjIoh(UPe!t#wu<)
z2JjOi!&sdKPRPw8wXKAZ458$oL{w9W5J6i8@#5KvjPFKjYSj-(Aua;mU9fbnlrL!W
z6hJ{!j@=gt$vLM9!g5VdLuv~@1hlWG^;Q)OG3=CDlD1_xn}4mA?}P&kK|Z&u36wXX
z*ZDH<T2X{zV)S;Wz!DQNf4d&=VNN<Qn|Z%%T!-bxJLh(Y@yN)Zsi-2VPUiZ!kCsr7
z096vLk2MwaK|ANdFHK?xc5UB-A6W03Y<H=t&lKGxE^008CjvF>=r8{O6lC86@gKn2
zj1+>(5*fF}UhqJ?_h%p=%cOi#twM4<z4$8bd@O)Lu9|dAlhNNKKT4Wu#VxiZO}2*9
z@k^H(CWGYZPerNAJt@lc7_BJX34_fr>9i5`cK+xD0Ej!QS1jW>bb7IYWTXiTkl*T^
z!o?nBZudk10^tJq%^4>HsUMFss3Qzi0QQ(&^O|X>=xv^Ho`d;M<vAQ<BxN#1Mt7wd
z+=f`{ZIGzym`!h<DnIgKpT~bN{8;G55%`mam}{8H86u*#%6=aCo}6TV4se{MP7|Nk
zQhz#doF_cfj+x91+vC1woD92EW4}T=4^n>v-{Z}D$bJldY-K7iF)=btO-)WEPD2>$
zIS!-vGx+g?M@N6faNqI$X0>b6nws9H390<({CLYaO;1_N>mm5><i=^vfB2G&-t$dO
pPv`Id0E0MhoXZ(w{{SW^#yVSM;|?o&aB*@Kz8n7l;F(Xv|JgQ>t_lDE

literal 0
HcmV?d00001

-- 
2.25.1


From 5c5f741db563876d5b5902886ed379e00808e0c6 Mon Sep 17 00:00:00 2001
From: zw1st <144824777+zw1st@users.noreply.github.com>
Date: Wed, 18 Dec 2024 12:55:50 +0400
Subject: [PATCH 2/2] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?=
 =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?=
 =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ProjectTourismCompany/Entities/Company.cs | 10 +--
 .../ProjectTourismCompany/Entities/Trip.cs    | 11 +++-
 .../FormTourismCompany.cs                     |  1 +
 .../Forms/FormChecks.Designer.cs              |  1 +
 .../Forms/FormClients.Designer.cs             |  1 +
 .../Forms/FormCompanies.Designer.cs           |  1 +
 .../Forms/FormCompany.Designer.cs             | 57 +----------------
 .../Forms/FormCompany.cs                      | 26 +-------
 .../Forms/FormCompany.resx                    |  6 --
 .../Forms/FormCountries.Designer.cs           |  6 +-
 .../Forms/FormCountries.cs                    |  3 +-
 .../Forms/FormTrip.Designer.cs                | 64 ++++++++++++++++++-
 .../ProjectTourismCompany/Forms/FormTrip.cs   | 29 +++++++--
 .../ProjectTourismCompany/Forms/FormTrip.resx |  6 ++
 .../Forms/FormTrips.Designer.cs               |  6 +-
 .../ProjectTourismCompany/Forms/FormTrips.cs  |  3 +-
 .../Implementations/CompanyRepository.cs      |  2 +-
 .../Implementations/TripRepository.cs         |  2 +-
 18 files changed, 126 insertions(+), 109 deletions(-)

diff --git a/ProjectTourismCompany/ProjectTourismCompany/Entities/Company.cs b/ProjectTourismCompany/ProjectTourismCompany/Entities/Company.cs
index 36853b0..1b5e39d 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Entities/Company.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Entities/Company.cs
@@ -11,14 +11,10 @@ public class Company
     public int Id { get; private set; }
     public string Name { get; private set; } = string.Empty;
     public int CountryId { get; private set; }
-    public IEnumerable<CompanyTrip> CompanyTrip
-    {
-        get;
-        private set;
-    } = [];
 
-    public static Company CreateCompany(int id, string name, int countryId, IEnumerable<CompanyTrip> companyTrip)
+
+    public static Company CreateCompany(int id, string name, int countryId)
     {
-        return new Company() { Id = id, Name = name, CountryId = countryId, CompanyTrip = companyTrip };
+        return new Company() { Id = id, Name = name, CountryId = countryId};
     }
 }
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Entities/Trip.cs b/ProjectTourismCompany/ProjectTourismCompany/Entities/Trip.cs
index 1442654..e0d65ad 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Entities/Trip.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Entities/Trip.cs
@@ -19,8 +19,14 @@ public class Trip
     public string EndCity { get; private set;} =string.Empty;
     public int CompanyId {  get; private set; }
     public TravelType TravelType { get; private set; }
-    
-    public static Trip CreateOpeartion(int id, string title, int price, int humanCapacity, DateTime startDate, DateTime endDate, string startCity, string endCity, TravelType travelType)
+
+    public IEnumerable<CompanyTrip> CompanyTrip
+    {
+        get;
+        private set;
+    } = [];
+
+    public static Trip CreateOpeartion(int id, string title, int price, int humanCapacity, DateTime startDate, DateTime endDate, string startCity, string endCity, TravelType travelType, IEnumerable<CompanyTrip> companyTrip)
     {
         return new Trip
         {
@@ -33,6 +39,7 @@ public class Trip
             StartCity = startCity,
             EndCity = endCity,
             TravelType = travelType,
+            CompanyTrip = companyTrip
         };
     }
 }
diff --git a/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.cs b/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.cs
index 57e8988..f199ce5 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/FormTourismCompany.cs
@@ -83,5 +83,6 @@ public partial class FormTourismCompany : Form
             MessageBox.Show(ex.Message, "������ ��� ��������",
             MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
+        
     }
 }
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.Designer.cs
index 4979bab..711e716 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.Designer.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormChecks.Designer.cs
@@ -96,6 +96,7 @@
             Controls.Add(dataGridViewChecks);
             Name = "FormChecks";
             Text = "Чеки";
+            Load += FormChecks_Load;
             ((System.ComponentModel.ISupportInitialize)dataGridViewChecks).EndInit();
             panel1.ResumeLayout(false);
             ResumeLayout(false);
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.Designer.cs
index 2f4f961..94cc393 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.Designer.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormClients.Designer.cs
@@ -106,6 +106,7 @@
             Name = "FormClients";
             StartPosition = FormStartPosition.CenterParent;
             Text = "Клиенты";
+            Load += FormClients_Load;
             panel1.ResumeLayout(false);
             ((System.ComponentModel.ISupportInitialize)dataGridViewClient).EndInit();
             ResumeLayout(false);
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.Designer.cs
index 903e133..adf58b3 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.Designer.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompanies.Designer.cs
@@ -110,6 +110,7 @@
             Name = "FormCompanies";
             StartPosition = FormStartPosition.CenterParent;
             Text = "Компании";
+            Load += FormCompanies_Load;
             ((System.ComponentModel.ISupportInitialize)dataGridViewCompanies).EndInit();
             panel1.ResumeLayout(false);
             ResumeLayout(false);
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.Designer.cs
index a44dd5a..9e7d532 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.Designer.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.Designer.cs
@@ -32,14 +32,8 @@
             textBoxName = new TextBox();
             buttonCancel = new Button();
             buttonSave = new Button();
-            groupBox1 = new GroupBox();
-            dataGridView1 = new DataGridView();
-            ColumnTitle = new DataGridViewComboBoxColumn();
-            ColumnAdditionalPrice = new DataGridViewButtonColumn();
             comboBoxCountry = new ComboBox();
             label2 = new Label();
-            groupBox1.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
             SuspendLayout();
             // 
             // label1
@@ -62,7 +56,7 @@
             // 
             buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
             buttonCancel.BackColor = Color.IndianRed;
-            buttonCancel.Location = new Point(305, 318);
+            buttonCancel.Location = new Point(17, 117);
             buttonCancel.Name = "buttonCancel";
             buttonCancel.Size = new Size(135, 51);
             buttonCancel.TabIndex = 17;
@@ -74,7 +68,7 @@
             // 
             buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
             buttonSave.BackColor = Color.LimeGreen;
-            buttonSave.Location = new Point(446, 318);
+            buttonSave.Location = new Point(158, 117);
             buttonSave.Name = "buttonSave";
             buttonSave.Size = new Size(135, 51);
             buttonSave.TabIndex = 16;
@@ -82,44 +76,6 @@
             buttonSave.UseVisualStyleBackColor = false;
             buttonSave.Click += ButtonSave_Click;
             // 
-            // groupBox1
-            // 
-            groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
-            groupBox1.Controls.Add(dataGridView1);
-            groupBox1.Location = new Point(283, 6);
-            groupBox1.Name = "groupBox1";
-            groupBox1.Size = new Size(298, 306);
-            groupBox1.TabIndex = 19;
-            groupBox1.TabStop = false;
-            groupBox1.Text = "groupBox1";
-            // 
-            // dataGridView1
-            // 
-            dataGridView1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
-            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
-            dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-            dataGridView1.Columns.AddRange(new DataGridViewColumn[] { ColumnTitle, ColumnAdditionalPrice });
-            dataGridView1.Location = new Point(3, 23);
-            dataGridView1.MultiSelect = false;
-            dataGridView1.Name = "dataGridView1";
-            dataGridView1.RowHeadersVisible = false;
-            dataGridView1.RowHeadersWidth = 51;
-            dataGridView1.Size = new Size(292, 280);
-            dataGridView1.TabIndex = 0;
-            // 
-            // ColumnTitle
-            // 
-            ColumnTitle.HeaderText = "Название путевки";
-            ColumnTitle.MinimumWidth = 6;
-            ColumnTitle.Name = "ColumnTitle";
-            // 
-            // ColumnAdditionalPrice
-            // 
-            ColumnAdditionalPrice.HeaderText = "Надбавка фирмы";
-            ColumnAdditionalPrice.MinimumWidth = 6;
-            ColumnAdditionalPrice.Name = "ColumnAdditionalPrice";
-            ColumnAdditionalPrice.Resizable = DataGridViewTriState.True;
-            // 
             // comboBoxCountry
             // 
             comboBoxCountry.FormattingEnabled = true;
@@ -141,10 +97,9 @@
             // 
             AutoScaleDimensions = new SizeF(8F, 20F);
             AutoScaleMode = AutoScaleMode.Font;
-            ClientSize = new Size(593, 381);
+            ClientSize = new Size(305, 180);
             Controls.Add(label2);
             Controls.Add(comboBoxCountry);
-            Controls.Add(groupBox1);
             Controls.Add(buttonCancel);
             Controls.Add(buttonSave);
             Controls.Add(textBoxName);
@@ -152,8 +107,6 @@
             Name = "FormCompany";
             StartPosition = FormStartPosition.CenterParent;
             Text = "Компания";
-            groupBox1.ResumeLayout(false);
-            ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
             ResumeLayout(false);
             PerformLayout();
         }
@@ -164,10 +117,6 @@
         private TextBox textBoxName;
         private Button buttonCancel;
         private Button buttonSave;
-        private GroupBox groupBox1;
-        private DataGridView dataGridView1;
-        private DataGridViewComboBoxColumn ColumnTitle;
-        private DataGridViewButtonColumn ColumnAdditionalPrice;
         private ComboBox comboBoxCountry;
         private Label label2;
     }
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.cs
index d756f51..43ff829 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.cs
@@ -57,10 +57,6 @@ public partial class FormCompany : Form
         comboBoxCountry.DataSource = countryRepository.ReadCountries();
         comboBoxCountry.DisplayMember = "Name";
         comboBoxCountry.ValueMember = "Id";
-        
-        ColumnTitle.DataSource = tripRepository.ReadTrips();
-        ColumnTitle.DisplayMember = "Title";
-        ColumnTitle.ValueMember = "Id";
     }
 
 
@@ -68,12 +64,11 @@ public partial class FormCompany : Form
     {
         try
         {
-            if (dataGridView1.RowCount < 1 ||
-            comboBoxCountry.SelectedIndex < 0)
+            if (string.IsNullOrEmpty(textBoxName.Text))
             {
             throw new Exception("Имеются незаполненные поля");
             }
-            _companyRepository.CreateCompany(Company.CreateCompany(0, textBoxName.Text, (int)comboBoxCountry.SelectedItem!, CreateListCompanyTripFromDataGrid()));
+            _companyRepository.CreateCompany(Company.CreateCompany(0, textBoxName.Text, (int)comboBoxCountry.SelectedItem!));
             Close();
         }
         catch (Exception ex)
@@ -84,20 +79,5 @@ public partial class FormCompany : Form
     }
     private void ButtonCancel_Click(object sender, EventArgs e) =>
     Close();
-    private List<CompanyTrip> CreateListCompanyTripFromDataGrid()
-    {
-        var list = new List<CompanyTrip>();
-        foreach (DataGridViewRow row in dataGridView1.Rows)
-        {
-            if (row.Cells["ColumnAdditionalPrice"].Value == null ||
-            row.Cells["ColumnTitle"].Value == null)
-            {
-                continue;
-            }
-            list.Add(CompanyTrip.CreateCompanyTrip(0, 0,
-            Convert.ToInt32(row.Cells["ColumnTitle"].Value),
-            Convert.ToInt32(row.Cells["ColumnAdditionalPrice"].Value)));
-        }
-        return list;
-    }
+    
 }
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.resx
index 25abefb..af32865 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.resx
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCompany.resx
@@ -117,10 +117,4 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="ColumnTitle.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="ColumnAdditionalPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
 </root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.Designer.cs
index 8d9df93..2b715f3 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.Designer.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.Designer.cs
@@ -45,7 +45,6 @@
             dataGridView1.AllowUserToResizeRows = false;
             dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
             dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-            dataGridView1.ColumnHeadersVisible = false;
             dataGridView1.Dock = DockStyle.Fill;
             dataGridView1.Location = new Point(0, 0);
             dataGridView1.MultiSelect = false;
@@ -53,7 +52,7 @@
             dataGridView1.ReadOnly = true;
             dataGridView1.RowHeadersWidth = 51;
             dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
-            dataGridView1.Size = new Size(800, 450);
+            dataGridView1.Size = new Size(642, 450);
             dataGridView1.TabIndex = 0;
             // 
             // panel1
@@ -105,11 +104,12 @@
             AutoScaleDimensions = new SizeF(8F, 20F);
             AutoScaleMode = AutoScaleMode.Font;
             ClientSize = new Size(800, 450);
-            Controls.Add(panel1);
             Controls.Add(dataGridView1);
+            Controls.Add(panel1);
             Name = "FormCountries";
             StartPosition = FormStartPosition.CenterParent;
             Text = "Страны";
+            Load += FormCountries_Load;
             ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
             panel1.ResumeLayout(false);
             ResumeLayout(false);
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.cs
index 3e6380d..17c828a 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormCountries.cs
@@ -24,9 +24,10 @@ public partial class FormCountries : Form
         InitializeComponent();
         _container = container ?? throw new ArgumentNullException(nameof(container));
         _countryRepository = countryRepository ?? throw new ArgumentNullException(nameof(countryRepository));
+
     }
 
-    private void FormCompanies_Load(object sender, EventArgs e)
+    private void FormCountries_Load(object sender, EventArgs e)
     {
         try
         {
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.Designer.cs
index d2e3da6..4520584 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.Designer.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.Designer.cs
@@ -46,8 +46,14 @@
             buttonSave = new Button();
             label1 = new Label();
             textBoxTitle = new TextBox();
+            groupBox1 = new GroupBox();
+            dataGridView1 = new DataGridView();
+            columnCompanyName = new DataGridViewComboBoxColumn();
+            ColumnAdditionalPrice = new DataGridViewTextBoxColumn();
             ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).BeginInit();
             ((System.ComponentModel.ISupportInitialize)numericUpDownHumanCapacity).BeginInit();
+            groupBox1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
             SuspendLayout();
             // 
             // labelPrice
@@ -172,7 +178,7 @@
             // 
             buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
             buttonCancel.BackColor = Color.IndianRed;
-            buttonCancel.Location = new Point(214, 512);
+            buttonCancel.Location = new Point(605, 512);
             buttonCancel.Name = "buttonCancel";
             buttonCancel.Size = new Size(135, 51);
             buttonCancel.TabIndex = 15;
@@ -184,7 +190,7 @@
             // 
             buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
             buttonSave.BackColor = Color.LimeGreen;
-            buttonSave.Location = new Point(361, 512);
+            buttonSave.Location = new Point(796, 512);
             buttonSave.Name = "buttonSave";
             buttonSave.Size = new Size(135, 51);
             buttonSave.TabIndex = 14;
@@ -208,11 +214,57 @@
             textBoxTitle.Size = new Size(220, 27);
             textBoxTitle.TabIndex = 17;
             // 
+            // groupBox1
+            // 
+            groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+            groupBox1.Controls.Add(dataGridView1);
+            groupBox1.Location = new Point(499, 12);
+            groupBox1.Name = "groupBox1";
+            groupBox1.Size = new Size(432, 476);
+            groupBox1.TabIndex = 20;
+            groupBox1.TabStop = false;
+            groupBox1.Text = "groupBox1";
+            // 
+            // dataGridView1
+            // 
+            dataGridView1.AllowUserToDeleteRows = false;
+            dataGridView1.AllowUserToResizeColumns = false;
+            dataGridView1.AllowUserToResizeRows = false;
+            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+            dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            dataGridView1.Columns.AddRange(new DataGridViewColumn[] { columnCompanyName, ColumnAdditionalPrice });
+            dataGridView1.Dock = DockStyle.Fill;
+            dataGridView1.Location = new Point(3, 23);
+            dataGridView1.MultiSelect = false;
+            dataGridView1.Name = "dataGridView1";
+            dataGridView1.ReadOnly = true;
+            dataGridView1.RowHeadersVisible = false;
+            dataGridView1.RowHeadersWidth = 51;
+            dataGridView1.Size = new Size(426, 450);
+            dataGridView1.TabIndex = 0;
+            // 
+            // columnCompanyName
+            // 
+            columnCompanyName.HeaderText = "Название компании";
+            columnCompanyName.MinimumWidth = 6;
+            columnCompanyName.Name = "columnCompanyName";
+            columnCompanyName.ReadOnly = true;
+            // 
+            // ColumnAdditionalPrice
+            // 
+            ColumnAdditionalPrice.HeaderText = "Добавочная стоимость";
+            ColumnAdditionalPrice.MinimumWidth = 6;
+            ColumnAdditionalPrice.Name = "ColumnAdditionalPrice";
+            ColumnAdditionalPrice.ReadOnly = true;
+            ColumnAdditionalPrice.Resizable = DataGridViewTriState.True;
+            ColumnAdditionalPrice.SortMode = DataGridViewColumnSortMode.NotSortable;
+            // 
             // FormTrip
             // 
             AutoScaleDimensions = new SizeF(8F, 20F);
             AutoScaleMode = AutoScaleMode.Font;
-            ClientSize = new Size(508, 573);
+            ClientSize = new Size(943, 573);
+            Controls.Add(groupBox1);
             Controls.Add(textBoxTitle);
             Controls.Add(label1);
             Controls.Add(buttonCancel);
@@ -236,6 +288,8 @@
             Text = "Туры";
             ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).EndInit();
             ((System.ComponentModel.ISupportInitialize)numericUpDownHumanCapacity).EndInit();
+            groupBox1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
             ResumeLayout(false);
             PerformLayout();
         }
@@ -260,5 +314,9 @@
         private Button buttonSave;
         private Label label1;
         private TextBox textBoxTitle;
+        private GroupBox groupBox1;
+        private DataGridView dataGridView1;
+        private DataGridViewComboBoxColumn columnCompanyName;
+        private DataGridViewTextBoxColumn ColumnAdditionalPrice;
     }
 }
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.cs
index 0735bfe..bde80bd 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.cs
@@ -2,6 +2,7 @@
 using ProjectTourismCompany.Entities;
 using ProjectTourismCompany.Entities.Enums;
 using ProjectTourismCompany.Repositories;
+using ProjectTourismCompany.Repositories.Implementations;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -56,7 +57,7 @@ Enum.GetValues(typeof(TravelType)))
             }
         }
     }
-    public FormTrip(ITripRepository tripRepository)
+    public FormTrip(ITripRepository tripRepository, ICompanyRepository companyRepository)
     {
         InitializeComponent();
         _tripRepository = tripRepository ?? throw new ArgumentNullException(nameof(tripRepository));
@@ -64,14 +65,16 @@ Enum.GetValues(typeof(TravelType)))
         {
             checkedListBoxTravelType.Items.Add(elem);
         }
-
+        columnCompanyName.DataSource = companyRepository.ReadCompanies();
+        columnCompanyName.DisplayMember = "Name";
+        columnCompanyName.ValueMember = "Id";
     }
     private void ButtonSave_Click(object sender, EventArgs e)
     {
         try
         {
             if (string.IsNullOrWhiteSpace(textBoxStartCity.Text) ||
-            string.IsNullOrWhiteSpace(textBoxEndCity.Text))
+            string.IsNullOrWhiteSpace(textBoxEndCity.Text) || dataGridView1.RowCount < 1)
             {
                 throw new Exception("Имеются незаполненные поля");
             }
@@ -105,6 +108,24 @@ Enum.GetValues(typeof(TravelType)))
         }
         return Trip.CreateOpeartion(0, textBoxTitle.Text, (int)numericUpDownPrice.Value,
                 (int)numericUpDownHumanCapacity.Value, dateTimePickerStartDate.Value, dateTimePickerEndDate.Value,
-                textBoxStartCity.Text, textBoxEndCity.Text, tr);
+                textBoxStartCity.Text, textBoxEndCity.Text, tr, CreateListCompanyTripFromDataGrid());
+    }
+
+
+    private List<CompanyTrip> CreateListCompanyTripFromDataGrid()
+    {
+        var list = new List<CompanyTrip>();
+        foreach (DataGridViewRow row in dataGridView1.Rows)
+        {
+            if (row.Cells["ColumnAdditionalPrice"].Value == null ||
+            row.Cells["ColumnCompanyName"].Value == null)
+            {
+                continue;
+            }
+            list.Add(CompanyTrip.CreateCompanyTrip(0, 0,
+            Convert.ToInt32(row.Cells["ColumnCompanyName"].Value),
+            Convert.ToInt32(row.Cells["ColumnAdditionalPrice"].Value)));
+        }
+        return list;
     }
 }
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.resx b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.resx
index af32865..5b6b78e 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.resx
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrip.resx
@@ -117,4 +117,10 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="columnCompanyName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="ColumnAdditionalPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
 </root>
\ No newline at end of file
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.Designer.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.Designer.cs
index f62873e..e57b191 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.Designer.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.Designer.cs
@@ -43,7 +43,6 @@
             dataGridView1.AllowUserToResizeRows = false;
             dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
             dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-            dataGridView1.ColumnHeadersVisible = false;
             dataGridView1.Dock = DockStyle.Fill;
             dataGridView1.Location = new Point(0, 0);
             dataGridView1.MultiSelect = false;
@@ -51,7 +50,7 @@
             dataGridView1.ReadOnly = true;
             dataGridView1.RowHeadersWidth = 51;
             dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
-            dataGridView1.Size = new Size(800, 450);
+            dataGridView1.Size = new Size(645, 450);
             dataGridView1.TabIndex = 0;
             // 
             // panel1
@@ -79,11 +78,12 @@
             AutoScaleDimensions = new SizeF(8F, 20F);
             AutoScaleMode = AutoScaleMode.Font;
             ClientSize = new Size(800, 450);
-            Controls.Add(panel1);
             Controls.Add(dataGridView1);
+            Controls.Add(panel1);
             Name = "FormTrips";
             StartPosition = FormStartPosition.CenterParent;
             Text = "Туры";
+            Load += FormTrips_Load;
             ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
             panel1.ResumeLayout(false);
             ResumeLayout(false);
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.cs b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.cs
index 178adaa..a50652e 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Forms/FormTrips.cs
@@ -28,7 +28,7 @@ public partial class FormTrips : Form
     }
 
 
-    private void FormChecks_Load(object sender, EventArgs e)
+    private void FormTrips_Load(object sender, EventArgs e)
     {
         try
         {
@@ -60,5 +60,6 @@ public partial class FormTrips : Form
 
     private void LoadList() => dataGridView1.DataSource =
     _tripRepository.ReadTrips();
+
 }
 
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CompanyRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CompanyRepository.cs
index 1c7f6c2..42e5d46 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CompanyRepository.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/CompanyRepository.cs
@@ -26,7 +26,7 @@ internal class CompanyRepository : ICompanyRepository
 
     public Company ReadCompanyById(int id)
     {
-        return Company.CreateCompany(1, "randomName", 73, []);
+        return Company.CreateCompany(1, "randomName", 73);
     }
 
     public void UpdateCompany(Company company)
diff --git a/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/TripRepository.cs b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/TripRepository.cs
index 6ec44e3..af0cfd4 100644
--- a/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/TripRepository.cs
+++ b/ProjectTourismCompany/ProjectTourismCompany/Repositories/Implementations/TripRepository.cs
@@ -16,7 +16,7 @@ internal class TripRepository : ITripRepository
 
     public Trip ReadTripById(int id)
     {
-        return Trip.CreateOpeartion(0, "a", 0, 0, DateTime.Now, DateTime.Now, "Moscow", "Piter", Entities.Enums.TravelType.None);
+        return Trip.CreateOpeartion(0, "a", 0, 0, DateTime.Now, DateTime.Now, "Moscow", "Piter", Entities.Enums.TravelType.None, []);
     }
 
     public IEnumerable<Trip> ReadTrips(DateTime? dateForm = null, DateTime? dateTo = null, int? tripId = null, int? companyId = null, int? countryId = null)
-- 
2.25.1