diff --git a/RouteGuide/RouteGuide.sln b/RouteGuide/RouteGuide.sln index 1ab89a4..c9aaa6c 100644 --- a/RouteGuide/RouteGuide.sln +++ b/RouteGuide/RouteGuide.sln @@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RouteGuideView", "RouteGuid EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RouteGuideDataModels", "RouteGuideDataModels\RouteGuideDataModels.csproj", "{734B62E6-F4F0-4356-A4BC-067F52416282}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RouteGuideContracts", "RouteGuideContracts\RouteGuideContracts.csproj", "{895094AD-E3AC-4E1F-83DC-283E65EB072F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -21,6 +23,10 @@ Global {734B62E6-F4F0-4356-A4BC-067F52416282}.Debug|Any CPU.Build.0 = Debug|Any CPU {734B62E6-F4F0-4356-A4BC-067F52416282}.Release|Any CPU.ActiveCfg = Release|Any CPU {734B62E6-F4F0-4356-A4BC-067F52416282}.Release|Any CPU.Build.0 = Release|Any CPU + {895094AD-E3AC-4E1F-83DC-283E65EB072F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {895094AD-E3AC-4E1F-83DC-283E65EB072F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {895094AD-E3AC-4E1F-83DC-283E65EB072F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {895094AD-E3AC-4E1F-83DC-283E65EB072F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/RouteGuide/RouteGuideContracts/BindingModels/DriverBindingModel.cs b/RouteGuide/RouteGuideContracts/BindingModels/DriverBindingModel.cs new file mode 100644 index 0000000..fbc78ce --- /dev/null +++ b/RouteGuide/RouteGuideContracts/BindingModels/DriverBindingModel.cs @@ -0,0 +1,36 @@ +using RouteGuideDataModels.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.BindingModels +{ + /// + /// Модель для передачи данных пользователя + /// в методы для сохранения данных для водителей + /// + public class DriverBindingModel : IDriverModel + { + /// + /// Идентификатор + /// + public int Id { get; set; } + + /// + /// ФИО водителя + /// + public string FullName { get; set; } = string.Empty; + + /// + /// Номер телефона водителя + /// + public string Phone { get; set; } = string.Empty; + + /// + /// Опыт работы водителя + /// + public int? Experience { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/BindingModels/RouteBindingModel.cs b/RouteGuide/RouteGuideContracts/BindingModels/RouteBindingModel.cs new file mode 100644 index 0000000..48de80a --- /dev/null +++ b/RouteGuide/RouteGuideContracts/BindingModels/RouteBindingModel.cs @@ -0,0 +1,40 @@ +using RouteGuideDataModels.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.BindingModels +{ + /// + /// Модель для передачи данных пользователя + /// в методы для сохранения данных для маршрутов + /// + public class RouteBindingModel : IRouteModel + { + /// + /// Идентификатор + /// + public int Id { get; set; } + + /// + /// Название маршрута + /// + public string Name { get; set; } = string.Empty; + + /// + /// Идентификатор транспорта + /// + public int TransportId { get; set; } + + /// + /// Коллекция остановок маршрута + /// + public Dictionary RouteStops + { + get; + set; + } = new(); + } +} diff --git a/RouteGuide/RouteGuideContracts/BindingModels/ScheduleBindingModel.cs b/RouteGuide/RouteGuideContracts/BindingModels/ScheduleBindingModel.cs new file mode 100644 index 0000000..1a21b7c --- /dev/null +++ b/RouteGuide/RouteGuideContracts/BindingModels/ScheduleBindingModel.cs @@ -0,0 +1,46 @@ +using RouteGuideDataModels.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.BindingModels +{ + /// + /// Модель для передачи данных пользователя + /// в методы для сохранения данных для расписания + /// + public class ScheduleBindingModel : IScheduleModel + { + /// + /// Идентификатор + /// + public int Id { get; set; } + + /// + /// Дата записи расписания + /// + public DateTime Date { get; set; } = DateTime.Now; + + /// + /// Время отправления + /// + public TimeOnly DepartureTime { get; set; } = new TimeOnly(); + + /// + /// Время прибытия + /// + public TimeOnly ArrivalTime { get; set; } = new TimeOnly(); + + /// + /// Периодичность движения транспорта + /// + public TimeOnly Frequency { get; set; } = new TimeOnly(); + + /// + /// Идентификатор маршрута + /// + public int RouteId { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/BindingModels/StopBindingModel.cs b/RouteGuide/RouteGuideContracts/BindingModels/StopBindingModel.cs new file mode 100644 index 0000000..9175a11 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/BindingModels/StopBindingModel.cs @@ -0,0 +1,36 @@ +using RouteGuideDataModels.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.BindingModels +{ + /// + /// Модель для передачи данных пользователя + /// в методы для сохранения данных для остановок + /// + public class StopBindingModel : IStopModel + { + /// + /// Идентификатор + /// + public int Id { get; set; } + + /// + /// Название остановки + /// + public string Name { get; set; } = string.Empty; + + /// + /// Название улицы + /// + public string Street { get; set; } = string.Empty; + + /// + /// Номер дома + /// + public int Number { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/BindingModels/TransportBindingModel.cs b/RouteGuide/RouteGuideContracts/BindingModels/TransportBindingModel.cs new file mode 100644 index 0000000..d8f0167 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/BindingModels/TransportBindingModel.cs @@ -0,0 +1,42 @@ +using RouteGuideDataModels.Enums; +using RouteGuideDataModels.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.BindingModels +{ + /// + /// Модель для передачи данных пользователя + /// в методы для сохранения данных для транспорта + /// + public class TransportBindingModel : ITransportModel + { + /// + /// Идентификатор + /// + public int Id { get; set; } + + /// + /// Номерной знак + /// + public string License { get; set; } = string.Empty; + + /// + /// Тип транспортного средства + /// + public TransportType Type { get; set; } = TransportType.Автобус; + + /// + /// Вместимость (количество пассажиров) + /// + public int Capacity { get; set; } + + /// + /// Идентификатор водителя + /// + public int DriverId { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IDriverLogic.cs b/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IDriverLogic.cs new file mode 100644 index 0000000..76e0674 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IDriverLogic.cs @@ -0,0 +1,52 @@ +using RouteGuideContracts.BindingModels; +using RouteGuideContracts.SearchModels; +using RouteGuideContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.BusinessLogicsContracts +{ + /// + /// Интерфейс для описания работы бизнес-логики для водителей + /// + public interface IDriverLogic + { + /// + /// Получение списка + /// + /// + /// + List? ReadList(DriverSearchModel? model); + + /// + /// Получение отдельной записи + /// + /// + /// + DriverViewModel? ReadElement(DriverSearchModel model); + + /// + /// Создание записи + /// + /// + /// + bool Create(DriverBindingModel model); + + /// + /// Изменение записи + /// + /// + /// + bool Update(DriverBindingModel model); + + /// + /// Удаление записи + /// + /// + /// + bool Delete(DriverBindingModel model); + } +} diff --git a/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IRouteLogic.cs b/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IRouteLogic.cs new file mode 100644 index 0000000..fd078b0 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IRouteLogic.cs @@ -0,0 +1,52 @@ +using RouteGuideContracts.BindingModels; +using RouteGuideContracts.SearchModels; +using RouteGuideContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.BusinessLogicsContracts +{ + /// + /// Интерфейс для описания работы бизнес-логики для маршрутов + /// + public interface IRouteLogic + { + /// + /// Получение списка + /// + /// + /// + List? ReadList(RouteSearchModel? model); + + /// + /// Получение отдельной записи + /// + /// + /// + RouteViewModel? ReadElement(RouteSearchModel model); + + /// + /// Создание записи + /// + /// + /// + bool Create(RouteBindingModel model); + + /// + /// Изменение записи + /// + /// + /// + bool Update(RouteBindingModel model); + + /// + /// Удаление записи + /// + /// + /// + bool Delete(RouteBindingModel model); + } +} diff --git a/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IScheduleLogic.cs b/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IScheduleLogic.cs new file mode 100644 index 0000000..9b2932c --- /dev/null +++ b/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IScheduleLogic.cs @@ -0,0 +1,52 @@ +using RouteGuideContracts.BindingModels; +using RouteGuideContracts.SearchModels; +using RouteGuideContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.BusinessLogicsContracts +{ + /// + /// Интерфейс для описания работы бизнес-логики для расписания + /// + public interface IScheduleLogic + { + /// + /// Получение списка + /// + /// + /// + List? ReadList(ScheduleSearchModel? model); + + /// + /// Получение отдельной записи + /// + /// + /// + ScheduleViewModel? ReadElement(ScheduleSearchModel model); + + /// + /// Создание записи + /// + /// + /// + bool Create(ScheduleBindingModel model); + + /// + /// Изменение записи + /// + /// + /// + bool Update(ScheduleBindingModel model); + + /// + /// Удаление записи + /// + /// + /// + bool Delete(ScheduleBindingModel model); + } +} diff --git a/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IStopLogic.cs b/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IStopLogic.cs new file mode 100644 index 0000000..84aeb86 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/IStopLogic.cs @@ -0,0 +1,58 @@ +using RouteGuideContracts.BindingModels; +using RouteGuideContracts.SearchModels; +using RouteGuideContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.BusinessLogicsContracts +{ + /// + /// Интерфейс для описания работы бизнес-логики для остановок + /// + public interface IStopLogic + { + /// + /// Получение полного списка + /// + /// + List GetFullList(); + + /// + /// Получение фильтрованного списка + /// + /// + /// + List GetFilteredList(StopSearchModel model); + + /// + /// Получение элемента + /// + /// + /// + StopViewModel? GetElement(StopSearchModel model); + + /// + /// Добавление элемента + /// + /// + /// + StopViewModel? Insert(StopBindingModel model); + + /// + /// Редактирование элемента + /// + /// + /// + StopViewModel? Update(StopBindingModel model); + + /// + /// Удаление элемента + /// + /// + /// + StopViewModel? Delete(StopBindingModel model); + } +} diff --git a/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/ITransportLogic.cs b/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/ITransportLogic.cs new file mode 100644 index 0000000..bd530d5 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/BusinessLogicsContracts/ITransportLogic.cs @@ -0,0 +1,52 @@ +using RouteGuideContracts.BindingModels; +using RouteGuideContracts.SearchModels; +using RouteGuideContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.BusinessLogicsContracts +{ + /// + /// Интерфейс для описания работы бизнес-логики для транспорта + /// + public interface ITransportLogic + { + /// + /// Получение списка + /// + /// + /// + List? ReadList(TransportSearchModel? model); + + /// + /// Получение отдельной записи + /// + /// + /// + TransportViewModel? ReadElement(TransportSearchModel model); + + /// + /// Создание записи + /// + /// + /// + bool Create(TransportBindingModel model); + + /// + /// Изменение записи + /// + /// + /// + bool Update(TransportBindingModel model); + + /// + /// Удаление записи + /// + /// + /// + bool Delete(TransportBindingModel model); + } +} diff --git a/RouteGuide/RouteGuideContracts/RouteGuideContracts.csproj b/RouteGuide/RouteGuideContracts/RouteGuideContracts.csproj new file mode 100644 index 0000000..539af2a --- /dev/null +++ b/RouteGuide/RouteGuideContracts/RouteGuideContracts.csproj @@ -0,0 +1,13 @@ + + + + net6.0 + enable + enable + + + + + + + diff --git a/RouteGuide/RouteGuideContracts/SearchModels/DriverSearchModel.cs b/RouteGuide/RouteGuideContracts/SearchModels/DriverSearchModel.cs new file mode 100644 index 0000000..acb97df --- /dev/null +++ b/RouteGuide/RouteGuideContracts/SearchModels/DriverSearchModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.SearchModels +{ + /// + /// Модель для передачи данных пользователя + /// в методы для поиска данных для водителей + /// + public class DriverSearchModel + { + /// + /// Идентификатор + /// + public int? Id { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/SearchModels/RouteSearchModel.cs b/RouteGuide/RouteGuideContracts/SearchModels/RouteSearchModel.cs new file mode 100644 index 0000000..6963c20 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/SearchModels/RouteSearchModel.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.SearchModels +{ + /// + /// Модель для передачи данных пользователя + /// в методы для поиска данных для маршрутов + /// + public class RouteSearchModel + { + /// + /// Идентификатор + /// + public int? Id { get; set; } + + /// + /// Название маршрута + /// + public string? Name { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/SearchModels/ScheduleSearchModel.cs b/RouteGuide/RouteGuideContracts/SearchModels/ScheduleSearchModel.cs new file mode 100644 index 0000000..5d0b740 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/SearchModels/ScheduleSearchModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.SearchModels +{ + /// + /// Модель для передачи данных пользователя + /// в методы для поиска данных для расписания + /// + public class ScheduleSearchModel + { + /// + /// Идентификатор + /// + public int? Id { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/SearchModels/StopSearchModel.cs b/RouteGuide/RouteGuideContracts/SearchModels/StopSearchModel.cs new file mode 100644 index 0000000..57b776e --- /dev/null +++ b/RouteGuide/RouteGuideContracts/SearchModels/StopSearchModel.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.SearchModels +{ + /// + /// Модель для передачи данных пользователя + /// в методы для поиска данных для остановок + /// + public class StopSearchModel + { + /// + /// Идентификатор + /// + public int? Id { get; set; } + + /// + /// Название остановки + /// + public string? Name { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/SearchModels/TransportSearchModel.cs b/RouteGuide/RouteGuideContracts/SearchModels/TransportSearchModel.cs new file mode 100644 index 0000000..d576c1f --- /dev/null +++ b/RouteGuide/RouteGuideContracts/SearchModels/TransportSearchModel.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.SearchModels +{ + /// + /// Модель для передачи данных пользователя + /// в методы для поиска данных для транспорта + /// + public class TransportSearchModel + { + /// + /// Идентификатор + /// + public int? Id { get; set; } + + /// + /// Номерной знак + /// + public string? License { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/StoragesContracts/IDriverStorage.cs b/RouteGuide/RouteGuideContracts/StoragesContracts/IDriverStorage.cs new file mode 100644 index 0000000..ba2797e --- /dev/null +++ b/RouteGuide/RouteGuideContracts/StoragesContracts/IDriverStorage.cs @@ -0,0 +1,58 @@ +using RouteGuideContracts.BindingModels; +using RouteGuideContracts.SearchModels; +using RouteGuideContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.StoragesContracts +{ + /// + /// Интерфейс для описания работы с хранилищем для водителей + /// + public interface IDriverStorage + { + /// + /// Получение полного списка + /// + /// + List GetFullList(); + + /// + /// Получение фильтрованного списка + /// + /// + /// + List GetFilteredList(DriverSearchModel model); + + /// + /// Получение элемента + /// + /// + /// + DriverViewModel? GetElement(DriverSearchModel model); + + /// + /// Добавление элемента + /// + /// + /// + DriverViewModel? Insert(DriverBindingModel model); + + /// + /// Редактирование элемента + /// + /// + /// + DriverViewModel? Update(DriverBindingModel model); + + /// + /// Удаление элемента + /// + /// + /// + DriverViewModel? Delete(DriverBindingModel model); + } +} diff --git a/RouteGuide/RouteGuideContracts/StoragesContracts/IRouteStorage.cs b/RouteGuide/RouteGuideContracts/StoragesContracts/IRouteStorage.cs new file mode 100644 index 0000000..3523e38 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/StoragesContracts/IRouteStorage.cs @@ -0,0 +1,58 @@ +using RouteGuideContracts.BindingModels; +using RouteGuideContracts.SearchModels; +using RouteGuideContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.StoragesContracts +{ + /// + /// Интерфейс для описания работы с хранилищем для маршрутов + /// + public interface IRouteStorage + { + /// + /// Получение полного списка + /// + /// + List GetFullList(); + + /// + /// Получение фильтрованного списка + /// + /// + /// + List GetFilteredList(RouteSearchModel model); + + /// + /// Получение элемента + /// + /// + /// + RouteViewModel? GetElement(RouteSearchModel model); + + /// + /// Добавление элемента + /// + /// + /// + TransportViewModel? Insert(RouteBindingModel model); + + /// + /// Редактирование элемента + /// + /// + /// + RouteViewModel? Update(RouteBindingModel model); + + /// + /// Удаление элемента + /// + /// + /// + RouteViewModel? Delete(RouteBindingModel model); + } +} diff --git a/RouteGuide/RouteGuideContracts/StoragesContracts/IScheduleStorage.cs b/RouteGuide/RouteGuideContracts/StoragesContracts/IScheduleStorage.cs new file mode 100644 index 0000000..833961f --- /dev/null +++ b/RouteGuide/RouteGuideContracts/StoragesContracts/IScheduleStorage.cs @@ -0,0 +1,58 @@ +using RouteGuideContracts.BindingModels; +using RouteGuideContracts.SearchModels; +using RouteGuideContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.StoragesContracts +{ + /// + /// Интерфейс для описания работы с хранилищем для расписания + /// + public interface IScheduleStorage + { + /// + /// Получение полного списка + /// + /// + List GetFullList(); + + /// + /// Получение фильтрованного списка + /// + /// + /// + List GetFilteredList(ScheduleSearchModel model); + + /// + /// Получение элемента + /// + /// + /// + ScheduleViewModel? GetElement(ScheduleBindingModel model); + + /// + /// Добавление элемента + /// + /// + /// + ScheduleViewModel? Insert(ScheduleBindingModel model); + + /// + /// Редактирование элемента + /// + /// + /// + ScheduleViewModel? Update(ScheduleBindingModel model); + + /// + /// Удаление элемента + /// + /// + /// + ScheduleViewModel? Delete(ScheduleBindingModel model); + } +} diff --git a/RouteGuide/RouteGuideContracts/StoragesContracts/IStopStorage.cs b/RouteGuide/RouteGuideContracts/StoragesContracts/IStopStorage.cs new file mode 100644 index 0000000..56a18f1 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/StoragesContracts/IStopStorage.cs @@ -0,0 +1,58 @@ +using RouteGuideContracts.BindingModels; +using RouteGuideContracts.SearchModels; +using RouteGuideContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.StoragesContracts +{ + /// + /// Интерфейс для описания работы с хранилищем для остановок + /// + public interface IStopStorage + { + /// + /// Получение полного списка + /// + /// + List GetFullList(); + + /// + /// Получение фильтрованного списка + /// + /// + /// + List GetFilteredList(StopSearchModel model); + + /// + /// Получение элемента + /// + /// + /// + StopViewModel? GetElement(StopSearchModel model); + + /// + /// Добавление элемента + /// + /// + /// + StopViewModel? Insert(StopBindingModel model); + + /// + /// Редактирование элемента + /// + /// + /// + StopViewModel? Update(StopBindingModel model); + + /// + /// Удаление элемента + /// + /// + /// + StopViewModel? Delete(StopBindingModel model); + } +} diff --git a/RouteGuide/RouteGuideContracts/StoragesContracts/ITransportStorage.cs b/RouteGuide/RouteGuideContracts/StoragesContracts/ITransportStorage.cs new file mode 100644 index 0000000..2e14283 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/StoragesContracts/ITransportStorage.cs @@ -0,0 +1,58 @@ +using RouteGuideContracts.BindingModels; +using RouteGuideContracts.SearchModels; +using RouteGuideContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.StoragesContracts +{ + /// + /// Интерфейс для описания работы с хранилищем для транспорта + /// + public interface ITransportStorage + { + /// + /// Получение полного списка + /// + /// + List GetFullList(); + + /// + /// Получение фильтрованного списка + /// + /// + /// + List GetFilteredList(TransportSearchModel model); + + /// + /// Получение элемента + /// + /// + /// + TransportViewModel? GetElement(TransportSearchModel model); + + /// + /// Добавление элемента + /// + /// + /// + DriverViewModel? Insert(TransportBindingModel model); + + /// + /// Редактирование элемента + /// + /// + /// + TransportViewModel? Update(TransportBindingModel model); + + /// + /// Удаление элемента + /// + /// + /// + TransportViewModel? Delete(TransportBindingModel model); + } +} diff --git a/RouteGuide/RouteGuideContracts/ViewModels/DriverViewModel.cs b/RouteGuide/RouteGuideContracts/ViewModels/DriverViewModel.cs new file mode 100644 index 0000000..f46546b --- /dev/null +++ b/RouteGuide/RouteGuideContracts/ViewModels/DriverViewModel.cs @@ -0,0 +1,40 @@ +using RouteGuideDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.ViewModels +{ + /// + /// Модель для передачи данных пользователю + /// для отображения для водителей + /// + public class DriverViewModel : IDriverModel + { + /// + /// Идентификатор + /// + public int Id { get; set; } + + /// + /// ФИО водителя + /// + [DisplayName("ФИО")] + public string FullName { get; set; } = string.Empty; + + /// + /// Номер телефона водителя + /// + [DisplayName("Номер телефона")] + public string Phone { get; set; } = string.Empty; + + /// + /// Опыт работы водителя + /// + [DisplayName("Опыт работы")] + public int? Experience { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/ViewModels/RouteViewModel.cs b/RouteGuide/RouteGuideContracts/ViewModels/RouteViewModel.cs new file mode 100644 index 0000000..ebec2c7 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/ViewModels/RouteViewModel.cs @@ -0,0 +1,42 @@ +using RouteGuideDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.ViewModels +{ + /// + /// Модель для передачи данных пользователю + /// для отображения для маршрутов + /// + public class RouteViewModel : IRouteModel + { + /// + /// Идентификатор + /// + public int Id { get; set; } + + /// + /// Название маршрута + /// + [DisplayName("Название маршрута")] + public string Name { get; set; } = string.Empty; + + /// + /// Идентификатор транспорта + /// + public int TransportId { get; set; } + + /// + /// Коллекция остановок маршрута + /// + public Dictionary RouteStops + { + get; + set; + } = new(); + } +} diff --git a/RouteGuide/RouteGuideContracts/ViewModels/ScheduleViewModel.cs b/RouteGuide/RouteGuideContracts/ViewModels/ScheduleViewModel.cs new file mode 100644 index 0000000..3a85331 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/ViewModels/ScheduleViewModel.cs @@ -0,0 +1,51 @@ +using RouteGuideDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.ViewModels +{ + /// + /// Модель для передачи данных пользователю + /// для отображения для расписания + /// + public class ScheduleViewModel : IScheduleModel + { + /// + /// Идентификатор + /// + public int Id { get; set; } + + /// + /// Дата записи расписания + /// + [DisplayName("Дата")] + public DateTime Date { get; set; } = DateTime.Now; + + /// + /// Время отправления + /// + [DisplayName("Время отправления")] + public TimeOnly DepartureTime { get; set; } = new TimeOnly(); + + /// + /// Время прибытия + /// + [DisplayName("Время прибытия")] + public TimeOnly ArrivalTime { get; set; } = new TimeOnly(); + + /// + /// Периодичность движения транспорта + /// + [DisplayName("Периодичность движения транспорта")] + public TimeOnly Frequency { get; set; } = new TimeOnly(); + + /// + /// Идентификатор маршрута + /// + public int RouteId { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/ViewModels/StopViewModel.cs b/RouteGuide/RouteGuideContracts/ViewModels/StopViewModel.cs new file mode 100644 index 0000000..d5d6c1e --- /dev/null +++ b/RouteGuide/RouteGuideContracts/ViewModels/StopViewModel.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.ViewModels +{ + /// + /// Модель для передачи данных пользователю + /// для отображения для остановок + /// + public class StopViewModel + { + /// + /// Идентификатор + /// + public int Id { get; set; } + + /// + /// Название остановки + /// + [DisplayName("Название остановки")] + public string Name { get; set; } = string.Empty; + + /// + /// Название улицы + /// + [DisplayName("Название улицы")] + public string Street { get; set; } = string.Empty; + + /// + /// Номер дома + /// + [DisplayName("Номер дома")] + public int Number { get; set; } + } +} diff --git a/RouteGuide/RouteGuideContracts/ViewModels/TransportViewModel.cs b/RouteGuide/RouteGuideContracts/ViewModels/TransportViewModel.cs new file mode 100644 index 0000000..a5b6b32 --- /dev/null +++ b/RouteGuide/RouteGuideContracts/ViewModels/TransportViewModel.cs @@ -0,0 +1,46 @@ +using RouteGuideDataModels.Enums; +using RouteGuideDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RouteGuideContracts.ViewModels +{ + /// + /// Модель для передачи данных пользователю + /// для отображения для транспорта + /// + public class TransportViewModel : ITransportModel + { + /// + /// Идентификатор + /// + public int Id { get; set; } + + /// + /// Номерной знак + /// + [DisplayName("Номерной знак")] + public string License { get; set; } = string.Empty; + + /// + /// Тип транспортного средства + /// + [DisplayName("Тип транспорта")] + public TransportType Type { get; set; } = TransportType.Автобус; + + /// + /// Вместимость (количество пассажиров) + /// + [DisplayName("Вместимость")] + public int Capacity { get; set; } + + /// + /// Идентификатор водителя + /// + public int DriverId { get; set; } + } +} diff --git a/RouteGuide/RouteGuideDataModels/Models/IRouteModel.cs b/RouteGuide/RouteGuideDataModels/Models/IRouteModel.cs index 1a95d10..663c280 100644 --- a/RouteGuide/RouteGuideDataModels/Models/IRouteModel.cs +++ b/RouteGuide/RouteGuideDataModels/Models/IRouteModel.cs @@ -17,12 +17,12 @@ namespace RouteGuideDataModels.Models string Name { get; } /// - /// Идентификатор тарнспорта + /// Идентификатор транспорта /// int TransportId { get; } /// - /// Коллеция остановок маршрута + /// Коллекция остановок маршрута /// Dictionary RouteStops { get; } }