diff --git a/git/JurasicZoo/ZooContracts/BindingModels/RouteBindingModel.cs b/git/JurasicZoo/ZooContracts/BindingModels/RouteBindingModel.cs
index 017f53b..8c3b466 100644
--- a/git/JurasicZoo/ZooContracts/BindingModels/RouteBindingModel.cs
+++ b/git/JurasicZoo/ZooContracts/BindingModels/RouteBindingModel.cs
@@ -14,10 +14,10 @@ namespace ZooContracts.BindingModels
 		public int ClientId { get; set; }
 		public string RouteName { get; set; } = string.Empty;
 		public double RoutePrice { get; set; }
-		public RouteStatus Status { get; set; } = RouteStatus.Неизвестен;
+		public RouteStatus Status { get; set; } = RouteStatus.Неоплачен;
 		public DateTime DateStart { get; set; }
 		public DateTime DateFinish { get; set; }
-		public Dictionary<int, (IPreserveModel, int)> Preserves
+		public Dictionary<int, (IPreserveModel, int)> RoutePreserves
 		{
 			get;
 			set;
diff --git a/git/JurasicZoo/ZooContracts/SearchModels/RouteSearchModel.cs b/git/JurasicZoo/ZooContracts/SearchModels/RouteSearchModel.cs
index abb4ff3..668b57d 100644
--- a/git/JurasicZoo/ZooContracts/SearchModels/RouteSearchModel.cs
+++ b/git/JurasicZoo/ZooContracts/SearchModels/RouteSearchModel.cs
@@ -10,9 +10,10 @@ namespace ZooContracts.SearchModels
 	public class RouteSearchModel
 	{
 		public int? Id { get; set; }
+		public int? ClientId { get; set; }
 		public string? RouteName { get; set; } = string.Empty;
 		public double? RoutePrice { get; set; }
-		public RouteStatus Status { get; set; } = RouteStatus.Неизвестен;
+		public RouteStatus Status { get; set; } = RouteStatus.Неоплачен;
 		public DateTime? DateStart { get; set; }
 		public DateTime? DateFinish { get; set; }
 	}
diff --git a/git/JurasicZoo/ZooContracts/StorageContracts/IClientStorage.cs b/git/JurasicZoo/ZooContracts/StorageContracts/IClientStorage.cs
index 85658e3..1f11a86 100644
--- a/git/JurasicZoo/ZooContracts/StorageContracts/IClientStorage.cs
+++ b/git/JurasicZoo/ZooContracts/StorageContracts/IClientStorage.cs
@@ -14,8 +14,8 @@ namespace ZooContracts.StorageContracts
 		List<ClientViewModel> GetFullList();
 		List<ClientViewModel> GetFilteredList(ClientSearchModel model);
 		ClientViewModel? GetElement(ClientSearchModel model);
-		ClientViewModel? Insert(ClientSearchModel model);
-		ClientViewModel? Update(ClientSearchModel model);
-		ClientViewModel? Delete(ClientSearchModel model);
+		ClientViewModel? Insert(ClientBindingModel model);
+		ClientViewModel? Update(ClientBindingModel model);
+		ClientViewModel? Delete(ClientBindingModel model);
 	}
 }
diff --git a/git/JurasicZoo/ZooContracts/StorageContracts/IRouteStorage.cs b/git/JurasicZoo/ZooContracts/StorageContracts/IRouteStorage.cs
index 4420727..925a0f1 100644
--- a/git/JurasicZoo/ZooContracts/StorageContracts/IRouteStorage.cs
+++ b/git/JurasicZoo/ZooContracts/StorageContracts/IRouteStorage.cs
@@ -14,8 +14,8 @@ namespace ZooContracts.StorageContracts
 		List<RouteViewModel> GetFullList();
 		List<RouteViewModel> GetFilteredList(RouteSearchModel model);
 		RouteViewModel? GetElement(RouteSearchModel model);
-		RouteViewModel? Insert(RouteSearchModel model);
-		RouteViewModel? Update(RouteSearchModel model);
-		RouteViewModel? Delete(RouteSearchModel model);
+		RouteViewModel? Insert(RouteBindingModel model);
+		RouteViewModel? Update(RouteBindingModel model);
+		RouteViewModel? Delete(RouteBindingModel model);
 	}
 }
diff --git a/git/JurasicZoo/ZooContracts/ViewModels/RouteViewModel.cs b/git/JurasicZoo/ZooContracts/ViewModels/RouteViewModel.cs
index 9992e9e..1ab8dbf 100644
--- a/git/JurasicZoo/ZooContracts/ViewModels/RouteViewModel.cs
+++ b/git/JurasicZoo/ZooContracts/ViewModels/RouteViewModel.cs
@@ -12,16 +12,22 @@ namespace ZooContracts.ViewModels
 {
 	public class RouteViewModel
 	{
+		[DisplayName("Номер")]
 		public int Id { get; set; }
+        public int ClientId { get; set; }
+		[DisplayName("ФИО клиента")]
+		public string ClientFIO { get; set; } = string.Empty;
+
 		[DisplayName("Название маршрута")]
 		public string RouteName { get; set; } = string.Empty;
 		[DisplayName("Стоимость маршрута")]
 		public double RoutePrice { get; set; }
 		[DisplayName("Статус")]
-		public RouteStatus Status { get; set; } = RouteStatus.Неизвестен;
+		public RouteStatus Status { get; set; } = RouteStatus.Неоплачен;
 		[DisplayName("Дата начала")]
-		public DateTime DateCreate { get; set; } = DateTime.Now;
+		public DateTime DateStart { get; set; }
 		[DisplayName("Дата окончания")]
+		public DateTime DateFinish { get; set; }
 		public Dictionary<int, (IPreserveModel, int)> Preserves 
 		{
 			get;
diff --git a/git/JurasicZoo/ZooDataBaseImplement/Implements/ClientStorage.cs b/git/JurasicZoo/ZooDataBaseImplement/Implements/ClientStorage.cs
new file mode 100644
index 0000000..4af68ca
--- /dev/null
+++ b/git/JurasicZoo/ZooDataBaseImplement/Implements/ClientStorage.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZooContracts.BindingModels;
+using ZooContracts.SearchModels;
+using ZooContracts.StorageContracts;
+using ZooContracts.ViewModels;
+using ZooDataBaseImplement.Models;
+
+namespace ZooDataBaseImplement.Implements
+{
+	public class ClientStorage : IClientStorage
+	{
+		public List<ClientViewModel> GetFullList()
+		{
+			using var context = new ZooDatabase();
+			return context.Clients.Select(x => x.GetViewModel).ToList();
+		}
+
+		public List<ClientViewModel> GetFilteredList(ClientSearchModel model)
+		{
+			if (string.IsNullOrEmpty(model.ClientFIO))
+			{
+				return new();
+			}
+			using var context = new ZooDatabase();
+			return context.Clients.Where(x => x.ClientFIO.Contains(model.ClientFIO)).Select(x => x.GetViewModel).ToList();
+		}
+
+		public ClientViewModel? GetElement(ClientSearchModel model)
+		{
+			if (string.IsNullOrEmpty(model.Email) && string.IsNullOrEmpty(model.Password) && !model.Id.HasValue)
+			{
+				return null;
+			}
+			using var context = new ZooDatabase();
+			return context.Clients.FirstOrDefault(x =>
+			(!string.IsNullOrEmpty(model.Email) && x.EMail == model.Email && !string.IsNullOrEmpty(model.Password) && x.Password == model.Password) ||
+			(model.Id.HasValue && x.Id == model.Id))
+				?.GetViewModel;
+		}
+
+		public ClientViewModel? Insert(ClientBindingModel model)
+		{
+			var newComponent = Client.Create(model);
+			if (newComponent == null)
+			{
+				return null;
+			}
+			using var context = new ZooDatabase();
+			context.Clients.Add(newComponent);
+			context.SaveChanges();
+			return newComponent.GetViewModel;
+		}
+
+		public ClientViewModel? Update(ClientBindingModel model)
+		{
+			using var context = new ZooDatabase();
+			var component = context.Clients.FirstOrDefault(x => x.Id == model.Id);
+			if (component == null)
+			{
+				return null;
+			}
+			component.Update(model);
+			context.SaveChanges();
+			return component.GetViewModel;
+		}
+
+		public ClientViewModel? Delete(ClientBindingModel model)
+		{
+			using var context = new ZooDatabase();
+			var element = context.Clients.FirstOrDefault(rec => rec.Id == model.Id);
+			if (element != null)
+			{
+				context.Clients.Remove(element);
+				context.SaveChanges();
+				return element.GetViewModel;
+			}
+			return null;
+		}
+	}
+}
diff --git a/git/JurasicZoo/ZooDataBaseImplement/Implements/RouteStorage.cs b/git/JurasicZoo/ZooDataBaseImplement/Implements/RouteStorage.cs
new file mode 100644
index 0000000..8c49ef9
--- /dev/null
+++ b/git/JurasicZoo/ZooDataBaseImplement/Implements/RouteStorage.cs
@@ -0,0 +1,116 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZooContracts.StorageContracts;
+using ZooContracts.ViewModels;
+using Microsoft.EntityFrameworkCore;
+using ZooContracts.SearchModels;
+using ZooContracts.BindingModels;
+using System.Threading.Channels;
+using ZooDataBaseImplement.Models;
+
+namespace ZooDataBaseImplement.Implements
+{
+	public class RouteStorage : IRouteStorage
+	{
+		public List<RouteViewModel> GetFullList()
+		{
+			using var context = new ZooDatabase();
+			return context.Routes
+			 .Include(x => x.Preserves)
+			.ThenInclude(x => x.Preserve)
+			.ToList()
+			.Select(x => x.GetViewModel)
+			.ToList();
+		}
+
+		public List<RouteViewModel> GetFilteredList(RouteSearchModel model)
+		{
+			if (string.IsNullOrEmpty(model.RouteName))
+			{
+				return new();
+			}
+			using var context = new ZooDatabase();
+			return context.Routes
+			 .Include(x => x.Preserves)
+			.ThenInclude(x => x.Preserve)
+			.Where(x => x.RouteName.Contains(model.RouteName))
+			.ToList()
+			.Select(x => x.GetViewModel)
+			.ToList();
+		}
+
+		public RouteViewModel? GetElement(RouteSearchModel model)
+		{
+			if (string.IsNullOrEmpty(model.RouteName) &&
+			!model.Id.HasValue)
+			{
+				return null;
+			}
+			using var context = new ZooDatabase();
+			return context.Routes
+			 .Include(x => x.Preserves)
+			 .ThenInclude(x => x.Preserve)
+			 .FirstOrDefault(x => (!string.IsNullOrEmpty(model.RouteName) &&
+			x.RouteName == model.RouteName) ||
+			(model.Id.HasValue && x.Id ==
+			model.Id))
+			?.GetViewModel;
+		}
+
+		public RouteViewModel? Insert(RouteBindingModel model)
+		{
+			using var context = new ZooDatabase();
+			var newCanned = Route.Create(context, model);
+			if (newCanned == null)
+			{
+				return null;
+			}
+			context.Routes.Add(newCanned);
+			context.SaveChanges();
+			return newCanned.GetViewModel;
+		}
+
+		public RouteViewModel? Update(RouteBindingModel model)
+		{
+			using var context = new ZooDatabase();
+			using var transaction = context.Database.BeginTransaction();
+			try
+			{
+				var route = context.Routes.FirstOrDefault(rec =>
+				rec.Id == model.Id);
+				if (route == null)
+				{
+					return null;
+				}
+				route.Update(model);
+				context.SaveChanges();
+				transaction.Commit();
+				return route.GetViewModel;
+			}
+
+			catch
+			{
+				transaction.Rollback();
+				throw;
+			}
+		}
+
+			public RouteViewModel? Delete(RouteBindingModel model)
+		{
+			using var context = new ZooDatabase();
+			var element = context.Routes
+			.Include(x => x.Preserves)
+			.FirstOrDefault(rec => rec.Id == model.Id);
+			if (element != null)
+			{
+				context.Routes.Remove(element);
+				context.SaveChanges();
+				return element.GetViewModel;
+			}
+			return null;
+		}
+	}
+}
diff --git a/git/JurasicZoo/ZooDataBaseImplement/Models/Preserve.cs b/git/JurasicZoo/ZooDataBaseImplement/Models/Preserve.cs
index 6af4a0b..a051819 100644
--- a/git/JurasicZoo/ZooDataBaseImplement/Models/Preserve.cs
+++ b/git/JurasicZoo/ZooDataBaseImplement/Models/Preserve.cs
@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -17,7 +18,10 @@ namespace ZooDataBaseImplement.Models
         public string PreserveName { get; set; } = string.Empty;
         [Required]
         public double PreservePrice { get; set; }
-        public static Preserve? Create(PreserveBindingModel model)
+		[ForeignKey("PreserveId")]
+		public virtual List<RoutePreserve> RoutePreserves{ get; set; } =
+	   new();
+		public static Preserve? Create(PreserveBindingModel model)
         {
             if (model == null)
             {
diff --git a/git/JurasicZoo/ZooDataBaseImplement/Models/Route.cs b/git/JurasicZoo/ZooDataBaseImplement/Models/Route.cs
index d350638..7a94946 100644
--- a/git/JurasicZoo/ZooDataBaseImplement/Models/Route.cs
+++ b/git/JurasicZoo/ZooDataBaseImplement/Models/Route.cs
@@ -19,9 +19,9 @@ namespace ZooDataBaseImplement.Models
 		[Required]
 		public double RoutePrice { get; set; }
 		[Required]
-		public RouteStatus Status { get; private set; } = RouteStatus.Неизвестен;
+		public RouteStatus Status { get; private set; } = RouteStatus.Неоплачен;
 		public DateTime DateStart { get; private set; }
-		public DateTime? DateFinish { get; private set; }
+		public DateTime DateFinish { get; private set; }
 
 		private Dictionary<int, (IPreserveModel, int)>? _routepreserves =
 	   null;
@@ -41,6 +41,7 @@ namespace ZooDataBaseImplement.Models
 		}
 		[ForeignKey("PreserveID")]
 		public virtual List<RoutePreserve> Preserves { get; set; } = new();
+
 		public static Route Create(ZooDatabase context, RouteBindingModel model)
 		{
 			return new Route()
@@ -48,19 +49,39 @@ namespace ZooDataBaseImplement.Models
 				Id = model.Id,
 				ClientId = model.ClientId,
 				Client = context.Clients.First(x => x.Id == model.ClientId),
-
+				RouteName = model.RouteName,
+				RoutePrice = model.RoutePrice,
+				Status = model.Status,
+				DateStart = model.DateStart,
+				DateFinish = model.DateFinish,
+				Preserves = model.RoutePreserves.Select(x => new RoutePreserve
+				{
+					Preserve = context.Preserves.First(y => y.Id == x.Key),
+					Count = x.Value.Item2
+				}).ToList()
 			};
 		}
-		public void Update(PreserveBindingModel model)
+		public void Update(RouteBindingModel model)
 		{
 			if (model == null)
 			{
 				return;
 			}
+			Status = model.Status;
+			DateStart = model.DateStart;
+			DateFinish = model.DateFinish;
 
 		}
-		public PreserveViewModel GetViewModel => new()
+		public RouteViewModel GetViewModel => new()
 		{
+			Id = Id,
+			ClientId = ClientId,
+			ClientFIO = Client.ClientFIO,
+			RouteName = RouteName,
+			RoutePrice = RoutePrice,
+			Status = Status,
+			DateStart= DateStart,
+			DateFinish=DateFinish,
 		};
 	}
 }
diff --git a/git/JurasicZoo/ZooDataModels/Enums/RouteStatus.cs b/git/JurasicZoo/ZooDataModels/Enums/RouteStatus.cs
index dd50ba2..12a1c95 100644
--- a/git/JurasicZoo/ZooDataModels/Enums/RouteStatus.cs
+++ b/git/JurasicZoo/ZooDataModels/Enums/RouteStatus.cs
@@ -8,8 +8,8 @@ namespace ZooDataModels.Enums
 {
 	public enum RouteStatus
 	{
-		Неизвестен = -1,
-		Принят = 0,
-		Завершен =1
+		Неоплачен = -1,
+		Неполностью = 0,
+		Оплачен = 1
 	}
 }
diff --git a/git/JurasicZoo/ZooDataModels/Models/IRouteModel.cs b/git/JurasicZoo/ZooDataModels/Models/IRouteModel.cs
index 69435e9..5bc8d7f 100644
--- a/git/JurasicZoo/ZooDataModels/Models/IRouteModel.cs
+++ b/git/JurasicZoo/ZooDataModels/Models/IRouteModel.cs
@@ -15,6 +15,6 @@ namespace ZooDataModels.Models
 		RouteStatus Status { get; }
 		DateTime DateStart { get; }
 		DateTime DateFinish { get; }
-		Dictionary<int, (IPreserveModel, int)> Preserves{ get; }
+		Dictionary<int, (IPreserveModel, int)> RoutePreserves{ get; }
 	}
 }