# Руководство оператора программы RestaurantApp

# Аннотация

Настоящее руководство оператора описывает порядок работы с программой RestaurantApp. Документ предназначен для пользователей, которые выполняют учет клиентов, блюд, сотрудников, заказов, платежей и бронирований в информационной системе ресторана.

RestaurantApp представляет собой настольное приложение Windows Forms, разработанное на языке C#. Программа работает с базой данных PostgreSQL и предоставляет пользователю графический интерфейс для выполнения основных операций ресторана.

# Введение

## Область применения

Программа применяется в предметной области "Ресторан" и предназначена для автоматизации учета данных, связанных с обслуживанием посетителей. Система может использоваться администратором, менеджером и официантом.

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

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

# Подготовка к работе

## Порядок установки

1. Убедиться, что рабочее место соответствует условиям эксплуатации:

- установлена операционная система Windows;
- установлен .NET Framework 4.7.2 или новее;
- есть сетевой доступ к серверу PostgreSQL;
- база данных приложения создана и заполнена необходимыми справочниками;
- пользователь добавлен в таблицу `app_user`.

2. Запустить файл установки `RestaurantAppSetup.exe`.
3. В мастере установки выбрать папку установки или оставить значение по умолчанию.
4. При необходимости включить создание ярлыка на рабочем столе.
5. Дождаться завершения установки.
6. Запустить программу через меню "Пуск" или ярлык на рабочем столе.

## Порядок проверки работоспособности

1. Запустить приложение RestaurantApp.
2. Убедиться, что открылась форма авторизации.
3. Ввести логин существующего пользователя, например `admin`, `manager` или `waiter`.
4. Проверить, что после входа открывается главное окно программы.
5. Открыть раздел "Клиенты" и убедиться, что список клиентов загружается из базы данных.
6. Открыть раздел "Заказы" и проверить отображение заказов.
7. Для пользователя с ролью `admin` или `manager` открыть раздел "Отчеты" и убедиться, что отчеты формируются без ошибок.
8. Если данные отображаются и ошибки подключения отсутствуют, программа готова к работе.

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

## Вход в систему

Для начала работы оператор запускает программу и вводит логин в форме авторизации. После успешной проверки логина система открывает главное окно и показывает имя пользователя и его роль.

Если логин отсутствует в базе данных, программа выводит сообщение об ошибке. В этом случае необходимо проверить правильность ввода или обратиться к администратору базы данных.

## Работа в главном окне

Главное окно содержит меню для перехода к разделам программы:

- "Клиенты";
- "Блюда";
- "Сотрудники";
- "Заказы";
- "Бронирования";
- "Отчеты";
- "Выход".

Доступность некоторых разделов зависит от роли пользователя. Разделы "Сотрудники" и "Отчеты" доступны только пользователям с ролями `admin` и `manager`.

## Управление клиентами

В разделе "Клиенты" оператор может просматривать таблицу клиентов, искать записи по строке поиска, добавлять нового клиента, редактировать выбранную запись и удалять клиента после подтверждения операции.

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

## Управление блюдами

В разделе "Блюда" оператор ведет меню ресторана. Доступны поиск, фильтрация по категории, фильтрация по доступности, добавление, редактирование и удаление блюд.

При добавлении или редактировании блюда указываются категория, название, описание, цена, вес, время приготовления и признак доступности.

## Управление сотрудниками

Раздел "Сотрудники" используется для учета работников ресторана. Оператор с правами `admin` или `manager` может добавлять сотрудников, изменять их должность, контактные данные, дату приема, оклад и статус активности.

Удаление сотрудника в программе используется как операция увольнения или деактивации записи.

## Управление заказами

В разделе "Заказы" оператор может создать новый заказ, выбрать существующий заказ, добавить блюдо, изменить количество или примечание к позиции, удалить позицию, провести оплату и закрыть заказ.

При добавлении блюда система пересчитывает сумму заказа. Оплата выполняется через отдельную форму, где выбирается способ оплаты и при наличии клиента могут использоваться бонусы.

## Управление бронированиями

В разделе "Бронирования" оператор просматривает записи о резервировании столов, выполняет поиск, фильтрует записи по статусу, добавляет новые бронирования, редактирует и удаляет выбранные записи.

При выборе бронирования в таблице отображаются сведения о столе, клиенте, количестве гостей, дате, времени, длительности и примечании.

## Просмотр отчетов

Раздел "Отчеты" доступен пользователям с ролями `admin` и `manager`. Оператор выбирает период отчета и нажимает кнопку отображения данных.

В программе доступны следующие отчеты:

- дневная выручка;
- продажи блюд;
- статистика официантов;
- способы оплаты;
- ингредиенты с низким остатком.

## Завершение работы

Для завершения работы оператор выбирает пункт "Выход" в меню или закрывает главное окно приложения. После этого программа завершает сеанс работы.

# Аварийные ситуации

| Ситуация | Возможная причина | Действия оператора |
| - | - | - |
| Программа не запускается | Не установлен .NET Framework 4.7.2 или повреждены файлы приложения | Установить .NET Framework, переустановить приложение |
| Ошибка подключения к базе данных | Нет сети, недоступен сервер PostgreSQL, неверные параметры подключения | Проверить интернет/сеть, повторить запуск, обратиться к администратору |
| Логин не найден | Пользователь отсутствует в таблице `app_user` или введен неверный логин | Проверить ввод логина, обратиться к администратору |
| Данные не загружаются | Ошибка SQL-запроса, нет доступа к таблице, отсутствует нужная структура БД | Сообщить администратору БД текст ошибки |
| Нельзя удалить запись | Запись связана с другими таблицами или ограничена правилами БД | Проверить связанные данные, отменить удаление или обратиться к администратору |
| Раздел недоступен | У пользователя недостаточно прав | Войти под пользователем с ролью `admin` или `manager` |
| Отчет не формируется | Нет данных за выбранный период или возникла ошибка запроса | Изменить период отчета, повторить операцию, сообщить администратору |

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

| Термин | Описание |
| - | - |
| Оператор | Пользователь, работающий с программой |
| Администратор | Пользователь с полным доступом к функциям системы |
| Менеджер | Пользователь с доступом к управлению сотрудниками и отчетам |
| Официант | Пользователь, работающий с заказами и клиентами |
| ИС | Информационная система |
| БД | База данных |
| СУБД | Система управления базами данных |
| PostgreSQL | СУБД, используемая для хранения данных ресторана |
| Windows Forms | Технология разработки графических приложений Windows |
| Npgsql | Драйвер подключения приложения C# к PostgreSQL |
| Заказ | Операция обслуживания клиента или стола |
| Платеж | Операция оплаты заказа |
| Бронирование | Резервирование стола на дату и время |
| Роль | Набор прав пользователя в системе |
