# Система управления рестораном

Веб-приложение для управления базой данных ресторана. Реализует ведение справочников персонала, блюд, склада и заказов с разграничением доступа по ролям.

---

# Введение

## Основные возможности

- Авторизация по ролям: администратор, менеджер, официант
- Просмотр данных из таблиц: Персонал, Блюда, Склад, Заказы
- Добавление и редактирование записей (администратор, менеджер)
- Удаление записей (только администратор)
- Поиск по каждой таблице
- Автоматическое логирование операций через триггеры PostgreSQL
- Запуск через Docker одной командой

---

# Назначение и условия применения

Система предназначена для сотрудников ресторана с целью ведения оперативного учёта данных. Применяется в локальной сети организации или на локальном компьютере.

**Условия применения:**
- Операционная система: Windows 10/11, macOS, Linux
- Наличие Docker Desktop
- Браузер: Chrome, Firefox, Safari, Edge

---

# Установка

## Требования

- [ ] Установлен Docker Desktop
- [ ] Установлен Git

## Шаги установки

1. Клонировать репозиторий:
   ```bash
   git clone https://gogs.itiscaf.ru/arseniyborisov/RestaurantWeb2.git
   cd RestaurantWeb2
   ```

2. Перейти в папку проекта:
   ```bash
   cd RestaurantWeb2
   ```

3. Запустить контейнеры:
   ```bash
   docker-compose up --build
   ```

4. Открыть браузер и перейти по адресу:
   ```
   http://localhost:8081
   ```

5. Войти в систему:
   - [x] Администратор: логин `admin`, пароль `admin`
   - [x] Менеджер: логин `manager`, пароль `manager`
   - [x] Официант: логин `waiter`, пароль `waiter`

---

# Описание операций

### Вход в систему
На странице входа выбрать роль из выпадающего списка и ввести пароль. После успешной авторизации открывается страница управления данными.

### Просмотр данных
В навигационной панели выбрать нужную таблицу: **Персонал**, **Блюда**, **Склад** или **Заказы**. Данные отображаются в виде таблицы.

### Поиск
Ввести текст в поле поиска и нажать **Найти**. Для сброса фильтра нажать **Сброс**.

### Добавление записи
Нажать кнопку **+ Добавить**, заполнить поля формы и нажать **Сохранить**. Доступно администратору и менеджеру.

### Редактирование записи
Нажать кнопку **Редактировать** в строке нужной записи, изменить данные и нажать **Сохранить**. Доступно администратору и менеджеру.

### Удаление записи
Нажать кнопку **Удалить** в строке нужной записи и подтвердить действие. Доступно только администратору.

### Выход
Нажать ссылку **выйти** в правом верхнем углу навигационной панели.

---

# Термины и сокращения

| Термин / сокращение | Расшифровка |
|---|---|
| СУБД | Система управления базами данных |
| PostgreSQL | Объектно-реляционная СУБД с открытым исходным кодом |
| ASP.NET Core | Платформа для разработки веб-приложений от Microsoft |
| Razor Pages | Модель разработки веб-страниц в ASP.NET Core |
| Docker | Платформа контейнеризации приложений |
| docker-compose | Инструмент для запуска многоконтейнерных приложений |
| Npgsql | Библиотека .NET для подключения к PostgreSQL |
| HTTP | Протокол передачи гипертекста |
| ПК | Персональный компьютер |
| БД | База данных |
| CRUD | Create, Read, Update, Delete — операции над данными |
| FK | Foreign Key — внешний ключ |
| PK | Primary Key — первичный ключ |
