Contracts

This commit is contained in:
parent 81ced0652b
commit 4326672e60
28 changed files with 1110 additions and 2 deletions

View File

@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RouteGuideView", "RouteGuid
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RouteGuideDataModels", "RouteGuideDataModels\RouteGuideDataModels.csproj", "{734B62E6-F4F0-4356-A4BC-067F52416282}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RouteGuideDataModels", "RouteGuideDataModels\RouteGuideDataModels.csproj", "{734B62E6-F4F0-4356-A4BC-067F52416282}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RouteGuideContracts", "RouteGuideContracts\RouteGuideContracts.csproj", "{895094AD-E3AC-4E1F-83DC-283E65EB072F}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU 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}.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.ActiveCfg = Release|Any CPU
{734B62E6-F4F0-4356-A4BC-067F52416282}.Release|Any CPU.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -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
{
/// <summary>
/// Модель для передачи данных пользователя
/// в методы для сохранения данных для водителей
/// </summary>
public class DriverBindingModel : IDriverModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int Id { get; set; }
/// <summary>
/// ФИО водителя
/// </summary>
public string FullName { get; set; } = string.Empty;
/// <summary>
/// Номер телефона водителя
/// </summary>
public string Phone { get; set; } = string.Empty;
/// <summary>
/// Опыт работы водителя
/// </summary>
public int? Experience { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Модель для передачи данных пользователя
/// в методы для сохранения данных для маршрутов
/// </summary>
public class RouteBindingModel : IRouteModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int Id { get; set; }
/// <summary>
/// Название маршрута
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// Идентификатор транспорта
/// </summary>
public int TransportId { get; set; }
/// <summary>
/// Коллекция остановок маршрута
/// </summary>
public Dictionary<int, (IStopModel, int)> RouteStops
{
get;
set;
} = new();
}
}

View File

@ -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
{
/// <summary>
/// Модель для передачи данных пользователя
/// в методы для сохранения данных для расписания
/// </summary>
public class ScheduleBindingModel : IScheduleModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int Id { get; set; }
/// <summary>
/// Дата записи расписания
/// </summary>
public DateTime Date { get; set; } = DateTime.Now;
/// <summary>
/// Время отправления
/// </summary>
public TimeOnly DepartureTime { get; set; } = new TimeOnly();
/// <summary>
/// Время прибытия
/// </summary>
public TimeOnly ArrivalTime { get; set; } = new TimeOnly();
/// <summary>
/// Периодичность движения транспорта
/// </summary>
public TimeOnly Frequency { get; set; } = new TimeOnly();
/// <summary>
/// Идентификатор маршрута
/// </summary>
public int RouteId { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Модель для передачи данных пользователя
/// в методы для сохранения данных для остановок
/// </summary>
public class StopBindingModel : IStopModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int Id { get; set; }
/// <summary>
/// Название остановки
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// Название улицы
/// </summary>
public string Street { get; set; } = string.Empty;
/// <summary>
/// Номер дома
/// </summary>
public int Number { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Модель для передачи данных пользователя
/// в методы для сохранения данных для транспорта
/// </summary>
public class TransportBindingModel : ITransportModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int Id { get; set; }
/// <summary>
/// Номерной знак
/// </summary>
public string License { get; set; } = string.Empty;
/// <summary>
/// Тип транспортного средства
/// </summary>
public TransportType Type { get; set; } = TransportType.Автобус;
/// <summary>
/// Вместимость (количество пассажиров)
/// </summary>
public int Capacity { get; set; }
/// <summary>
/// Идентификатор водителя
/// </summary>
public int DriverId { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Интерфейс для описания работы бизнес-логики для водителей
/// </summary>
public interface IDriverLogic
{
/// <summary>
/// Получение списка
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
List<DriverViewModel>? ReadList(DriverSearchModel? model);
/// <summary>
/// Получение отдельной записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
DriverViewModel? ReadElement(DriverSearchModel model);
/// <summary>
/// Создание записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Create(DriverBindingModel model);
/// <summary>
/// Изменение записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Update(DriverBindingModel model);
/// <summary>
/// Удаление записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Delete(DriverBindingModel model);
}
}

View File

@ -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
{
/// <summary>
/// Интерфейс для описания работы бизнес-логики для маршрутов
/// </summary>
public interface IRouteLogic
{
/// <summary>
/// Получение списка
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
List<RouteViewModel>? ReadList(RouteSearchModel? model);
/// <summary>
/// Получение отдельной записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
RouteViewModel? ReadElement(RouteSearchModel model);
/// <summary>
/// Создание записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Create(RouteBindingModel model);
/// <summary>
/// Изменение записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Update(RouteBindingModel model);
/// <summary>
/// Удаление записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Delete(RouteBindingModel model);
}
}

View File

@ -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
{
/// <summary>
/// Интерфейс для описания работы бизнес-логики для расписания
/// </summary>
public interface IScheduleLogic
{
/// <summary>
/// Получение списка
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
List<ScheduleViewModel>? ReadList(ScheduleSearchModel? model);
/// <summary>
/// Получение отдельной записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
ScheduleViewModel? ReadElement(ScheduleSearchModel model);
/// <summary>
/// Создание записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Create(ScheduleBindingModel model);
/// <summary>
/// Изменение записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Update(ScheduleBindingModel model);
/// <summary>
/// Удаление записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Delete(ScheduleBindingModel model);
}
}

View File

@ -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
{
/// <summary>
/// Интерфейс для описания работы бизнес-логики для остановок
/// </summary>
public interface IStopLogic
{
/// <summary>
/// Получение полного списка
/// </summary>
/// <returns></returns>
List<StopViewModel> GetFullList();
/// <summary>
/// Получение фильтрованного списка
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
List<StopViewModel> GetFilteredList(StopSearchModel model);
/// <summary>
/// Получение элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
StopViewModel? GetElement(StopSearchModel model);
/// <summary>
/// Добавление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
StopViewModel? Insert(StopBindingModel model);
/// <summary>
/// Редактирование элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
StopViewModel? Update(StopBindingModel model);
/// <summary>
/// Удаление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
StopViewModel? Delete(StopBindingModel model);
}
}

View File

@ -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
{
/// <summary>
/// Интерфейс для описания работы бизнес-логики для транспорта
/// </summary>
public interface ITransportLogic
{
/// <summary>
/// Получение списка
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
List<TransportViewModel>? ReadList(TransportSearchModel? model);
/// <summary>
/// Получение отдельной записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
TransportViewModel? ReadElement(TransportSearchModel model);
/// <summary>
/// Создание записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Create(TransportBindingModel model);
/// <summary>
/// Изменение записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Update(TransportBindingModel model);
/// <summary>
/// Удаление записи
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
bool Delete(TransportBindingModel model);
}
}

View File

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\RouteGuideDataModels\RouteGuideDataModels.csproj" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RouteGuideContracts.SearchModels
{
/// <summary>
/// Модель для передачи данных пользователя
/// в методы для поиска данных для водителей
/// </summary>
public class DriverSearchModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int? Id { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RouteGuideContracts.SearchModels
{
/// <summary>
/// Модель для передачи данных пользователя
/// в методы для поиска данных для маршрутов
/// </summary>
public class RouteSearchModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int? Id { get; set; }
/// <summary>
/// Название маршрута
/// </summary>
public string? Name { get; set; }
}
}

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RouteGuideContracts.SearchModels
{
/// <summary>
/// Модель для передачи данных пользователя
/// в методы для поиска данных для расписания
/// </summary>
public class ScheduleSearchModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int? Id { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RouteGuideContracts.SearchModels
{
/// <summary>
/// Модель для передачи данных пользователя
/// в методы для поиска данных для остановок
/// </summary>
public class StopSearchModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int? Id { get; set; }
/// <summary>
/// Название остановки
/// </summary>
public string? Name { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RouteGuideContracts.SearchModels
{
/// <summary>
/// Модель для передачи данных пользователя
/// в методы для поиска данных для транспорта
/// </summary>
public class TransportSearchModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int? Id { get; set; }
/// <summary>
/// Номерной знак
/// </summary>
public string? License { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Интерфейс для описания работы с хранилищем для водителей
/// </summary>
public interface IDriverStorage
{
/// <summary>
/// Получение полного списка
/// </summary>
/// <returns></returns>
List<DriverViewModel> GetFullList();
/// <summary>
/// Получение фильтрованного списка
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
List<DriverViewModel> GetFilteredList(DriverSearchModel model);
/// <summary>
/// Получение элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
DriverViewModel? GetElement(DriverSearchModel model);
/// <summary>
/// Добавление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
DriverViewModel? Insert(DriverBindingModel model);
/// <summary>
/// Редактирование элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
DriverViewModel? Update(DriverBindingModel model);
/// <summary>
/// Удаление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
DriverViewModel? Delete(DriverBindingModel model);
}
}

View File

@ -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
{
/// <summary>
/// Интерфейс для описания работы с хранилищем для маршрутов
/// </summary>
public interface IRouteStorage
{
/// <summary>
/// Получение полного списка
/// </summary>
/// <returns></returns>
List<RouteViewModel> GetFullList();
/// <summary>
/// Получение фильтрованного списка
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
List<RouteViewModel> GetFilteredList(RouteSearchModel model);
/// <summary>
/// Получение элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
RouteViewModel? GetElement(RouteSearchModel model);
/// <summary>
/// Добавление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
TransportViewModel? Insert(RouteBindingModel model);
/// <summary>
/// Редактирование элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
RouteViewModel? Update(RouteBindingModel model);
/// <summary>
/// Удаление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
RouteViewModel? Delete(RouteBindingModel model);
}
}

View File

@ -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
{
/// <summary>
/// Интерфейс для описания работы с хранилищем для расписания
/// </summary>
public interface IScheduleStorage
{
/// <summary>
/// Получение полного списка
/// </summary>
/// <returns></returns>
List<ScheduleViewModel> GetFullList();
/// <summary>
/// Получение фильтрованного списка
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
List<ScheduleViewModel> GetFilteredList(ScheduleSearchModel model);
/// <summary>
/// Получение элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
ScheduleViewModel? GetElement(ScheduleBindingModel model);
/// <summary>
/// Добавление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
ScheduleViewModel? Insert(ScheduleBindingModel model);
/// <summary>
/// Редактирование элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
ScheduleViewModel? Update(ScheduleBindingModel model);
/// <summary>
/// Удаление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
ScheduleViewModel? Delete(ScheduleBindingModel model);
}
}

View File

@ -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
{
/// <summary>
/// Интерфейс для описания работы с хранилищем для остановок
/// </summary>
public interface IStopStorage
{
/// <summary>
/// Получение полного списка
/// </summary>
/// <returns></returns>
List<StopViewModel> GetFullList();
/// <summary>
/// Получение фильтрованного списка
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
List<StopViewModel> GetFilteredList(StopSearchModel model);
/// <summary>
/// Получение элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
StopViewModel? GetElement(StopSearchModel model);
/// <summary>
/// Добавление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
StopViewModel? Insert(StopBindingModel model);
/// <summary>
/// Редактирование элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
StopViewModel? Update(StopBindingModel model);
/// <summary>
/// Удаление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
StopViewModel? Delete(StopBindingModel model);
}
}

View File

@ -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
{
/// <summary>
/// Интерфейс для описания работы с хранилищем для транспорта
/// </summary>
public interface ITransportStorage
{
/// <summary>
/// Получение полного списка
/// </summary>
/// <returns></returns>
List<TransportViewModel> GetFullList();
/// <summary>
/// Получение фильтрованного списка
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
List<TransportViewModel> GetFilteredList(TransportSearchModel model);
/// <summary>
/// Получение элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
TransportViewModel? GetElement(TransportSearchModel model);
/// <summary>
/// Добавление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
DriverViewModel? Insert(TransportBindingModel model);
/// <summary>
/// Редактирование элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
TransportViewModel? Update(TransportBindingModel model);
/// <summary>
/// Удаление элемента
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
TransportViewModel? Delete(TransportBindingModel model);
}
}

View File

@ -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
{
/// <summary>
/// Модель для передачи данных пользователю
/// для отображения для водителей
/// </summary>
public class DriverViewModel : IDriverModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int Id { get; set; }
/// <summary>
/// ФИО водителя
/// </summary>
[DisplayName("ФИО")]
public string FullName { get; set; } = string.Empty;
/// <summary>
/// Номер телефона водителя
/// </summary>
[DisplayName("Номер телефона")]
public string Phone { get; set; } = string.Empty;
/// <summary>
/// Опыт работы водителя
/// </summary>
[DisplayName("Опыт работы")]
public int? Experience { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Модель для передачи данных пользователю
/// для отображения для маршрутов
/// </summary>
public class RouteViewModel : IRouteModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int Id { get; set; }
/// <summary>
/// Название маршрута
/// </summary>
[DisplayName("Название маршрута")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// Идентификатор транспорта
/// </summary>
public int TransportId { get; set; }
/// <summary>
/// Коллекция остановок маршрута
/// </summary>
public Dictionary<int, (IStopModel, int)> RouteStops
{
get;
set;
} = new();
}
}

View File

@ -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
{
/// <summary>
/// Модель для передачи данных пользователю
/// для отображения для расписания
/// </summary>
public class ScheduleViewModel : IScheduleModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int Id { get; set; }
/// <summary>
/// Дата записи расписания
/// </summary>
[DisplayName("Дата")]
public DateTime Date { get; set; } = DateTime.Now;
/// <summary>
/// Время отправления
/// </summary>
[DisplayName("Время отправления")]
public TimeOnly DepartureTime { get; set; } = new TimeOnly();
/// <summary>
/// Время прибытия
/// </summary>
[DisplayName("Время прибытия")]
public TimeOnly ArrivalTime { get; set; } = new TimeOnly();
/// <summary>
/// Периодичность движения транспорта
/// </summary>
[DisplayName("Периодичность движения транспорта")]
public TimeOnly Frequency { get; set; } = new TimeOnly();
/// <summary>
/// Идентификатор маршрута
/// </summary>
public int RouteId { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Модель для передачи данных пользователю
/// для отображения для остановок
/// </summary>
public class StopViewModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int Id { get; set; }
/// <summary>
/// Название остановки
/// </summary>
[DisplayName("Название остановки")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// Название улицы
/// </summary>
[DisplayName("Название улицы")]
public string Street { get; set; } = string.Empty;
/// <summary>
/// Номер дома
/// </summary>
[DisplayName("Номер дома")]
public int Number { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Модель для передачи данных пользователю
/// для отображения для транспорта
/// </summary>
public class TransportViewModel : ITransportModel
{
/// <summary>
/// Идентификатор
/// </summary>
public int Id { get; set; }
/// <summary>
/// Номерной знак
/// </summary>
[DisplayName("Номерной знак")]
public string License { get; set; } = string.Empty;
/// <summary>
/// Тип транспортного средства
/// </summary>
[DisplayName("Тип транспорта")]
public TransportType Type { get; set; } = TransportType.Автобус;
/// <summary>
/// Вместимость (количество пассажиров)
/// </summary>
[DisplayName("Вместимость")]
public int Capacity { get; set; }
/// <summary>
/// Идентификатор водителя
/// </summary>
public int DriverId { get; set; }
}
}

View File

@ -17,12 +17,12 @@ namespace RouteGuideDataModels.Models
string Name { get; } string Name { get; }
/// <summary> /// <summary>
/// Идентификатор тарнспорта /// Идентификатор транспорта
/// </summary> /// </summary>
int TransportId { get; } int TransportId { get; }
/// <summary> /// <summary>
/// Коллеция остановок маршрута /// Коллекция остановок маршрута
/// </summary> /// </summary>
Dictionary<int, (IStopModel, int)> RouteStops { get; } Dictionary<int, (IStopModel, int)> RouteStops { get; }
} }