Skip to content

ubeL13/enterprise-development

 
 

Repository files navigation

Лабораторная работа

Цель

Реализация проекта сервисно-ориентированного приложения.

Описание

Система аренды велосипедов с управлением моделями, велосипедами, арендаторами и арендой.
Проект реализован с использованием ASP.NET Core Web API, MongoDB для хранения данных и Aspire.Hosting для локальной оркестрации сервисов.

Архитектура проекта

  • BikeRental.Domain — доменные модели и перечисления.
  • BikeRental.Infrastructure — репозитории для работы с MongoDB, тестовые данные (DataSeeder) и настройки подключения.
  • BikeRental.Api — Web API для работы с системой аренды.
  • BikeRental.AppHost — проект для оркестрации всех сервисов и MongoDB через Aspire.Hosting.

Основное

  • Доменные модели:
    • BikeModel — модель велосипеда.
    • Bike — конкретный велосипед.
    • Renter — арендатор.
    • Rental — запись об аренде велосипеда.
  • Репозитории — общий интерфейс для работы с MongoDB (IRepository<T>).
  • DTO — объекты передачи данных через API (BikeDto, RentalDto, RenterDto и т.д.).
  • DataSeeder — генерация тестовых данных.

Функционал

  • Управление велосипедами и моделями.
  • Управление арендаторами.
  • Создание и просмотр аренд.

Классы и связи

  • Bike — конкретный велосипед.
    Поля: Id, SerialNumber, Color, Model.

  • BikeModel — справочник моделей велосипедов.
    Поля: Id, Name, Type (BikeType), WheelSize, MaxRiderWeight, BikeWeight, BrakeType, ModelYear, HourlyRate.

  • Renter — арендатор.
    Поля: Id, FullName, Phone.

  • Rental — факт аренды велосипеда.
    Поля: Id, Bike, Renter, StartTime, DurationHours

  • BikeType (Enum) — перечисление типов велосипедов

DataSeeder — это вспомогательный класс, который создаёт тестовые данные. RentalFixture — это класс, который один раз создаёт общие тестовые данны и передаёт их во все тесты.

Unit-тесты

  • ShouldFindAllSportBikes Проверяет, что возвращаются только модели велосипедов типа Sport.

  • ShouldCalculateTop5ModelsByProfit Считает топ-5 моделей по прибыли от аренды (на основе HourlyRate * DurationHours) и проверяет порядок моделей.

  • ShouldCalculateTop5ModelsByDuration Считает топ-5 моделей по суммарной длительности аренды и проверяет порядок моделей.

  • ShouldFindMinMaxAvgRentalDuration Вычисляет минимальное, максимальное и среднее время аренды среди всех записей.

  • ShouldSumRentalTimeByBikeType Считает суммарное время аренды по каждому типу велосипеда и проверяет соответствие ожидаемым значениям.

  • ShouldFindTopRentersByUsage Определяет топ-3 арендатора по количеству аренд и проверяет их имена.

About

Разработка корпоративных приложений. 4 курс

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C# 100.0%