Skip to content

annachentoroh/CinemaManager-ProgrammingInCSharp

Repository files navigation

Cinema Manager

Кросплатформовий застосунок на базі .NET MAUI для управління кінозалами та розкладом сеансів. Проєкт перебудовано згідно з принципами багатошарової архітектури та патерну MVVM.

Архітектура та структура проєкту

Рішення розділене на 4 логічні проєкти для забезпечення чіткого розподілу відповідальностей:

1. CinemaManager.Models (Шар сутностей)

  • Entities: Базові моделі даних CinemaHall.cs та MovieSession.cs.
  • Enums: Перерахування для типізації даних Genre.cs та HallType.cs.

2. CinemaManager.DB (Шар доступу до даних)

Відповідає виключно за роботу зі сховищем даних:

  • Database: Статичне сховище (Storage), що містить початкові дані (3 зали та 12 сеансів).
  • ICinemaRepo: Інтерфейс для забезпечення принципу Dependency Inversion.
  • CinemaRepo: Клас репозиторію, методи якого повертають DB Models.

3. CinemaManager.Services (Рівень сервісів)

  • DTO: Класи CinemaHallDTOs.cs та MovieSessionDTOs.cs, які містять окремі моделі для списків та детальної інформації.
  • ICinemaService.cs: Інтерфейс сервісного рівня.
  • CinemaService.cs: Отримує дані з репозиторію та конвертує їх у DTO-моделі.

4. CinemaManager.MAUI (Графічний застосунок)

Рівень представлення, реалізований на базі патерну MVVM:

  • ViewModels: Класи MainViewModel.cs, HallDetailsViewModel.cs та SessionDetailsViewModel.cs. Використано CommunityToolkit.Mvvm для реактивного програмування.
  • Views: Сторінки MainPage, HallDetailsPage та SessionDetailsPage. Файли .xaml.cs містять лише ініціалізацію та задання BindingContext.
  • Dependency Injection: Впровадження залежностей реалізовано через вбудований IoC-контейнер у MauiProgram.cs.

Основний функціонал

  • Повна підтримка переходів між трьома сторінками (Список залів -> Деталі залу -> Деталі сеансу) з можливістю повернення назад.
  • UI взаємодіє виключно з сервісами та DTO-моделями, не маючи прямого доступу до репозиторіїв чи DB-моделей.
  • Вибір конкретного залу користувачем.
  • Автоматичне підвантаження сеансів для обраного залу.
  • Перехід до детальної інформації про кожен сеанс (у версії MAUI).
  • Автоматичний підрахунок загальної тривалості фільмів у залі.
  • Відображення детальної статистики залу та розкладу його сеансів.
  • Можливість багаторазового перегляду різних залів без перезапуску програми.

Як запустити проєкт

  1. Склонуйте репозиторій на свій комп'ютер.
  2. Відкрийте файл рішення CinemaManager.sln у Visual Studio.
  3. Виберіть стартовий проєкт: натисніть правою кнопкою на CinemaManager.MAUI -> Set as StartUp Project.
  4. Натисніть F5 або кнопку Start для запуску застосунку.
  5. Для коректної роботи потрібен встановлений .NET 9.

About

Learning CSharp

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages